[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Antiright-devel] antiright ACE-desktop/ACE gtkshell/add_options....
From: |
Jeffrey Bedard |
Subject: |
[Antiright-devel] antiright ACE-desktop/ACE gtkshell/add_options.... |
Date: |
Sun, 04 Mar 2007 23:11:05 +0000 |
CVSROOT: /sources/antiright
Module name: antiright
Changes by: Jeffrey Bedard <jefbed> 07/03/04 23:11:04
Modified files:
ACE-desktop : ACE
gtkshell : add_options.c arguments.c button.c
image_button.c image_button.h row.c
Log message:
Added support for menu buttons, along with menu items with icons.
Menus and items are specified as a "::" separated list. Icons are
specified after the command, separated by a comma. Stock icons are
used if a file name for an icon cannot be resolved, so the individual
stock item addition option has been removed.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/ACE-desktop/ACE?cvsroot=antiright&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/add_options.c?cvsroot=antiright&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/arguments.c?cvsroot=antiright&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/button.c?cvsroot=antiright&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/image_button.c?cvsroot=antiright&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/image_button.h?cvsroot=antiright&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/row.c?cvsroot=antiright&r1=1.12&r2=1.13
Patches:
Index: ACE-desktop/ACE
===================================================================
RCS file: /sources/antiright/antiright/ACE-desktop/ACE,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- ACE-desktop/ACE 4 Mar 2007 03:20:14 -0000 1.23
+++ ACE-desktop/ACE 4 Mar 2007 23:11:04 -0000 1.24
@@ -180,7 +180,7 @@
CMD="$CMD -al '--------'"
local FILE
for FILE in *; do
- CMD="$CMD -aS \"ACE -A ARO $FILE & # $FILE\" gtk-file"
+ CMD="$CMD -ai \"ACE -A ARO $FILE & # $FILE\" gtk-file"
done
CMD="$CMD 'exit # CLOSE'"
CMD="$CMD \"cd .. ; $FM & # UP\""
Index: gtkshell/add_options.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/add_options.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- gtkshell/add_options.c 2 Mar 2007 16:41:43 -0000 1.13
+++ gtkshell/add_options.c 4 Mar 2007 23:11:04 -0000 1.14
@@ -91,9 +91,6 @@
case 'r': /* Force creation of a new row. */
gsh_new_row(gsh);
break;
- case 'S': /* Add stock icon. */
- gsh_handle_add_stock_button(gsh, argc, argv, counter);
- break;
case 't':
if (argc != *counter)
gsh_count(argc, counter);
Index: gtkshell/arguments.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/arguments.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- gtkshell/arguments.c 28 Feb 2007 03:53:51 -0000 1.7
+++ gtkshell/arguments.c 4 Mar 2007 23:11:04 -0000 1.8
@@ -22,6 +22,100 @@
#include "gtkshell.h"
+#define SPLIT_ALL -1
+
+static void
+new_button(struct GSH * gsh, gchar * string)
+{
+ gchar **pair;
+
+ pair=g_strsplit(string, ",", 2);
+
+ if(ARPBOOL(pair[0]) && ARPBOOL(pair[1]))
+ gsh_image_button(gsh, pair[0], pair[1]);
+ else
+ gsh_command_button(gsh, pair[0]);
+
+ g_strfreev(pair);
+
+ gsh->rows.row--;
+}
+static void
+activate_cb(GtkWidget * widget, gpointer data)
+{
+ const gchar * command;
+ command=(const gchar *)data;
+ ARBUG((gchar *)command);
+ antiright_system((char *)command);
+}
+static void
+menuitem_parse(struct GSH * gsh, gchar * string)
+{
+ gchar **pair;
+ GtkWidget * item;
+ gchar * command;
+
+ pair=g_strsplit(string, ",", 2);
+
+ ARBUG(pair[0]);
+ ar_asprintf(&command, "%s", pair[0]);
+
+/* item=gtk_menu_item_new_with_label(command);
+ gtk_menu_shell_append(GTK_MENU_SHELL(gsh->rows.v), item);
+ g_signal_connect(item, "activate", G_CALLBACK(activate_cb), command);
+ gtk_widget_show(item); */
+
+ if(ARPBOOL(pair[0]) && ARPBOOL(pair[1]))
+ gsh_image_button(gsh, command, pair[1]);
+ else
+ gsh_command_button(gsh, command);
+
+ g_strfreev(pair);
+}
+
+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);
+ return TRUE;
+}
+
+static void
+button_parse(struct GSH * gsh, const gchar * string)
+{
+ gchar **tokens;
+ gint i;
+
+ tokens=g_strsplit(string, "::", SPLIT_ALL);
+ if(ARPBOOL(tokens[1]))
+ {
+ GtkWidget * oldrow;
+ GtkWidget * button;
+ oldrow=gsh->rows.v;
+ /* Set gsh->rows.v to a row within a menu.
+ * Create the menu before overwriting, then
+ * set back at end. */
+ new_button(gsh, tokens[0]);
+ gsh->rows.v=gtk_menu_new();
+ gtk_widget_show(gsh->rows.v);
+ g_signal_connect_swapped(gsh->button, "clicked",
+ G_CALLBACK(popup_handler), gsh->rows.v);
+
+ for(i=1; ARPBOOL(tokens[i]); i++)
+ menuitem_parse(gsh, tokens[i]);
+
+ gsh->rows.v=oldrow;
+ }
+ else
+ gsh_command_button(gsh, tokens[0]);
+
+ g_strfreev(tokens);
+}
+
void
gsh_parse_arguments(struct GSH * gsh, int argc, char **argv)
{
@@ -31,5 +125,5 @@
if (argv[counter][0] == '-')
gsh_handle_switch_arguments(gsh, argc, argv, &counter);
else
- gsh_command_button(gsh, argv[counter]);
+ button_parse(gsh, argv[counter]);
}
Index: gtkshell/button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/button.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- gtkshell/button.c 2 Mar 2007 19:12:00 -0000 1.17
+++ gtkshell/button.c 4 Mar 2007 23:11:04 -0000 1.18
@@ -23,7 +23,7 @@
#include "gtkshell.h"
static void
- setup_label(GtkWidget *widget, char *command);
+setup_label(GtkWidget *widget, char *command);
static void
setup_label(GtkWidget *widget, char *command)
@@ -31,6 +31,14 @@
gchar *formatted;
formatted = antiright_beautified_label(command);
+ if(GTK_IS_MENU_ITEM(widget))
+ {
+ GtkWidget * label;
+ label = gtk_label_new(formatted);
+ gtk_container_add(GTK_CONTAINER(widget), label);
+ gtk_widget_show(label);
+ }
+ else
gtk_button_set_label(GTK_BUTTON(widget), formatted);
free(formatted);
}
@@ -43,8 +51,12 @@
ARPASSERT(gsh);
-
+ if(!GTK_IS_MENU(gsh->rows.v))
gsh->button = gtk_button_new();
+ else
+ gsh->button = gtk_menu_item_new();
+
+ gtk_widget_show(gsh->button);
setup_label(gsh->button, command);
@@ -60,9 +72,18 @@
cb->data = command; /* command from argv, literal, or
* preallocated. */
+ if(GTK_IS_MENU_ITEM(gsh->button))
+ {
+ (void) g_signal_connect(G_OBJECT(gsh->button),
+ "activate", G_CALLBACK(system_cb), cb);
+
+ }
+ else
+ {
/* @null@ */
- (void) g_signal_connect(G_OBJECT(gsh->button), "clicked",
- G_CALLBACK(system_cb), cb);
+ (void) g_signal_connect(G_OBJECT(gsh->button),
+ "clicked", G_CALLBACK(system_cb), cb);
+ }
}
Index: gtkshell/image_button.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/image_button.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- gtkshell/image_button.c 2 Mar 2007 15:44:05 -0000 1.3
+++ gtkshell/image_button.c 4 Mar 2007 23:11:04 -0000 1.4
@@ -28,26 +28,42 @@
GtkWidget * image)
{
gsh_command_button(gsh, command);
+ if(!GTK_IS_MENU(gsh->rows.v))
+ {
gtk_button_set_image(GTK_BUTTON(gsh->button), image);
gtk_button_set_relief(GTK_BUTTON(gsh->button), GTK_RELIEF_NONE);
+ }
+ else
+ {
+ GtkWidget * label;
+ GtkWidget * hrow;
+ label=gtk_bin_get_child(GTK_BIN(gsh->button));
+ gtk_widget_ref(label);
+ gtk_container_remove(GTK_CONTAINER(gsh->button), label);
+ hrow=gtk_hbox_new(FALSE, 2);
+ gtk_container_add(GTK_CONTAINER(gsh->button), hrow);
+ gtk_widget_show(hrow);
+ gtk_container_add(GTK_CONTAINER(hrow), image);
+ gtk_widget_show(image);
+ gtk_container_add(GTK_CONTAINER(hrow), label);
+ gtk_widget_show(label);
+ }
}
void
-gsh_stock_image_button(struct GSH * gsh, char *command, char *stock_id)
+gsh_image_button(struct GSH * gsh, char *command, char *name)
{
GtkWidget *image;
+ gboolean is_file;
- image=gtk_image_new_from_stock((const gchar *)stock_id,
- GTK_ICON_SIZE_DND);
- generic_image_button(gsh, command, image);
-}
+ is_file = g_file_test(name, G_FILE_TEST_EXISTS);
-void
-gsh_image_button(struct GSH * gsh, char *command, char *filename)
-{
- GtkWidget *image;
+ ARIFB(is_file)
+ image = gtk_image_new_from_file(name);
+ else
+ image = gtk_image_new_from_stock((const gchar *)name,
+ GTK_ICON_SIZE_DND);
- image = gtk_image_new_from_file(filename);
generic_image_button(gsh, command, image);
}
@@ -68,13 +84,6 @@
}
void
-gsh_handle_add_stock_button(struct GSH * gsh, int argc, char **argv,
- int * counter)
-{
- generic_add(gsh, argc, argv, counter, &gsh_stock_image_button);
-}
-
-void
gsh_handle_add_unlabeled_image_button(struct GSH * gsh, int argc,
char **argv, int *counter)
{
Index: gtkshell/image_button.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/image_button.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- gtkshell/image_button.h 2 Mar 2007 19:12:00 -0000 1.3
+++ gtkshell/image_button.h 4 Mar 2007 23:11:04 -0000 1.4
@@ -24,7 +24,7 @@
#define GSH_IMAGE_BUTTON_H
void
-gsh_image_button(struct GSH * gsh, char *command, char *filename);
+gsh_image_button(struct GSH * gsh, char *command, char *name);
void
gsh_handle_add_image_button(struct GSH * gsh, int argc,
@@ -33,15 +33,5 @@
void
gsh_handle_add_unlabeled_image_button(struct GSH * gsh, int argc,
char **argv, int *counter);
-
-void
-gsh_stock_image_button(struct GSH * gsh, char *command,
- char *stock_id);
-
-void
-gsh_handle_add_stock_button(struct GSH * gsh, int argc, char **argv,
- int * counter);
-
-
#endif /* GSH_IMAGE_BUTTON_H */
Index: gtkshell/row.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/row.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- gtkshell/row.c 1 Mar 2007 18:54:04 -0000 1.12
+++ gtkshell/row.c 4 Mar 2007 23:11:04 -0000 1.13
@@ -42,9 +42,16 @@
void
gsh_manage(struct GSH * gsh, GtkWidget *widget)
{
+ if(GTK_IS_MENU(gsh->rows.v))
+ {
+ gtk_menu_shell_append(GTK_MENU_SHELL(gsh->rows.v), widget);
+ }
+ else
+ {
gsh_check_row(gsh);
gtk_container_add(GTK_CONTAINER(gsh->rows.v), widget);
gsh_manage_generic(gsh, widget);
+ }
}
void
@@ -55,7 +62,7 @@
* Checking for a 1 row counter allows the ACE Deskbar to
* maintain a decent appearance.
*/
- if (gsh->rows.rows != 1)
+ if ((!gsh->rows.rows != 1) && !GTK_IS_MENU(gsh->rows.v))
{
gsh_check_row(gsh);
gtk_box_pack_start(GTK_BOX(gsh->rows.v), widget,
- [Antiright-devel] antiright ACE-desktop/ACE gtkshell/add_options....,
Jeffrey Bedard <=