gnome-commander r2346 - in trunk: . src



Author: epiotr
Date: Thu Dec 11 17:57:03 2008
New Revision: 2346
URL: http://svn.gnome.org/viewvc/gnome-commander?rev=2346&view=rev

Log:
move code for menu buttons to gnome-cmd-menu-button.{cc,h} files

Added:
   trunk/src/gnome-cmd-menu-button.cc
   trunk/src/gnome-cmd-menu-button.h
Modified:
   trunk/ChangeLog
   trunk/src/Makefile.am
   trunk/src/gnome-cmd-advrename-dialog.cc

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Thu Dec 11 17:57:03 2008
@@ -56,6 +56,7 @@
 	gnome-cmd-main-menu.h gnome-cmd-main-menu.cc \
 	gnome-cmd-main-win.h gnome-cmd-main-win.cc \
 	gnome-cmd-make-copy-dialog.h gnome-cmd-make-copy-dialog.cc \
+	gnome-cmd-menu-button.h gnome-cmd-menu-button.cc \
 	gnome-cmd-mkdir-dialog.h gnome-cmd-mkdir-dialog.cc \
 	gnome-cmd-notebook.h gnome-cmd-notebook.cc \
 	gnome-cmd-options-dialog.h gnome-cmd-options-dialog.cc \

Modified: trunk/src/gnome-cmd-advrename-dialog.cc
==============================================================================
--- trunk/src/gnome-cmd-advrename-dialog.cc	(original)
+++ trunk/src/gnome-cmd-advrename-dialog.cc	Thu Dec 11 17:57:03 2008
@@ -33,6 +33,7 @@
 #include "gnome-cmd-advrename-lexer.h"
 #include "gnome-cmd-file.h"
 #include "gnome-cmd-treeview.h"
+#include "gnome-cmd-menu-button.h"
 #include "gnome-cmd-data.h"
 #include "tags/gnome-cmd-tags.h"
 #include "utils.h"
@@ -101,7 +102,6 @@
     void files_view_popup_menu (GtkWidget *treeview, GnomeCmdAdvrenameDialog *dialog, GdkEventButton *event=NULL);
 
     static void on_template_entry_changed(GtkEntry *entry, GnomeCmdAdvrenameDialog *dialog);
-    static void on_menu_button_clicked(GtkButton *widget, GtkWidget *menu);
 
     static void on_counter_start_spin_value_changed (GtkWidget *spin, GnomeCmdAdvrenameDialog *dialog);
     static void on_counter_step_spin_value_changed (GtkWidget *spin, GnomeCmdAdvrenameDialog *dialog);
@@ -508,20 +508,9 @@
 
 inline GtkWidget *GnomeCmdAdvrenameDialog::Private::create_button_with_menu(gchar *label_text, int menu_type, GnomeCmdData::AdvrenameConfig *cfg)
 {
-    GtkWidget *button = gtk_button_new ();
-    GtkWidget *hbox = gtk_hbox_new (FALSE, 3);
+    menu_button[menu_type] = gnome_cmd_button_menu_new (label_text, create_placeholder_menu(menu_type, cfg));
 
-    gtk_container_add (GTK_CONTAINER (button), hbox);
-
-    gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (label_text), TRUE, TRUE, 0);
-    gtk_box_pack_start (GTK_BOX (hbox), gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE), FALSE, FALSE, 0);
-
-    gtk_widget_set_events (button, GDK_BUTTON_PRESS_MASK);
-    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_menu_button_clicked), create_placeholder_menu(menu_type, cfg));
-
-    menu_button[menu_type] = button;
-
-    return button;
+    return menu_button[menu_type];
 }
 
 
@@ -596,9 +585,9 @@
     {
         GtkWidget *menu = widget->parent;
 
-        g_signal_handlers_disconnect_by_func (G_OBJECT (priv->menu_button[PROFILE_MENU]), gpointer (on_menu_button_clicked), menu);
+        gnome_cmd_button_menu_disconnect_handler (priv->menu_button[PROFILE_MENU], menu);
         g_object_unref (gtk_item_factory_from_widget (menu));
-        g_signal_connect (G_OBJECT (priv->menu_button[PROFILE_MENU]), "clicked", G_CALLBACK (on_menu_button_clicked), priv->create_placeholder_menu(PROFILE_MENU, &cfg));
+        gnome_cmd_button_menu_connect_handler (priv->menu_button[PROFILE_MENU], priv->create_placeholder_menu(PROFILE_MENU, &cfg));
     }
 }
 
@@ -634,18 +623,6 @@
 }
 
 
-void GnomeCmdAdvrenameDialog::Private::on_menu_button_clicked(GtkButton *widget, GtkWidget *menu)
-{
-    GdkEventButton *event = (GdkEventButton *) gtk_get_current_event();
-
-    if (event == NULL)
-        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());
-    else
-        if (event->button == 1)
-            gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, event->button, event->time);
-}
-
-
 inline GtkWidget *create_regex_view ();
 
 inline GtkTreeModel *create_files_model ();

Added: trunk/src/gnome-cmd-menu-button.cc
==============================================================================
--- (empty file)
+++ trunk/src/gnome-cmd-menu-button.cc	Thu Dec 11 17:57:03 2008
@@ -0,0 +1,88 @@
+/*
+    GNOME Commander - A GNOME based file manager
+    Copyright (C) 2001-2006 Marcus Bjurman
+    Copyright (C) 2007-2008 Piotr Eljasiak
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <gtk/gtk.h>
+#include <config.h>
+
+#include "gnome-cmd-menu-button.h"
+
+using namespace std;
+
+
+static void on_menu_button_clicked (GtkButton *widget, GtkWidget *menu)
+{
+    GdkEventButton *event = (GdkEventButton *) gtk_get_current_event();
+
+    if (event == NULL)
+        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());
+    else
+        if (event->button == 1)
+            gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, event->button, event->time);
+}
+
+
+inline GtkWidget *create_menu_button (const gchar *stock_id, const gchar *label_text, GtkWidget *menu)
+{
+    GtkWidget *button = gtk_button_new ();
+    GtkWidget *hbox = gtk_hbox_new (FALSE, 3);
+    GtkWidget *label = gtk_label_new_with_mnemonic (label_text ? label_text : stock_id);
+
+    gtk_container_add (GTK_CONTAINER (button), hbox);
+
+    if (stock_id)
+        gtk_box_pack_start (GTK_BOX (hbox), gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON), FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+    gtk_box_pack_start (GTK_BOX (hbox), gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE), FALSE, FALSE, 0);
+
+    gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
+    gtk_widget_set_events (button, GDK_BUTTON_PRESS_MASK);
+    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_menu_button_clicked), menu);
+
+    return button;
+}
+
+
+GtkWidget *gnome_cmd_button_menu_new (const gchar *label, GtkWidget *menu)
+{
+    return create_menu_button (NULL, label, menu);
+}
+
+
+GtkWidget *gnome_cmd_button_menu_new_from_stock (const gchar *stock_id, GtkWidget *menu)
+{
+    return create_menu_button (stock_id, NULL, menu);
+}
+
+
+GtkWidget *gnome_cmd_button_menu_new_from_stock (const gchar *stock_id, const gchar *label, GtkWidget *menu)
+{
+    return create_menu_button (stock_id, label, menu);
+}
+
+
+gulong gnome_cmd_button_menu_connect_handler (GtkWidget *button, GtkWidget *menu)
+{
+    return g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_menu_button_clicked), menu);
+}
+
+void gnome_cmd_button_menu_disconnect_handler (GtkWidget *button, GtkWidget *menu)
+{
+    g_signal_handlers_disconnect_by_func (G_OBJECT (button), gpointer (on_menu_button_clicked), menu);
+}

Added: trunk/src/gnome-cmd-menu-button.h
==============================================================================
--- (empty file)
+++ trunk/src/gnome-cmd-menu-button.h	Thu Dec 11 17:57:03 2008
@@ -0,0 +1,30 @@
+/*
+    GNOME Commander - A GNOME based file manager
+    Copyright (C) 2001-2006 Marcus Bjurman
+    Copyright (C) 2007-2008 Piotr Eljasiak
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __GNOME_CMD_MENU_BUTTON_H__
+#define __GNOME_CMD_MENU_BUTTON_H__
+
+GtkWidget *gnome_cmd_button_menu_new (const gchar *label, GtkWidget *menu);
+GtkWidget *gnome_cmd_button_menu_new_from_stock (const gchar *stock_id, GtkWidget *menu);
+GtkWidget *gnome_cmd_button_menu_new_from_stock (const gchar *stock_id, const gchar *label, GtkWidget *menu);
+gulong gnome_cmd_button_menu_connect_handler (GtkWidget *button, GtkWidget *menu);
+void gnome_cmd_button_menu_disconnect_handler (GtkWidget *button, GtkWidget *menu);
+
+#endif // __GNOME_CMD_MENU_BUTTON_H__



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