antiright-devel
[Top][All Lists]
Advanced

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

[Antiright-devel] antiright/gtkshell button.c callbacks.c callbac...


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright/gtkshell button.c callbacks.c callbac...
Date: Tue, 24 Apr 2007 21:54:21 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/04/24 21:54:21

Modified files:
        gtkshell       : button.c callbacks.c callbacks.h menu.c text.c 

Log message:
        Unified callback data structure initialization, following the
        API conventions of antiright's class system. 
        Inlined function calls which were used to initialize variables
        used only once in text editor setup code.
        Use antiright_read_named_file for text buffer setup.
        Split out combo box default item addition, added items for
        IDE and Settings.  Use macro bflag modifiers in place of
        tests in button.c.  Eliminated useless final condition in this
        portion.  

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/button.c?cvsroot=antiright&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/callbacks.c?cvsroot=antiright&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/callbacks.h?cvsroot=antiright&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/menu.c?cvsroot=antiright&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/text.c?cvsroot=antiright&r1=1.19&r2=1.20

Patches:
Index: button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/button.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- button.c    24 Apr 2007 19:31:47 -0000      1.25
+++ button.c    24 Apr 2007 21:54:21 -0000      1.26
@@ -23,9 +23,6 @@
 #include "gtkshell.h"
 
 static void
-setup_label(GtkWidget *widget, char *command);
-
-static void
 create_label_in_menu_item(GtkWidget * widget, char * formatted)
 {
        GtkWidget * label;
@@ -50,36 +47,21 @@
        free(formatted);
 }
 
-static struct GSH_CBData *
-setup_callback_data(struct GSH * gsh, char * command)
-{
-       struct GSH_CBData * cb;
-
-       /* Allocate and initialize elements.  */
-       cb = (struct GSH_CBData *) xmalloc(sizeof(struct GSH_CBData));
-
-       cb->gsh = gsh;
-       cb->data = g_strdup(command);
-
-       return cb;
-}
-
 static void
 setup_callback(struct GSH * gsh, char * command)
 {
        struct GSH_CBData * cb;
 
-       cb=setup_callback_data(gsh, command);
+       cb = gsh_new_GSH_CBData(gsh, g_strdup(command));
 
-       if(GTK_IS_MENU_ITEM(gsh->button))
+       if(GTK_IS_MENU_ITEM(gsh->button)) /* menu item button  */
                (void) g_signal_connect(G_OBJECT(gsh->button), 
                                "activate", G_CALLBACK(gsh_system_cb), cb);
-       else if((gsh->bflags & GSH_MENU_BUTTON) != GSH_MENU_BUTTON)
+       else if(!GSH_FLAG(GSH_MENU_BUTTON)) /* not a menu launcher button */
                (void) g_signal_connect(G_OBJECT(gsh->button), 
                                "clicked", G_CALLBACK(gsh_system_cb), cb);
-       else if((gsh->bflags & GSH_MENU_BUTTON) == GSH_MENU_BUTTON)
-               gsh->bflags ^= GSH_MENU_BUTTON;
-
+       else /* Button is a menu launcher button.  */
+               GSH_UNSET(GSH_MENU_BUTTON);
 }
 
 static void

Index: callbacks.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/callbacks.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- callbacks.c 24 Apr 2007 19:31:47 -0000      1.18
+++ callbacks.c 24 Apr 2007 21:54:21 -0000      1.19
@@ -22,6 +22,25 @@
 
 #include "gtkshell.h"
 
+struct GSH_CBData *
+gsh_new_GSH_CBData(struct GSH * gsh, gpointer data)
+{
+       struct GSH_CBData * cb;
+
+       cb = xmalloc(sizeof(struct GSH_CBData));
+       cb->gsh=gsh;
+       cb->data=data;
+
+       return cb;
+}
+
+void
+gsh_delete_GSH_CBData(struct GSH_CBData * cb)
+{
+       g_free(cb->data);
+       g_free(cb);
+}
+
 static void
 gsh_test_exit(struct GSH * gsh)
 {

Index: callbacks.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/callbacks.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- callbacks.h 24 Apr 2007 19:31:47 -0000      1.7
+++ callbacks.h 24 Apr 2007 21:54:21 -0000      1.8
@@ -29,6 +29,12 @@
        gpointer data;
 };
 
+struct GSH_CBData *
+gsh_new_GSH_CBData(struct GSH * gsh, gpointer data);
+
+void
+gsh_delete_GSH_CBData(struct GSH_CBData * cb);
+
 void
 gsh_system_cb(GtkWidget *widget, gpointer data);
 

Index: menu.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/menu.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- menu.c      6 Apr 2007 15:05:28 -0000       1.1
+++ menu.c      24 Apr 2007 21:54:21 -0000      1.2
@@ -46,15 +46,20 @@
        else
                gsh_command_button(gsh, command);
 
+       /* Command is duplicated in callback setup, so free here.  */
+       g_free(command);
        g_strfreev(pair);
 }
 
+/* This is connected with g_signal_connect_swapped,
+ * so WIDGET is the menu widget, rather than the button.  */
 static gint
 popup_handler(GtkWidget * widget, GdkEvent * event)
 {
        GdkEventButton *event_button;
 
        event_button=(GdkEventButton *)event;
+
        gtk_menu_popup(GTK_MENU(widget), 
                NULL, NULL, NULL, NULL, 
                event_button->button, event_button->time);
@@ -63,36 +68,38 @@
 }
 
 static void
-add_menu_items(struct GSH * gsh, gchar **tokens)
+add_menu_items(struct GSH * gsh, GtkWidget * menu, gchar **tokens)
 {
        gint i;
+       GtkWidget * old_row;
+
+       /* Set gsh->rows.v to a row within a menu.
+        * Create the menu before overwriting, then
+        * set back at end.  */
+
+       old_row=gsh->rows.v;
+       gsh->rows.v=menu;
 
        for(i=1; ARPBOOL(tokens[i]); i++)
                menuitem_parse(gsh, tokens[i]);
+
+       gsh->rows.v=old_row;
 }
 
 void
 menubutton_parse(struct GSH * gsh, gchar **tokens)
-
 {
-       GtkWidget * oldrow;
-
-       oldrow=gsh->rows.v;
+       GtkWidget * menu;
 
-       /* Set gsh->rows.v to a row within a menu.
-        * Create the menu before overwriting, then
-        * set back at end.  */
-       gsh->bflags |= GSH_MENU_BUTTON;
+       GSH_SET(GSH_MENU_BUTTON);
        /* Add menu launcher button.  */
        gsh_new_button(gsh, tokens[0]);
-       gsh->rows.v=gtk_menu_new(); 
-       gtk_widget_show(gsh->rows.v);
+       menu=gtk_menu_new(); 
+       gtk_widget_show(menu);
+       /*gtk_menu_attach_to_widget(GTK_MENU(menu), gsh->button, NULL);*/
        g_signal_connect_swapped(gsh->button, "clicked",
-                       G_CALLBACK(popup_handler), gsh->rows.v);
-
-       add_menu_items(gsh, tokens);
-
-       gsh->rows.v=oldrow;
+                       G_CALLBACK(popup_handler), menu);
+       add_menu_items(gsh, menu, tokens);
 }
 
 

Index: text.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/text.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- text.c      24 Apr 2007 19:31:47 -0000      1.19
+++ text.c      24 Apr 2007 21:54:21 -0000      1.20
@@ -22,6 +22,18 @@
 
 #include "gtkshell.h"
 
+static void
+append_sample_entries(GtkComboBox * widget)
+{
+       /* Some sample entries to use when history is not useful, such as a
+        * dialog presentation of this field, where the window displaying the
+        * field closes on the first activation.  */
+       gtk_combo_box_prepend_text(widget, "ACE -A Terminal");
+       gtk_combo_box_prepend_text(widget, "ACE -A Settings");
+       gtk_combo_box_prepend_text(widget, "ACE -A IDE");
+       gtk_combo_box_prepend_text(widget, "ACE");
+}
+
 GtkWidget *
 gsh_setup_command_entry(struct GSH * gsh, char *command)
 {
@@ -29,36 +41,19 @@
        struct GSH_CBData *cb;
 
        ARPASSERT(gsh);
-
-       /* Set up callback data.  */
-       cb = (struct GSH_CBData *) xmalloc(sizeof(struct GSH_CBData));
-       cb->gsh = gsh;
-
-       ARIFP(command)
-               cb->data = command;     /* Static storage, will not
-                                        * pass out of scope.  */
-       else
-               cb->data = (gpointer)"echo";    /* Literal */
-
+       cb=gsh_new_GSH_CBData(gsh, (gpointer)((command != NULL) 
+                             ? command : "echo"));
        /* Create widget.  */
        entry = gtk_combo_box_entry_new_text();
-       /* Some sample entries to use when history is not useful, such as a
-        * dialog presentation of this field, where the window displaying the
-        * field closes on the first activation.  */
-       gtk_combo_box_prepend_text(GTK_COMBO_BOX(entry), "ACE -A Terminal");
-       gtk_combo_box_prepend_text(GTK_COMBO_BOX(entry), "ACE");
-       {
-               GtkWidget * field;
-
-               field=gtk_bin_get_child(GTK_BIN(entry));
-               (void) g_signal_connect(G_OBJECT(field), "activate",
+       append_sample_entries(GTK_COMBO_BOX(entry));
+       (void) g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(entry))), 
+                               "activate",
                                        G_CALLBACK(gsh_entry_cb), 
                                        (gpointer) cb);
-       }
        /* Do not fill remaining container area.  */
        gsh_manage_unexpanded(gsh, entry);
 
-       return (entry);
+       return entry;
 }
 
 GtkWidget *
@@ -88,29 +83,13 @@
 void
 gsh_text_editor(struct GSH * gsh, char *filename)
 {
-       GtkWidget *widget;
-       FILE *file;
+       char * text;
 
        ARPASSERT(gsh);
-       
-       file=NULL;
-
-       widget = gsh_text_area(gsh);
-
        ARPASSERT(filename);
-
-       file = fopen(filename, "r");
-
-       ARWIFNP(file)
-       {
-               char *text;
-               text=antiright_read_file(file);
-               gsh_text_area_set_text(widget, text);
-               (void) fclose(file);
-       }
-
+       text=antiright_read_named_file(filename);
+       gsh_text_area_set_text(gsh_text_area(gsh), text);
+       g_free(text);
        ARIFNP(gsh->geometry)
                asprintf(&gsh->geometry, "775x700");
-
-
 }




reply via email to

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