|
From: <kr_...@us...> - 2003-12-14 10:51:51
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK
In directory sc8-pr-cvs1:/tmp/cvs-serv2507/src/cbits/GTK
Modified Files:
ToolBar.c gtkdropdowntoolbutton.c gtkdropdowntoolbutton.h
Log Message:
Make the library compatible with ToolBar API in GTK 2.3.1
Index: ToolBar.c
===================================================================
RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/ToolBar.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** ToolBar.c 31 Aug 2003 12:56:26 -0000 1.10
--- ToolBar.c 14 Dec 2003 10:51:39 -0000 1.11
***************
*** 45,63 ****
}
- void tool_button_clicked(GtkWidget *widget, gpointer user_data)
- {
- handleToolCommand((ToolHandle) user_data);
- }
-
ToolHandle osInsertToolButton(WindowHandle toolbar, int pos)
{
! GtkToolItem *item = gtk_tool_button_new("", gtk_image_new());
! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked",
! GTK_SIGNAL_FUNC(tool_button_clicked),
! item);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
- gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new(""));
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
--- 45,58 ----
}
ToolHandle osInsertToolButton(WindowHandle toolbar, int pos)
{
! GtkToolItem *item = gtk_tool_button_new(gtk_image_new(), "");
! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE);
! gtk_signal_connect (GTK_OBJECT(item), "clicked",
! GTK_SIGNAL_FUNC(handleToolCommand),
! NULL);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
***************
*** 68,80 ****
{
GtkToolItem *item = gtk_toggle_tool_button_new();
! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked",
! GTK_SIGNAL_FUNC(tool_button_clicked),
! item);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
- gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new(""));
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new());
-
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
--- 63,74 ----
{
GtkToolItem *item = gtk_toggle_tool_button_new();
! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE);
! gtk_signal_connect (GTK_OBJECT(item), "clicked",
! GTK_SIGNAL_FUNC(handleToolCommand),
! NULL);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new());
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
***************
*** 84,91 ****
static void tool_radio_button_clicked(GtkWidget *widget, gpointer user_data)
{
! ToolHandle toolItem = (ToolHandle) user_data;
!
! if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toolItem)))
! handleToolCommand(toolItem);
}
--- 78,83 ----
static void tool_radio_button_clicked(GtkWidget *widget, gpointer user_data)
{
! if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(widget)))
! handleToolCommand(widget);
}
***************
*** 93,107 ****
{
GtkToolItem *item = gtk_radio_tool_button_new(NULL);
! GTK_TOGGLE_BUTTON (GTK_TOOL_BUTTON(item)->button)->active = FALSE;
!
! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked",
GTK_SIGNAL_FUNC(tool_radio_button_clicked),
! item);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
- gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new(""));
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new());
-
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
--- 85,97 ----
{
GtkToolItem *item = gtk_radio_tool_button_new(NULL);
! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE);
! gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON (item), FALSE);
! gtk_signal_connect (GTK_OBJECT(item), "clicked",
GTK_SIGNAL_FUNC(tool_radio_button_clicked),
! NULL);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new());
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
***************
*** 123,133 ****
ToolHandle osInsertToolDropDownButton(WindowHandle toolbar, MenuHandle hmenu, int pos)
{
! GtkToolItem *item = gtk_drop_down_tool_button_new();
gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(item), hmenu);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
- gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new(""));
- gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new());
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
--- 113,122 ----
ToolHandle osInsertToolDropDownButton(WindowHandle toolbar, MenuHandle hmenu, int pos)
{
! GtkToolItem *item = gtk_drop_down_tool_button_new(gtk_image_new(), "", NULL);
! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE);
gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(item), hmenu);
gtk_signal_connect (GTK_OBJECT(item), "destroy",
GTK_SIGNAL_FUNC(handleToolDestroy),
NULL);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos);
gtk_widget_show_all(GTK_WIDGET(item));
***************
*** 148,152 ****
void osSetToolButtonBitmap(ToolHandle toolButton, BitmapHandle bitmap)
{
! gtk_image_set_from_pixbuf(gtk_tool_button_get_icon_widget (GTK_TOOL_BUTTON(toolButton)), bitmap->pixbuf);
}
--- 137,141 ----
void osSetToolButtonBitmap(ToolHandle toolButton, BitmapHandle bitmap)
{
! gtk_image_set_from_pixbuf(GTK_IMAGE(gtk_tool_button_get_icon_widget (GTK_TOOL_BUTTON(toolButton))), bitmap->pixbuf);
}
***************
*** 175,187 ****
void osSetToolButtonText(ToolHandle toolButton, char *text)
{
! GtkWidget *label = gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON(toolButton));
! gtk_label_set_text(GTK_LABEL(label), text);
}
char *osGetToolButtonText(ToolHandle toolButton)
{
! GtkWidget *label = gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON(toolButton));
! char *text = gtk_label_get_text(GTK_LABEL(label));
! return strdup(text);
}
--- 164,175 ----
void osSetToolButtonText(ToolHandle toolButton, char *text)
{
! gchar *szText = toMnemonicString(text);
! gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolButton), szText);
! rfree(szText);
}
char *osGetToolButtonText(ToolHandle toolButton)
{
! return fromMnemonicString(gtk_tool_button_get_label(GTK_TOOL_BUTTON(toolButton)));
}
Index: gtkdropdowntoolbutton.c
===================================================================
RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/gtkdropdowntoolbutton.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** gtkdropdowntoolbutton.c 22 Aug 2003 21:45:08 -0000 1.1
--- gtkdropdowntoolbutton.c 14 Dec 2003 10:51:39 -0000 1.2
***************
*** 82,85 ****
--- 82,123 ----
}
+ static GtkWidget *
+ clone_image_menu_size (GtkImage *image, GtkSettings *settings)
+ {
+ GtkImageType storage_type = gtk_image_get_storage_type (image);
+
+ if (storage_type == GTK_IMAGE_STOCK)
+ {
+ gchar *stock_id;
+ gtk_image_get_stock (image, &stock_id, NULL);
+ return gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU);
+ }
+ else if (storage_type == GTK_IMAGE_ICON_SET)
+ {
+ GtkIconSet *icon_set;
+ gtk_image_get_icon_set (image, &icon_set, NULL);
+ return gtk_image_new_from_icon_set (icon_set, GTK_ICON_SIZE_MENU);
+ }
+ else if (storage_type == GTK_IMAGE_PIXBUF)
+ {
+ gint width, height;
+
+ if (settings &&
+ gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
+ &width, &height))
+ {
+ GdkPixbuf *src_pixbuf, *dest_pixbuf;
+
+ src_pixbuf = gtk_image_get_pixbuf (image);
+ dest_pixbuf = gdk_pixbuf_scale_simple (src_pixbuf, width, height,
+ GDK_INTERP_BILINEAR);
+
+ return gtk_image_new_from_pixbuf (dest_pixbuf);
+ }
+ }
+
+ return NULL;
+ }
+
static gboolean
gtk_drop_down_tool_button_create_menu_proxy (GtkToolItem *item)
***************
*** 89,109 ****
GtkStockItem stock_item;
gboolean use_mnemonic = TRUE;
! const char *label = "";
! if (tool_button->label_widget && GTK_IS_LABEL (tool_button->label_widget))
! label = gtk_label_get_label (GTK_LABEL (tool_button->label_widget));
! else if (tool_button->label_text)
{
! label = tool_button->label_text;
! use_mnemonic = tool_button->use_underline;
}
- else if (tool_button->stock_id && gtk_stock_lookup (tool_button->stock_id, &stock_item))
- label = stock_item.label;
if (use_mnemonic)
! menu_item = gtk_menu_item_new_with_mnemonic (label);
else
! menu_item = gtk_menu_item_new_with_label (label);
! gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), GTK_DROP_DOWN_BUTTON(tool_button->button)->menu);
gtk_tool_item_set_proxy_menu_item (item, MENU_ID, menu_item);
--- 127,177 ----
GtkStockItem stock_item;
gboolean use_mnemonic = TRUE;
! const char *label;
! GtkWidget *menu_image = NULL;
! GtkWidget *label_widget = gtk_tool_button_get_label_widget (tool_button);
! GtkWidget *icon_widget = gtk_tool_button_get_icon_widget(tool_button);
! GtkWidget *menu_widget = GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(tool_button)))->menu;
! const gchar *label_text = gtk_tool_button_get_label (tool_button);
! const gchar *stock_id = gtk_tool_button_get_stock_id (tool_button);
!
! if (label_widget && GTK_IS_LABEL (label_widget))
{
! label = gtk_label_get_label (GTK_LABEL (label_widget));
! use_mnemonic = gtk_label_get_use_underline (GTK_LABEL (label_widget));
! }
! else if (label_text)
! {
! label = label_text;
! use_mnemonic = gtk_tool_button_get_use_underline (tool_button);
! }
! else if (stock_id && gtk_stock_lookup (stock_id, &stock_item))
! {
! label = stock_item.label;
! }
! else
! {
! label = "";
}
if (use_mnemonic)
! menu_item = gtk_image_menu_item_new_with_mnemonic (label);
else
! menu_item = gtk_image_menu_item_new_with_label (label);
!
! if (icon_widget && GTK_IS_IMAGE (icon_widget))
! {
! menu_image = clone_image_menu_size (GTK_IMAGE(icon_widget),
! gtk_widget_get_settings (GTK_WIDGET (tool_button)));
! }
! else if (stock_id)
! {
! menu_image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU);
! }
!
! if (menu_image)
! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), menu_image);
!
! gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), menu_widget);
gtk_tool_item_set_proxy_menu_item (item, MENU_ID, menu_item);
***************
*** 113,117 ****
GtkToolItem *
! gtk_drop_down_tool_button_new (void)
{
GtkToolButton *button;
--- 181,187 ----
GtkToolItem *
! gtk_drop_down_tool_button_new (GtkWidget *icon_widget,
! const gchar *label,
! GtkWidget *menu)
{
GtkToolButton *button;
***************
*** 119,123 ****
button = g_object_new (GTK_TYPE_DROP_DOWN_TOOL_BUTTON,
NULL);
!
return GTK_TOOL_ITEM (button);
}
--- 189,202 ----
button = g_object_new (GTK_TYPE_DROP_DOWN_TOOL_BUTTON,
NULL);
!
! if (label)
! gtk_tool_button_set_label (button, label);
!
! if (icon_widget)
! gtk_tool_button_set_icon_widget (button, icon_widget);
!
! if (menu)
! gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(button), menu);
!
return GTK_TOOL_ITEM (button);
}
***************
*** 139,147 ****
GtkWidget* gtk_drop_down_tool_button_get_menu(GtkDropDownToolButton *button)
{
! return gtk_drop_down_button_get_menu(GTK_DROP_DOWN_BUTTON(GTK_TOOL_BUTTON(button)->button));
}
void gtk_drop_down_tool_button_set_menu(GtkDropDownToolButton *button, GtkWidget *menu)
{
! gtk_drop_down_button_set_menu(GTK_DROP_DOWN_BUTTON(GTK_TOOL_BUTTON(button)->button), menu);
}
--- 218,229 ----
GtkWidget* gtk_drop_down_tool_button_get_menu(GtkDropDownToolButton *button)
{
! return gtk_drop_down_button_get_menu(
! GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(button))));
}
void gtk_drop_down_tool_button_set_menu(GtkDropDownToolButton *button, GtkWidget *menu)
{
! gtk_drop_down_button_set_menu(
! GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(button))),
! menu);
}
Index: gtkdropdowntoolbutton.h
===================================================================
RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/gtkdropdowntoolbutton.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** gtkdropdowntoolbutton.h 22 Aug 2003 21:45:08 -0000 1.1
--- gtkdropdowntoolbutton.h 14 Dec 2003 10:51:39 -0000 1.2
***************
*** 50,54 ****
GType gtk_drop_down_tool_button_get_type (void) G_GNUC_CONST;
! GtkToolItem *gtk_drop_down_tool_button_new (void);
GtkToolItem *gtk_drop_down_tool_button_new_from_stock (const gchar *stock_id);
GtkWidget* gtk_drop_down_tool_button_get_menu (GtkDropDownToolButton *button);
--- 50,54 ----
GType gtk_drop_down_tool_button_get_type (void) G_GNUC_CONST;
! GtkToolItem *gtk_drop_down_tool_button_new (GtkWidget *icon_widget, const gchar *label, GtkWidget *menu);
GtkToolItem *gtk_drop_down_tool_button_new_from_stock (const gchar *stock_id);
GtkWidget* gtk_drop_down_tool_button_get_menu (GtkDropDownToolButton *button);
|