antiright-devel
[Top][All Lists]
Advanced

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

[Antiright-devel] antiright gtkshell/gsh.h gtkshell/gtkshell.c gt...


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright gtkshell/gsh.h gtkshell/gtkshell.c gt...
Date: Tue, 11 Dec 2007 20:31:32 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/12/11 20:31:32

Modified files:
        gtkshell       : gsh.h gtkshell.c options.c 
        libantiright   : tuple.h 

Log message:
        Begin converting command line option handling from switch tree
        to hash table.  

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/gsh.h?cvsroot=antiright&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/gtkshell.c?cvsroot=antiright&r1=1.48&r2=1.49
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/options.c?cvsroot=antiright&r1=1.34&r2=1.35
http://cvs.savannah.gnu.org/viewcvs/antiright/libantiright/tuple.h?cvsroot=antiright&r1=1.2&r2=1.3

Patches:
Index: gtkshell/gsh.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/gsh.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- gtkshell/gsh.h      7 Dec 2007 20:00:25 -0000       1.2
+++ gtkshell/gsh.h      11 Dec 2007 20:31:32 -0000      1.3
@@ -53,6 +53,7 @@
                        GtkWidget * row;
                } app;
        } widgets;
+
        struct /* text editor */
        {
                gchar * filename;
@@ -66,6 +67,8 @@
        struct GSHUpdateManager * update;
        struct GSH_Terminal * terminal;
 
+       ARTupleVector * command_dictionary;
+
        /* methods */
        void (*delete)(struct GSH *);
        void (*parse)(struct GSH *, const gint, const gchar **);

Index: gtkshell/gtkshell.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/gtkshell.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- gtkshell/gtkshell.c 10 Dec 2007 15:13:24 -0000      1.48
+++ gtkshell/gtkshell.c 11 Dec 2007 20:31:32 -0000      1.49
@@ -113,6 +113,7 @@
 #ifdef USE_GTK
        gsh->icon_size=GTK_ICON_SIZE_DND;
 #endif /* USE_GTK */
+       gsh->command_dictionary=NULL;
 }
 
 static void

Index: gtkshell/options.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/options.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- gtkshell/options.c  11 Dec 2007 18:05:37 -0000      1.34
+++ gtkshell/options.c  11 Dec 2007 20:31:32 -0000      1.35
@@ -90,14 +90,171 @@
        gsh_handle_##type##_arguments(gsh, argc, argv, counter)
 
 static void
-tuple_callback(gpointer data)
+test_cb(GSH * gsh, gint * counter, const gchar ** argv)
 {
-       puts("callback succeeded");
+}
+
+static void
+add_applet_clock_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       $(gsh, manage, gsh_clock_new(gsh));
+}
+
+static void
+add_pane_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argv, counter);
+       gsh_setup_hpaned(gsh, argv[*counter]);
+}
+
+static void
+add_command_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSHCommandShell * shell;
+
+       shell=ARNEW(gsh, GSHCommandShell);
+       $(gsh, manage, $(shell, get));
+       GSH_COUNT(argc, counter);
+       if(argv[*counter])
+               $(shell, run, argv[*counter]);
+       /* The command instance is not freed here, 
+          as it is accessed by callbacks.  */
+}
+
+static void
+add_editor_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argc, counter);
+       GSH_SET(GSH_APP_MODE);
+       gsh_text_editor(gsh, argv[*counter]);
+}
+
+static void
+add_form_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argc, counter);
+       gsh_add_form(gsh, argv[*counter]);
+}
+
+static void
+add_list_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argc, counter);
+       $(gsh, manage, gsh_tree_view_new(gsh, argv[*counter]));
 }
 
 static void
 add_label_cb(GSH * gsh, gint * counter, const gchar ** argv)
 {
+       GSH_COUNT(argc, counter);
+       $(gsh, add.label, argv[*counter]);
+}
+
+static void
+add_piped_text_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       gchar * piped;
+       
+       piped=antiright_read_file(stdin);
+       gsh_text_area_set_text(gsh_text_area(gsh), piped);
+       g_free(piped);
+}
+
+static void
+add_piped_label_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       gchar * piped;
+
+       piped=antiright_read_file(stdin);
+       $(gsh, add.label, piped);
+       g_free(piped);
+}
+
+static void
+add_quickstart_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+#ifdef GSH_USE_QUICKSTART
+       GSHQuickStart * quickstart;
+
+       quickstart=ARNEW(gsh, GSHQuickStart);
+       GSH_COUNT(argc, counter);
+       $(quickstart, add ,gsh, argv[*counter], argv[(*counter)+1]);
+       GSH_COUNT(argc, counter);
+       $(gsh, manage, $(quickstart, getColumn));
+#else /* ! GSH_USE_QUICKSTART */
+#endif /* GSH_USE_QUICKSTART */
+}
+
+static void
+add_row_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       $(gsh->rows, new);
+}
+
+static void
+add_separator_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       $(gsh, manage, ((gsh->rows->total==1) 
+               ? gtk_vseparator_new() : gtk_hseparator_new()));
+}
+
+static void
+add_commanded(GSH * gsh, gint * counter, const gchar ** argv,
+       GtkWidget *(*function)(GSH *, const gchar *))
+{
+       gchar * text;
+       text=antiright_pipe_read(argv[*counter]);
+       function(gsh, text);
+       g_free(text);
+}
+
+static void
+add_commanded_button_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       add_commanded(gsh, counter, argv, gsh->add.button);
+}
+
+static void
+add_commanded_label_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       add_commanded(gsh, counter, argv, gsh->add.label);
+}
+
+static void
+add_shell_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+#ifdef HAVE_VTE
+       GtkWidget * terminal;
+
+       /* Ensure that the terminal manager object exists.  */
+       if(!gsh->terminal)
+               gsh->terminal=ARNEW(gsh, GSH_Terminal, gsh);
+       /* Set counter to argument containing command.  */
+       GSH_COUNT(argc, counter);
+       /* Create a terminal widget to run the passed command.  */
+       terminal=$(gsh->terminal, add, argv[*counter]);
+       if(terminal) /* This is NULL if terminal is tabbed.  */
+       {
+               /* Let GSH manage the terminal widget.  */
+               $(gsh, manage, terminal);
+       }
+#else /* ! HAVE_VTE */
+       add_command_cb(gsh, counter, argv);
+#endif /* HAVE_VTE */
+}
+
+static void
+add_entry_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argc, counter);
+       gsh_setup_command_entry(gsh, argv[*counter]);
+}
+
+static void
+add_text_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       gsh_text_area(gsh);
+       
 }
 
 static void
@@ -105,8 +262,26 @@
 {
 }
 
+static void
+add_window_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       /* This is duplicate functionlity, as same can be
+          done with '---' argument.  */
+       $(gsh, add.window);
+       gsh->rows->current=1;
+       $(gsh, init);
+       GSH_SET(GSH_IN_SECONDARY_WIN);
+}
+
+static void
+add_embedded_cb(GSH * gsh, gint * counter, const gchar ** argv)
+{
+       GSH_COUNT(argc, counter);
+       gsh_add_embedded(gsh, (char *)argv[*counter]);
+}
+
 ARTupleVector *
-gsh_define_command_line_options()
+gsh_define_command_line_options(void)
 {
        ARTupleVector * dictionary;
 
@@ -114,18 +289,44 @@
        $(dictionary, add, key, (const gchar *)cb);
 
        dictionary=ARNEW(ar, ARTupleVector);
+
+       ARTDEF("-aAc", add_applet_clock_cb);
+       ARTDEF("-ab", add_pane_cb);
+       ARTDEF("-acb", add_commanded_button_cb);
+       ARTDEF("-acl", add_commanded_label_cb);
+       ARTDEF("-aC", add_command_cb);
+       ARTDEF("-ae", add_editor_cb);
+       ARTDEF("-af", add_form_cb);
+       ARTDEF("-aL", add_list_cb);
        ARTDEF("-al", add_label_cb);
+       ARTDEF("-aP", add_piped_text_cb);
+       ARTDEF("-ap", add_piped_label_cb);
+       ARTDEF("-aQ", add_quickstart_cb);
+       ARTDEF("-ar", add_row_cb);
+       ARTDEF("-aS", add_separator_cb);
+       ARTDEF("-as", add_shell_cb);
+       ARTDEF("-at", add_entry_cb);
+       ARTDEF("-aT", add_text_cb);
+       ARTDEF("-aw", add_window_cb);
+       ARTDEF("-aX", add_embedded_cb);
+
        ARTDEF("-aul", add_updating_label_cb);
        
+       ARTDEF("-t", test_cb);
+       
+       
        return dictionary;
 }
 
 void
 gsh_handle_switch_argument(GSH * gsh, const gint argc, const gchar ** argv,
-       gint * counter, ARTupleVector * dict)
+       gint * counter)
 {
        void (*callback)(GSH *, gint *, const gchar **);
+       ARTupleVector * dict;
        
+       if(!(dict=gsh->command_dictionary))
+               dict=gsh->command_dictionary=gsh_define_command_line_options();
        callback=(void (*)(GSH *, gint *, const gchar **))
                $(dict, find, argv[*counter]);
        callback(gsh, counter, argv);

Index: libantiright/tuple.h
===================================================================
RCS file: /sources/antiright/antiright/libantiright/tuple.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libantiright/tuple.h        28 Apr 2007 22:26:23 -0000      1.2
+++ libantiright/tuple.h        11 Dec 2007 20:31:32 -0000      1.3
@@ -31,6 +31,8 @@
        void (*delete)(struct ARTupleVector *);
 };
 
+typedef struct ARTupleVector ARTupleVector;
+
 struct ARTupleVector *
 ar_new_ARTupleVector();
 




reply via email to

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