diff options
Diffstat (limited to 'x11.c')
-rw-r--r-- | x11.c | 221 |
1 files changed, 0 insertions, 221 deletions
@@ -1,221 +0,0 @@ -/* - * Hardware Information, version 0.3 - * Copyright (C) 2003 Leandro Pereira <leandro@linuxmag.com.br> - * - * This module contains code from xdpyinfo.c, by Jim Fulton, MIT X Consortium - * Copyright 1988, 1998 The Open Group - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of The Open Group shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from The Open Group. - */ - -#include "hardinfo.h" -#include "x11.h" - -#include <stdlib.h> - -X11Info * -x11_get_info(void) -{ - X11Info *info; - Display *dpy; - gint default_screen = 0, color_depth = 0; - gchar *buf; - - dpy = XOpenDisplay(NULL); - if(!dpy) return NULL; - - info = g_new0(X11Info, 1); - - buf = DisplayString(dpy); - if (*buf == ':') - info->display = g_strdup_printf(_("Local display (%s)"), buf); - else - info->display = g_strdup_printf(_("Remote display (%s)"), buf); - - info->vendor = g_strdup(ServerVendor(dpy)); - - if (strstr(ServerVendor(dpy), "XFree86")) { - int vendrel = VendorRelease(dpy); - - if (vendrel < 336) { - /* - * vendrel was set incorrectly for 3.3.4 and 3.3.5, so handle - * those cases here. - */ - buf = g_strdup_printf - ("%d.%d.%d", vendrel / 100, (vendrel / 10) % 10, - vendrel % 10); - } else if (vendrel < 3900) { - /* 3.3.x versions, other than the exceptions handled above */ - buf = g_strdup_printf("%d.%d", vendrel / 1000, (vendrel / 100) % 10); - if (((vendrel / 10) % 10) || (vendrel % 10)) { - gchar *buf2; - - buf2 = g_strdup_printf(".%d", (vendrel / 10) % 10); - buf = g_strconcat(buf, buf2, NULL); - g_free(buf2); - - if (vendrel % 10) { - buf2 = g_strdup_printf(".%d", vendrel % 10); - buf = g_strconcat(buf, buf2, NULL); - g_free(buf2); - } - } - } else if (vendrel < 40000000) { - gchar *buf2; - /* 4.0.x versions */ - buf = g_strdup_printf("%d.%d", vendrel / 1000, (vendrel / 10) % 10); - - if (vendrel % 10) { - buf2 = g_strdup_printf(".%d", vendrel % 10); - buf = g_strconcat(buf, buf2, NULL); - g_free(buf2); - } - } else { - /* post-4.0.x */ - buf = g_strdup_printf("%d.%d.%d", vendrel / 10000000, - (vendrel / 100000) % 100, - (vendrel / 1000) % 100); - if (vendrel % 1000) { - gchar *buf2; - - buf2 = g_strdup_printf(".%d", vendrel % 1000); - buf = g_strconcat(buf, buf2, NULL); - g_free(buf2); - } - } - } - if (buf) { - info->xf86version = g_strdup(buf); - g_free(buf); - } - - default_screen = DefaultScreen(dpy); - color_depth = XDefaultDepth(dpy, default_screen); - info->screen_size = g_strdup_printf("%dx%d pixels (%d bpp)", - DisplayWidth(dpy, default_screen), - DisplayHeight(dpy, default_screen), - color_depth); - - - if (info->xf86version) { - info->version = g_strdup_printf(_("XFree86 version %s (protocol version %d.%d)"), - info->xf86version, ProtocolVersion(dpy), - ProtocolRevision(dpy)); - } else { - info->version = g_strdup_printf(_("%d (protocol version %d.%d)"), - VendorRelease(dpy), ProtocolVersion(dpy), - ProtocolRevision(dpy)); - } - - XCloseDisplay(dpy); - - return info; -} - -GtkWidget * -x11_get_widget(MainWindow * mainwindow) -{ - GtkWidget *label, *hbox; - GtkWidget *table; - GtkWidget *pixmap; - gchar *buf; - X11Info *info; - - if (!mainwindow) - return NULL; - - info = x11_get_info(); - - if (!info) - return NULL; - - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); - - buf = g_strdup_printf("%s/x11.png", IMG_PREFIX); - pixmap = gtk_image_new_from_file(buf); - gtk_widget_set_usize(GTK_WIDGET(pixmap), 64, 0); - gtk_widget_show(pixmap); - gtk_box_pack_start(GTK_BOX(hbox), pixmap, FALSE, FALSE, 0); - g_free(buf); - - table = gtk_table_new(4, 2, FALSE); - gtk_widget_show(table); - gtk_box_pack_start(GTK_BOX(hbox), table, TRUE, TRUE, 0); - gtk_container_set_border_width(GTK_CONTAINER(table), 10); - gtk_table_set_row_spacings(GTK_TABLE(table), 4); - gtk_table_set_col_spacings(GTK_TABLE(table), 4); - - /* - * Table headers - */ - label = gtk_label_new(_("<b>Display:</b>")); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(_("<b>Vendor:</b>")); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(_("<b>Release:</b>")); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(_("<b>Resolution:</b>")); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - /* - * Table content - */ - label = gtk_label_new(info->display); - gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 0, 1); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(info->vendor); - gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 1, 2); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(info->version); - gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 2, 3); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - label = gtk_label_new(info->screen_size); - gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 3, 4); - gtk_widget_show(label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - - g_free(info); - - return hbox; -} |