[Goodies-commits] r3575 - xfvnc/trunk/xfvnc

Brian Tarricone kelnos at xfce.org
Fri Nov 9 09:57:42 CET 2007


Author: kelnos
Date: 2007-11-09 08:57:42 +0000 (Fri, 09 Nov 2007)
New Revision: 3575

Modified:
   xfvnc/trunk/xfvnc/Makefile.am
   xfvnc/trunk/xfvnc/main.c
Log:
* remove border/padding around all widgets in vnc window.  1st step to fix
  problem with scrollbars at fullscreen, but it's not quite fixed yet
* embed .glade file into the binary - easier dist, harder to break


Modified: xfvnc/trunk/xfvnc/Makefile.am
===================================================================
--- xfvnc/trunk/xfvnc/Makefile.am	2007-11-09 08:55:56 UTC (rev 3574)
+++ xfvnc/trunk/xfvnc/Makefile.am	2007-11-09 08:57:42 UTC (rev 3575)
@@ -1,7 +1,8 @@
 bin_PROGRAMS = xfvnc
 
 xfvnc_SOURCES = \
-	main.c
+	main.c \
+	xfvnc.glade.h
 
 xfvnc_CFLAGS = \
 	-DLOCALEDIR=\"$(localedir)\" \
@@ -18,9 +19,6 @@
 	$(LIBGLADE_LIBS) \
 	$(GTK_VNC_LIBS)
 
-gladedir = $(datadir)/xfvnc
-glade_DATA = xfvnc.glade
-
 desktopdir = $(datadir)/applications
 desktop_in_files = xfvnc.desktop.in
 desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@@ -31,4 +29,18 @@
 
 EXTRA_DIST = \
 	$(desktop_in_files) \
-	$(glade_DATA)
+	xfvnc.glade
+
+
+if MAINTAINER_MODE
+
+BUILT_SOURCES = \
+	xfvnc.glade.h
+
+CLEANFILES += \
+	xfvnc.glade.h
+
+xfvnc.glade.h: $(srcdir)/xfvnc.glade
+	exo-csource --static --name=xfvnc_glade $< > $@
+
+endif

Modified: xfvnc/trunk/xfvnc/main.c
===================================================================
--- xfvnc/trunk/xfvnc/main.c	2007-11-09 08:55:56 UTC (rev 3574)
+++ xfvnc/trunk/xfvnc/main.c	2007-11-09 08:57:42 UTC (rev 3575)
@@ -33,6 +33,15 @@
 
 #include <vncdisplay.h>
 
+#include "xfvnc.glade.h"
+
+static const gchar *rcstyle = "style \"xfvnc-nothickness\"\n" \
+                              "{\n" \
+                              "    xthickness = 0\n" \
+                              "    ythickness = 0\n" \
+                              "}\n" \
+                              "widget \"xfvnc-nothick-window*\" style \"xfvnc-nothickness\"";
+
 typedef struct
 {
     gchar *hostname;
@@ -59,7 +68,7 @@
                 gpointer user_data)
 {
     GladeXML *gxml = user_data;
-    GtkWidget *win, *connect_win, *progress_dlg, *chk_fullscreen;
+    GtkWidget *win, /**sw,*/ *connect_win, *progress_dlg, *chk_fullscreen;
     guint pulse_id;
     gboolean fullscreen;
     gchar *title;
@@ -84,9 +93,49 @@
     
     if(fullscreen)
         gtk_window_fullscreen(GTK_WINDOW(win));
+    
+#if 0
+    /* this is super-lame */
+    while(gtk_events_pending())
+        gtk_main_iteration();
+    
+    sw = gtk_bin_get_child(GTK_BIN(win));
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER,
+                                   GTK_POLICY_NEVER);
+    while(gtk_events_pending())
+        gtk_main_iteration();
+
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+                                   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+    
+    {
+        GtkStyle *style = gtk_widget_get_style(win);
+        g_print("win thickness (%d,%d)\n", style->xthickness, style->ythickness);
+        style = gtk_widget_get_style(gtk_bin_get_child(GTK_BIN(win)));
+        g_print("sw thickness (%d,%d)\n", style->xthickness, style->ythickness);
+        style = gtk_widget_get_style(gtk_bin_get_child(GTK_BIN(gtk_bin_get_child(GTK_BIN(win)))));
+        g_print("vnc thickness (%d,%d)\n", style->xthickness, style->ythickness);
+    }
+#endif
 }
 
 static void
+vnc_disconnected(VncDisplay *vnc,
+                 gpointer user_data)
+{
+    GladeXML *gxml = user_data;
+    GtkWidget *win = glade_xml_get_widget(gxml, "vnc_window");
+    
+    xfce_message_dialog(GTK_WINDOW(win), _("Disconnected"),
+                        GTK_STOCK_DIALOG_ERROR,
+                        _("The remote VNC session was disconnected"),
+                        _("The connection with the VNC server was lost.  This could be due to a network problem, or a problem with the server."),
+                        GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT, NULL);
+    
+    gtk_main_quit();
+}
+
+static void
 vnc_auth_failure(VncDisplay *vnc,
                  const gchar *message,
                  gpointer user_data)
@@ -151,6 +200,20 @@
                                          gxml);
 }
 
+static gboolean
+vnc_window_delete_event(GtkWidget *widget,
+                        GdkEventAny *event,
+                        gpointer user_data)
+{
+    GtkWidget *vnc = g_object_get_data(G_OBJECT(widget), "vnc-display");
+    
+    g_signal_handlers_disconnect_by_func(G_OBJECT(vnc),
+                                         G_CALLBACK(vnc_disconnected),
+                                         user_data);
+    
+    return FALSE;
+}
+
 static void
 connect_clicked(GtkWidget *widget,
                 gpointer user_data)
@@ -172,7 +235,10 @@
     g_free(dnum);
     
     win = glade_xml_get_widget(gxml, "vnc_window");
+    gtk_widget_set_name(win, "xfvnc-nothick-window");
     gtk_widget_realize(win);
+    g_signal_connect(G_OBJECT(win), "delete-event",
+                     G_CALLBACK(vnc_window_delete_event), gxml);
     
     sw = glade_xml_get_widget(gxml, "vnc_window_sw");
     gtk_widget_show(sw);
@@ -198,7 +264,7 @@
     g_signal_connect(G_OBJECT(vnc), "vnc-initialized",
                      G_CALLBACK(vnc_initialized), gxml);
     g_signal_connect(G_OBJECT(vnc), "vnc-disconnected",
-                     G_CALLBACK(gtk_main_quit), NULL);
+                     G_CALLBACK(vnc_disconnected), gxml);
     g_signal_connect(G_OBJECT(vnc), "vnc-auth-failure",
                      G_CALLBACK(vnc_auth_failure),gxml);
     g_signal_connect(G_OBJECT(vnc), "vnc-desktop-resize",
@@ -358,22 +424,19 @@
      char **argv)
 {
     GladeXML *gxml;
-    gchar *glade_file;
     GtkWidget *connect_window, *combo_recent, *entry_host;
     
     xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
     
     gtk_init(&argc, &argv);
+    gtk_rc_parse_string(rcstyle);
     
-    glade_file = xfce_resource_lookup(XFCE_RESOURCE_DATA,
-                                      "xfvnc/xfvnc.glade");
-    if(!glade_file)
-        glade_file = g_strdup("xfvnc.glade");
-    if(!glade_file || !(gxml = glade_xml_new(glade_file, NULL, NULL))) {
-        g_error("Unable to load xfvnc.glade");
+    gxml = glade_xml_new_from_buffer(xfvnc_glade, xfvnc_glade_length,
+                                     NULL, NULL);
+    if(!gxml) {
+        g_error("Unable to parse embedded glade UI description.");
         return 1;
     }
-    g_free(glade_file);
     
     glade_xml_signal_autoconnect(gxml);
     




More information about the Goodies-commits mailing list