antiright-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Antiright-devel] antiright/gtkshell button.c gtkshell.c image_bu...


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright/gtkshell button.c gtkshell.c image_bu...
Date: Tue, 15 May 2007 17:59:35 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/05/15 17:59:35

Modified files:
        gtkshell       : button.c gtkshell.c image_button.c init.c 
                         macros.h menu.c terminal.c terminal_struct.h 

Log message:
        Added support for title and status bar updating driven by terminal.
        Only add appropriate toolbuttons from menubar.  Refactored button code.
        Added a signal connection macro, GSHCONNECT, to macros.h.  Store a 
pointer
        to GSH in GSH_Terminal.  

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/button.c?cvsroot=antiright&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/gtkshell.c?cvsroot=antiright&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/image_button.c?cvsroot=antiright&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/init.c?cvsroot=antiright&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/macros.h?cvsroot=antiright&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/menu.c?cvsroot=antiright&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/terminal.c?cvsroot=antiright&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/terminal_struct.h?cvsroot=antiright&r1=1.6&r2=1.7

Patches:
Index: button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/button.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- button.c    14 May 2007 20:23:22 -0000      1.42
+++ button.c    15 May 2007 17:59:34 -0000      1.43
@@ -70,23 +70,58 @@
 }
 
 static void
-setup_command_button(struct GSH * gsh, const gchar * command)
+common_button_setup(GSH * gsh, GtkWidget * button, const gchar * command)
 {
-       GtkWidget * button;
-
-       setup_label(button=gsh->widgets.button, command);
        gsh_setup_drag_drop(gsh, button);
        setup_callback(gsh, button, command);
-       if(GSH_FLAG(GSH_APP_MODE) && gsh->widgets.app.toolbar)
-       {
+}
+
+static void
+setup_label_for_toolbutton(GtkWidget * toolbutton, const gchar * command)
+{
+       gchar * label_text;
+
+       label_text=antiright_beautified_label(command);
+       gtk_button_set_label(GTK_BUTTON(toolbutton), label_text);
+       g_free(label_text);
+}
+
+static void
+setup_toolbutton_from_command_button(GSH * gsh, const gchar * command)
+{
                GtkWidget * toolbutton;
 
                toolbutton=gtk_button_new_with_label(command);
-               gsh_setup_drag_drop(gsh, toolbutton);
-               setup_callback(gsh, toolbutton, command);
+       common_button_setup(gsh, toolbutton, command);
                GSHCA(gsh->widgets.app.toolbar, toolbutton);
+       setup_label_for_toolbutton(toolbutton, command);
                gtk_widget_show(toolbutton);
+}
+
+static void
+test_create_toolbutton(GSH * gsh, const gchar * command)
+{
+       if(     GSH_FLAG(GSH_APP_MODE) 
+               && gsh->widgets.app.toolbar
+               && GTK_IS_MENU_ITEM(gsh->widgets.button) 
+               && strcmp(command, "File")
+               && strcmp(command, "Edit") 
+               && strcmp(command, "View")
+               && strcmp(command, "Help") 
+               && strcmp(command, "Tools"))
+       {
+               setup_toolbutton_from_command_button(gsh, command);
        }
+}
+
+static void
+setup_command_button(struct GSH * gsh, const gchar * command)
+{
+       GtkWidget * button;
+
+       setup_label(button=gsh->widgets.button, command);
+       common_button_setup(gsh, button, command);
+       test_create_toolbutton(gsh, command);
        if(GTK_IS_BUTTON(button))
                gtk_button_set_alignment(GTK_BUTTON(button), 0.0, 0.5);
 }

Index: gtkshell.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/gtkshell.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- gtkshell.c  14 May 2007 20:23:22 -0000      1.40
+++ gtkshell.c  15 May 2007 17:59:34 -0000      1.41
@@ -63,7 +63,7 @@
 {
        gsh->update = ARNEW(gsh, GSHUpdateManager);
        gsh->rows = ARNEW(gsh, GSHRows);
-       gsh->terminal = ARNEW(gsh, GSH_Terminal);
+       gsh->terminal = ARNEW(gsh, GSH_Terminal, gsh);
 }
 
 

Index: image_button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/image_button.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- image_button.c      9 May 2007 19:53:37 -0000       1.16
+++ image_button.c      15 May 2007 17:59:34 -0000      1.17
@@ -23,15 +23,23 @@
 #include "gtkshell.h"
 
 static void
+set_up_containers_for_menu_item_row(GtkWidget * button, GtkWidget * hrow, 
+       GtkWidget * label, GtkWidget * image)
+{
+       GSHCA(button, hrow);
+       GSHCA_TIGHT(hrow, image);
+       GSHCA(hrow, label);
+}
+
+static void
 setup_row_for_menu_item_image(struct GSH * gsh, GtkWidget * label,
        GtkWidget * image)
 {
        GtkWidget * hrow;
 
        hrow=gtk_hbox_new(FALSE, 2);
-       gtk_container_add(GTK_CONTAINER(gsh->widgets.button), hrow);
-       gtk_box_pack_start(GTK_BOX(hrow), image, FALSE, FALSE, 0);
-       gtk_container_add(GTK_CONTAINER(hrow), label);
+       set_up_containers_for_menu_item_row(gsh->widgets.button, hrow,
+               label, image);
        gtk_widget_show(hrow);
 }
 
@@ -48,11 +56,11 @@
        gtk_widget_show(label);
 }
 
-#define SET_BUTTON_IMAGE(gsh, image) \
-{\
-       gtk_button_set_image(GTK_BUTTON(gsh->widgets.button), image);\
-       gtk_button_set_relief(GTK_BUTTON(gsh->widgets.button),\
-               GTK_RELIEF_NONE);\
+static void
+set_button_image(GtkWidget * button, GtkWidget * image)
+{
+       gtk_button_set_image(GTK_BUTTON(button), image);
+       gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
 }
 
 /* Get an image from the antiright icon distribution or the GTK stock
@@ -75,17 +83,20 @@
        return image;
 }
 
-#define GET_IMAGE(gsh, name) \
-       g_file_test(name, G_FILE_TEST_EXISTS)\
-               ? gtk_image_new_from_file(name)\
-               : get_default_image(gsh, name)
+static GtkWidget *
+get_image(GSH * gsh, const gchar * name)
+{
+       return g_file_test(name, G_FILE_TEST_EXISTS)
+               ? gtk_image_new_from_file(name)
+               : get_default_image(gsh, name);
+}
 
 void
 gsh_image_button(struct GSH * gsh, char *command, char *name)
 {
        GtkWidget * image;
 
-       image = GET_IMAGE(gsh, name);
+       image = get_image(gsh, name);
        $(gsh, add.button, command);
        ARIFP(image)
        {
@@ -94,7 +105,7 @@
                   && !GTK_IS_MENU_ITEM(gsh->rows->v)
                   && !GTK_IS_MENU(gsh->rows->v))
                {
-                       SET_BUTTON_IMAGE(gsh, image);
+                       set_button_image(gsh->widgets.button, image);
                }
                else
                        set_menu_item_image(gsh, image);

Index: init.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/init.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- init.c      14 May 2007 20:23:22 -0000      1.10
+++ init.c      15 May 2007 17:59:34 -0000      1.11
@@ -42,7 +42,7 @@
        GtkWidget *window;
 
        window = gsh->widgets.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-       setup_quit_signals(window);
+       setup_quit_signals(GTK_WINDOW(window));
 
        return window;
 }

Index: macros.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/macros.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- macros.h    14 May 2007 20:23:22 -0000      1.10
+++ macros.h    15 May 2007 17:59:35 -0000      1.11
@@ -61,5 +61,8 @@
 #define GSH_SHOW_CREATE(var, type, ...)\
        gtk_widget_show(var=gtk_##type##_new(__VA_ARGS__))
 
+#define GSHCONNECT(widget, signal, cb, cbdata)\
+       g_signal_connect(G_OBJECT(widget), signal, G_CALLBACK(cb), cbdata);
+
 #endif /* not GSH_MACROS_H */
 

Index: menu.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/menu.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- menu.c      14 May 2007 20:23:23 -0000      1.14
+++ menu.c      15 May 2007 17:59:35 -0000      1.15
@@ -144,7 +144,7 @@
 {
        GtkWidget * menu;
 
-       gtk_widget_show(menu=gtk_menu_new());
+       GSH_SHOW_CREATE(menu, menu);
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(add_menu_launcher(gsh, 
                                  tokens[0])), menu);
        add_menu_items(gsh, menu, tokens);

Index: terminal.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/terminal.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- terminal.c  14 May 2007 18:06:35 -0000      1.18
+++ terminal.c  15 May 2007 17:59:35 -0000      1.19
@@ -86,13 +86,56 @@
         * reference counting.  */
 }
 
+static void
+title_change_cb(VteTerminal * widget, gpointer data)
+{
+       struct GSHCBData * cb;
+       GSH * gsh;
+       GtkWindow * window;
+
+       cb=(struct GSHCBData *)data;
+       gsh=cb->gsh;
+       window=GTK_WINDOW(gsh->widgets.window);
+
+       gtk_window_set_title(window, vte_terminal_get_window_title(widget));
+}
+
+static void
+status_changed_cb(VteTerminal * widget, gpointer data)
+{
+       struct GSHCBData * cb;
+       GSH * gsh;
+       GtkWidget * status;
+
+       cb=(struct GSHCBData *)data;
+       gsh=cb->gsh;
+       if((status=gsh->widgets.app.status))
+       {
+               gtk_label_set_text(GTK_LABEL(status),
+                       vte_terminal_get_status_line(widget));
+       }
+}
+
 static GtkWidget *
 gsh_GSH_Terminal_add(struct GSH_Terminal * term, const gchar * command)
 {
+       GtkWidget * widget;
+       GSH * gsh;
+
+       gsh=(GSH *)term->gsh;
        /* Create and set properties of the VTE-based terminal.  */
        /* Exit from the application if the terminal process dies.  */
-       g_signal_connect(G_OBJECT(term->widget=vte_terminal_new()), 
+       g_signal_connect(G_OBJECT(widget=term->widget=vte_terminal_new()), 
                "child-exited", G_CALLBACK(gtk_main_quit), NULL);
+       {
+               struct GSHCBData * cb;
+
+               cb=ARNEW(gsh, GSHCBData, gsh, NULL);
+               GSHCONNECT(widget, "status-line-changed",
+                       status_changed_cb, cb);
+               GSHCONNECT(widget, "window-title-changed", 
+                       title_change_cb, cb);
+       }
        set_terminal_options(term);
        gsh_terminal_run(term, command);
 
@@ -123,12 +166,13 @@
 }
 
 struct GSH_Terminal *
-gsh_new_GSH_Terminal()
+gsh_new_GSH_Terminal(GSH * gsh)
 {
        struct GSH_Terminal * term;
 
        term=xmalloc(sizeof(struct GSH_Terminal));
        setup_GSH_Terminal(term);
+       term->gsh = (gpointer)gsh;
 
        return term;
 }

Index: terminal_struct.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/terminal_struct.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- terminal_struct.h   14 May 2007 18:06:35 -0000      1.6
+++ terminal_struct.h   15 May 2007 17:59:35 -0000      1.7
@@ -31,6 +31,7 @@
        ARDimensions dimensions;
        void (*delete)(struct GSH_Terminal *);
        GtkWidget * (*add)(struct GSH_Terminal *, const gchar *);
+       gpointer gsh;
 };
 
 struct GSH_Terminal *




reply via email to

[Prev in Thread] Current Thread [Next in Thread]