Hi all, Here comes a patch on gnome-hello which removes GnomeApp stuff, introduces GtkUIManager and the new GtkAboutDialog, fixes the coding style a bit (YMMV...) and a couple of other changes. It should be noted that GNOME Hello has been depending on unstable GTK for a few weeks, so I'm not adding a new dependency. I'd tweak a bit the build set up too (it is not using gnome-common's autogen.sh and has a couple of files in cvs which should not be there) but that is harder to get in patch form. Any complaints on my commiting this? -- m -- Mariano Suárez-Alvarez <msuarezalvarez arnet com ar> http://www.gnome.org/~mariano
Index: app.c
===================================================================
RCS file: /cvs/gnome/gnome-hello/src/app.c,v
retrieving revision 1.5
diff -U5 -p -r1.5 app.c
--- app.c 7 Oct 2004 08:45:46 -0000 1.5
+++ app.c 17 Nov 2004 22:32:23 -0000
@@ -16,104 +16,94 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-/*** gnomehello-app */
-
#include <config.h>
+#include <glib/gi18n.h>
#include "app.h"
#include "menus.h"
/* Keep a list of all open application windows */
-static GSList* app_list = NULL;
+static GSList *app_list = NULL;
-static gint delete_event_cb(GtkWidget* w, GdkEventAny* e, gpointer data);
-static void button_click_cb(GtkWidget* w, gpointer data);
+static gint delete_event_cb (GtkWidget *w, GdkEventAny *e, gpointer data);
+static void button_click_cb (GtkWidget *w, gpointer data);
-GtkWidget*
-hello_app_new(const gchar* message,
- const gchar* geometry,
- GSList* greet)
+GtkWidget *
+hello_app_new (const gchar *message,
+ const gchar *geometry,
+ GSList *greet)
{
- GtkWidget* app;
- GtkWidget* button;
- GtkWidget* label;
- GtkWidget* status;
- GtkWidget* frame;
+ GtkWidget *app;
+ GtkWidget *vbox;
+ GtkWidget *button;
+ GtkWidget *alignment;
+ GtkWidget *label;
+ GtkWidget *menubar;
+ GtkUIManager *ui_manager;
+ GtkAccelGroup *accel_group;
/*** gnomehello-widgets */
- app = gnome_app_new(PACKAGE, _("Gnome Hello"));
-
- frame = gtk_frame_new(NULL);
-
- button = gtk_button_new();
-
- label = gtk_label_new(message ? message : _("Hello, World!"));
-
- gtk_window_set_policy(GTK_WINDOW(app), FALSE, TRUE, FALSE);
- gtk_window_set_default_size(GTK_WINDOW(app), 250, 350);
- gtk_window_set_wmclass(GTK_WINDOW(app), "hello", "GnomeHello");
-
- gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
-
- gtk_container_set_border_width(GTK_CONTAINER(button), 10);
-
- gtk_container_add(GTK_CONTAINER(button), label);
-
- gtk_container_add(GTK_CONTAINER(frame), button);
-
- gnome_app_set_contents(GNOME_APP(app), frame);
-
- status = gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER);
-
- gnome_app_set_statusbar(GNOME_APP(app), status);
-
- hello_install_menus_and_toolbar(app);
-
- /* gnomehello-widgets ***/
+ app = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_policy (GTK_WINDOW (app), FALSE, TRUE, FALSE);
+ gtk_window_set_default_size (GTK_WINDOW (app), 250, 350);
+ gtk_window_set_wmclass (GTK_WINDOW (app), "hello", "GnomeHello");
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (app), vbox);
+
+ ui_manager = create_ui_manager ("GnomeHelloActions", app);
+
+ accel_group = gtk_ui_manager_get_accel_group (ui_manager);
+ gtk_window_add_accel_group (GTK_WINDOW (app), accel_group);
+
+ menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
+ gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
+
+ button = gtk_button_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (button), 10);
+ gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
+
+ label = gtk_label_new (message ? message : _("Hello, World!"));
+ gtk_container_add (GTK_CONTAINER (button), label);
+
+ g_signal_connect (G_OBJECT (app),
+ "delete_event",
+ G_CALLBACK (delete_event_cb),
+ NULL);
+
+ g_signal_connect (G_OBJECT (button),
+ "clicked",
+ G_CALLBACK (button_click_cb),
+ label);
- /*** gnomehello-signals */
- g_signal_connect(G_OBJECT(app),
- "delete_event",
- G_CALLBACK(delete_event_cb),
- NULL);
-
- g_signal_connect(G_OBJECT(button),
- "clicked",
- G_CALLBACK(button_click_cb),
- label);
- /* gnomehello-signals ***/
-
- /* gnomehello-geometry ***/
if (geometry != NULL)
{
- if (!gtk_window_parse_geometry (GTK_WINDOW(app), geometry))
+ if (!gtk_window_parse_geometry (GTK_WINDOW (app), geometry))
{
- g_error(_("Could not parse geometry string `%s'"), geometry);
+ g_error (_("Could not parse geometry string `%s'"), geometry);
}
}
- /* gnomehello-geometry ***/
-
if (greet != NULL)
{
- GtkWidget* dialog;
- gchar* greetings = g_strdup(_("Special Greetings to:\n"));
- GSList* tmp = greet;
+ GtkWidget *dialog;
+ gchar *greetings = g_strdup (_("Special Greetings to:\n"));
+ GSList *tmp = greet;
while (tmp != NULL)
{
- gchar* old = greetings;
+ gchar *old = greetings;
- greetings = g_strconcat(old,
- (gchar*) tmp->data,
- "\n",
- NULL);
- g_free(old);
+ greetings = g_strconcat (old,
+ (gchar *) tmp->data,
+ "\n",
+ NULL);
+ g_free (old);
- tmp = g_slist_next(tmp);
+ tmp = g_slist_next (tmp);
}
dialog = gtk_message_dialog_new (GTK_WINDOW (app),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
@@ -122,64 +112,58 @@ hello_app_new(const gchar* message,
NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_object_destroy), NULL);
gtk_widget_show (dialog);
- g_free(greetings);
-
+ g_free (greetings);
}
- app_list = g_slist_prepend(app_list, app);
+ app_list = g_slist_prepend (app_list, app);
+
+ gtk_widget_show_all (vbox);
return app;
}
void
-hello_app_close(GtkWidget* app)
+hello_app_close (GtkWidget *app)
{
- g_return_if_fail(GNOME_IS_APP(app));
-
- app_list = g_slist_remove(app_list, app);
+ app_list = g_slist_remove (app_list, app);
- gtk_widget_destroy(app);
+ gtk_widget_destroy (app);
if (app_list == NULL)
{
/* No windows remaining */
- gtk_main_quit();
+ gtk_main_quit ();
}
}
-/*** gnomehello-quit */
static gint
-delete_event_cb(GtkWidget* window, GdkEventAny* e, gpointer data)
+delete_event_cb (GtkWidget *window, GdkEventAny *e, gpointer data)
{
- hello_app_close(window);
+ hello_app_close (window);
/* Prevent the window's destruction, since we destroyed it
* ourselves with hello_app_close()
*/
return TRUE;
}
-/* gnomehello-quit ***/
static void
-button_click_cb(GtkWidget* w, gpointer data)
+button_click_cb (GtkWidget *w, gpointer data)
{
- GtkWidget* label;
- gchar* text;
- gchar* tmp;
+ GtkWidget *label;
+ const gchar *text;
+ gchar *tmp;
- label = GTK_WIDGET(data);
+ label = GTK_WIDGET (data);
- gtk_label_get(GTK_LABEL(label), &text);
+ text = gtk_label_get_text (GTK_LABEL (label));
+ tmp = g_strdup (text);
- tmp = g_strdup(text);
+ g_strreverse (tmp);
- g_strreverse(tmp);
-
- gtk_label_set_text(GTK_LABEL(label), tmp);
+ gtk_label_set_text (GTK_LABEL (label), tmp);
g_free(tmp);
}
-
-/* gnomehello-app ***/
Index: app.h
===================================================================
RCS file: /cvs/gnome/gnome-hello/src/app.h,v
retrieving revision 1.1
diff -U5 -p -r1.1 app.h
--- app.h 28 Jun 1999 01:49:29 -0000 1.1
+++ app.h 17 Nov 2004 22:32:23 -0000
@@ -16,12 +16,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-/*** gnomehello-apph */
-
#ifndef GNOMEHELLO_APP_H
#define GNOMEHELLO_APP_H
#include <gnome.h>
@@ -30,7 +28,5 @@ GtkWidget* hello_app_new(const gchar* me
GSList* greet);
void hello_app_close(GtkWidget* app);
#endif
-
-/* gnomehello-apph ***/
Index: hello.c
===================================================================
RCS file: /cvs/gnome/gnome-hello/src/hello.c,v
retrieving revision 1.7
diff -U5 -p -r1.7 hello.c
--- hello.c 7 Oct 2004 08:45:46 -0000 1.7
+++ hello.c 17 Nov 2004 22:32:23 -0000
@@ -16,28 +16,25 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-/*** gnomehello */
-
#include <config.h>
#include <glib-object.h>
#include <gnome.h>
+#include <glib/gi18n.h>
#include "app.h"
-static void session_die(GnomeClient* client, gpointer client_data);
-
-static gint save_session(GnomeClient *client, gint phase,
- GnomeSaveStyle save_style,
- gint is_shutdown, GnomeInteractStyle interact_style,
- gint is_fast, gpointer client_data);
+static void session_die (GnomeClient* client, gpointer client_data);
+static gint save_session (GnomeClient *client, gint phase,
+ GnomeSaveStyle save_style,
+ gint is_shutdown, GnomeInteractStyle interact_style,
+ gint is_fast, gpointer client_data);
-/*** gnomehello-popttable */
static int greet_mode = FALSE;
static char* message = NULL;
static char* geometry = NULL;
struct poptOption options[] = {
@@ -66,142 +63,120 @@ struct poptOption options[] = {
&geometry,
0,
N_("Specify the geometry of the main window"),
N_("GEOMETRY")
},
- {
- NULL,
- '\0',
- 0,
- NULL,
- 0,
- NULL,
- NULL
- }
+ POPT_TABLEEND
};
-/* gnomehello-popttable ***/
int
-main(int argc, char** argv)
+main (int argc, char **argv)
{
- /*** gnomehello-parsing */
- GtkWidget* app;
+ GtkWidget *app;
GnomeProgram *gnome_hello;
- GnomeClient* client;
+ GnomeClient *client;
GValue value = {0,};
poptContext pctx;
- GSList* greet = NULL;
- char** args;
+ GSList *greet = NULL;
+ char **args;
int i;
- bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- textdomain(GETTEXT_PACKAGE);
-
- gnome_hello = gnome_program_init(PACKAGE, VERSION, LIBGNOMEUI_MODULE,
- argc, argv,
- GNOME_PARAM_POPT_TABLE, options,
- GNOME_PARAM_APP_DATADIR,DATADIR, NULL);
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ gnome_hello = gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
+ argc, argv,
+ GNOME_PARAM_POPT_TABLE, options,
+ GNOME_PARAM_APP_DATADIR,DATADIR, NULL);
gtk_window_set_default_icon_name ("gnome-hello-logo");
g_value_init (&value, G_TYPE_POINTER);
g_object_get_property (G_OBJECT(gnome_hello),
- GNOME_PARAM_POPT_CONTEXT, &value);
+ GNOME_PARAM_POPT_CONTEXT, &value);
(poptContext)pctx = g_value_get_pointer (&value);
- /* Argument parsing */
args = (char **) poptGetArgs(pctx);
if (greet_mode && args)
{
i = 0;
while (args[i] != NULL)
{
- greet = g_slist_prepend(greet, args[i]);
+ greet = g_slist_prepend (greet, args[i]);
++i;
}
- /* Put them in order */
- greet = g_slist_reverse(greet);
+
+ greet = g_slist_reverse (greet);
}
else if (greet_mode && args == NULL)
{
- g_printerr(_("You must specify someone to greet.\n"));
+ g_printerr (_("You must specify someone to greet.\n"));
return 1;
}
else if (args != NULL)
{
- g_printerr(_("Command line arguments are only allowed with --greet.\n"));
+ g_printerr (_("Command line arguments are only allowed with --greet.\n"));
return 1;
}
else
{
- g_assert(!greet_mode && args == NULL);
+ g_assert (!greet_mode && args == NULL);
}
- poptFreeContext(pctx);
- /* gnomehello-parsing ***/
+ poptFreeContext (pctx);
- /* Session Management */
-
- /*** gnomehello-client */
client = gnome_master_client ();
g_signal_connect (G_OBJECT (client), "save_yourself",
- G_CALLBACK (save_session), argv[0]);
+ G_CALLBACK (save_session), argv[0]);
g_signal_connect (G_OBJECT (client), "die",
- G_CALLBACK (session_die), NULL);
- /* gnomehello-client ***/
-
+ G_CALLBACK (session_die), NULL);
- /* Main app */
+ app = hello_app_new (message, geometry, greet);
- app = hello_app_new(message, geometry, greet);
+ g_slist_free (greet);
- g_slist_free(greet);
-
- /*** gnomehello-main */
gtk_widget_show_all(app);
gtk_main();
return 0;
- /* gnomehello-main ***/
}
-/*** gnomehello-save-session */
static gint
-save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style,
- gint is_shutdown, GnomeInteractStyle interact_style,
- gint is_fast, gpointer client_data)
+save_session (GnomeClient *client,
+ gint phase,
+ GnomeSaveStyle save_style,
+ gint is_shutdown,
+ GnomeInteractStyle interact_style,
+ gint is_fast,
+ gpointer client_data)
{
- gchar** argv;
+ gchar **argv;
guint argc;
- /* allocate 0-filled, so it will be NULL-terminated */
- argv = g_malloc0(sizeof(gchar*)*4);
- argc = 1;
+ argv = g_new0 (gchar*, 4);
+ argc = 0;
- argv[0] = client_data;
+ argv[argc++] = client_data;
- if (message)
+ if (message != NULL)
{
- argv[1] = "--message";
- argv[2] = message;
- argc = 3;
+ argv[argc++] = "--message";
+ argv[argc++] = message;
}
+
+ argv[argc] = NULL;
gnome_client_set_clone_command (client, argc, argv);
gnome_client_set_restart_command (client, argc, argv);
return TRUE;
}
-/* gnomehello-save-session ***/
-/*** gnomehello-session-die */
static void
-session_die(GnomeClient* client, gpointer client_data)
+session_die (GnomeClient* client,
+ gpointer client_data)
{
gtk_main_quit ();
}
-/* gnomehello-session-die ***/
-
-/* gnomehello ***/
Index: menus.c
===================================================================
RCS file: /cvs/gnome/gnome-hello/src/menus.c,v
retrieving revision 1.9
diff -U5 -p -r1.9 menus.c
--- menus.c 7 Oct 2004 08:45:46 -0000 1.9
+++ menus.c 17 Nov 2004 22:32:23 -0000
@@ -16,95 +16,92 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-/*** gnomehello-menus */
-
#include <config.h>
+#include <glib/gi18n.h>
#include "menus.h"
#include "app.h"
-static void nothing_cb(GtkWidget* widget, gpointer data);
-static void new_app_cb(GtkWidget* widget, gpointer data);
-static void close_cb (GtkWidget* widget, gpointer data);
-static void exit_cb (GtkWidget* widget, gpointer data);
-static void about_cb (GtkWidget* widget, gpointer data);
-
-
-static GnomeUIInfo file_menu [] = {
- GNOMEUIINFO_MENU_NEW_ITEM(N_("_New Hello"),
- N_("Create a new hello"),
- new_app_cb, NULL),
-
- GNOMEUIINFO_MENU_OPEN_ITEM(nothing_cb, NULL),
-
- GNOMEUIINFO_MENU_SAVE_ITEM(nothing_cb, NULL),
-
- GNOMEUIINFO_MENU_SAVE_AS_ITEM(nothing_cb, NULL),
-
- GNOMEUIINFO_SEPARATOR,
-
- GNOMEUIINFO_MENU_CLOSE_ITEM(close_cb, NULL),
-
- GNOMEUIINFO_MENU_EXIT_ITEM(exit_cb, NULL),
-
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo edit_menu [] = {
- GNOMEUIINFO_MENU_CUT_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_COPY_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_PASTE_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_SELECT_ALL_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_CLEAR_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_UNDO_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_REDO_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_FIND_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_FIND_AGAIN_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_REPLACE_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_MENU_PROPERTIES_ITEM(nothing_cb, NULL),
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo help_menu [] = {
- GNOMEUIINFO_HELP ("gnome-hello"),
-
- GNOMEUIINFO_MENU_ABOUT_ITEM(about_cb, NULL),
-
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu [] = {
- GNOMEUIINFO_MENU_FILE_TREE(file_menu),
- GNOMEUIINFO_MENU_EDIT_TREE(edit_menu),
- GNOMEUIINFO_MENU_HELP_TREE(help_menu),
- GNOMEUIINFO_END
+static void nothing_action_callback (GtkAction* action, gpointer data);
+static void new_action_callback (GtkAction* action, gpointer data);
+static void close_action_callback (GtkAction* action, gpointer data);
+static void quit_action_callback (GtkAction* action, gpointer data);
+static void about_action_callback (GtkAction* action, gpointer data);
+
+static const gchar *ui =
+ "<ui>"
+ " <menubar>"
+ " <menu action='file'>"
+ " <menuitem action='new'/>"
+ " <menuitem action='open'/>"
+ " <menuitem action='save'/>"
+ " <menuitem action='save-as'/>"
+ " <separator/>"
+ " <menuitem action='close'/>"
+ " <menuitem action='quit'/>"
+ " </menu>"
+ " <menu action='edit'>"
+ " <menuitem action='cut'/>"
+ " <menuitem action='copy'/>"
+ " <menuitem action='paste'/>"
+ " <menuitem action='select-all'/>"
+ " <menuitem action='clear'/>"
+ " <separator/>"
+ " <menuitem action='undo'/>"
+ " <menuitem action='redo'/>"
+ " <separator/>"
+ " <menuitem action='find'/>"
+ " <menuitem action='find-again'/>"
+ " <menuitem action='replace'/>"
+ " <separator/>"
+ " <menuitem action='properties'/>"
+ " </menu>"
+ " <menu action='help'>"
+ " <menuitem action='contents'/>"
+ " <menuitem action='about'/>"
+ " </menu>"
+ " </menubar>"
+ " <toolbar>"
+ " <toolitem action='new'/>"
+ " <separator/>"
+ " <toolitem action='prev'/>"
+ " <toolitem action='next'/>"
+ " </toolbar>"
+ "</ui>";
+
+static GtkActionEntry entries[] =
+{
+ { "file", NULL, N_("_File"), NULL, NULL, NULL },
+ { "edit", NULL, N_("_Edit"), NULL, NULL, NULL },
+ { "help", NULL, N_("_Help"), NULL, NULL, NULL },
+ { "new", GTK_STOCK_NEW, N_("_New"), "<Ctrl>N", NULL, G_CALLBACK (new_action_callback) },
+ { "open", GTK_STOCK_OPEN, N_("_Open"), "<Ctrl>O", NULL, G_CALLBACK (nothing_action_callback) },
+ { "save", GTK_STOCK_SAVE, N_("_Save"), "<Ctrl>S", NULL, G_CALLBACK (nothing_action_callback) },
+ { "save-as", GTK_STOCK_SAVE_AS, N_("Save _As"), "<Ctrl><Shift>S", NULL, G_CALLBACK (nothing_action_callback) },
+ { "close", GTK_STOCK_CLOSE, N_("_Close"), "<Ctrl>W", NULL, G_CALLBACK (close_action_callback) },
+ { "quit", GTK_STOCK_QUIT, N_("_Quit"), "<Ctrl>Q", NULL, G_CALLBACK (quit_action_callback) },
+ { "cut", GTK_STOCK_CUT, N_("Cu_t"), "<Ctrl>X", NULL, G_CALLBACK (nothing_action_callback) },
+ { "copy", GTK_STOCK_COPY, N_("_Copy"), "<Ctrl>C", NULL, G_CALLBACK (nothing_action_callback) },
+ { "paste", GTK_STOCK_PASTE, N_("_Paste"), "<Ctrl>V", NULL, G_CALLBACK (nothing_action_callback) },
+ { "select-all", NULL, N_("Select _All"), "<Ctrl>A", NULL, G_CALLBACK (nothing_action_callback) },
+ { "clear", GTK_STOCK_CLEAR, N_("C_lear"), NULL, NULL, G_CALLBACK (nothing_action_callback) },
+ { "undo", GTK_STOCK_UNDO, N_("_Undo"), "<Ctrl>Z", NULL, G_CALLBACK (nothing_action_callback) },
+ { "redo", GTK_STOCK_REDO, N_("_Redo"), "<Ctrl><Shift>Z", NULL, G_CALLBACK (nothing_action_callback) },
+ { "find", GTK_STOCK_FIND, N_("_Find"), "<Ctrl>F", NULL, G_CALLBACK (nothing_action_callback) },
+ { "find-again", GTK_STOCK_FIND, N_("Find Ne_xt"), "<Ctrl>G", NULL, G_CALLBACK (nothing_action_callback) },
+ { "replace", GTK_STOCK_FIND_AND_REPLACE, N_("R_eplace"), "<Ctrl>R", NULL, G_CALLBACK (nothing_action_callback) },
+ { "properties", GTK_STOCK_PROPERTIES, N_("Pr_operties"), "<Ctrl>P", NULL, G_CALLBACK (nothing_action_callback) },
+ { "contents", GTK_STOCK_HELP, N_("_Contents"), "F1", NULL, G_CALLBACK (nothing_action_callback) },
+ { "about", GTK_STOCK_ABOUT, N_("_About"), NULL, NULL, G_CALLBACK (about_action_callback) },
+ { "prev", GTK_STOCK_GO_BACK, N_("_Previous"), NULL, NULL, G_CALLBACK (nothing_action_callback) },
+ { "next", GTK_STOCK_GO_FORWARD, N_("_Next"), NULL, NULL, G_CALLBACK (nothing_action_callback) },
};
-static GnomeUIInfo toolbar [] = {
- GNOMEUIINFO_ITEM_STOCK (N_("New"), N_("Create a new hello"), new_app_cb, GTK_STOCK_NEW),
-
- GNOMEUIINFO_SEPARATOR,
-
- GNOMEUIINFO_ITEM_STOCK (N_("Prev"), N_("Previous hello"), nothing_cb, GTK_STOCK_GO_BACK),
- GNOMEUIINFO_ITEM_STOCK (N_("Next"), N_("Next hello"), nothing_cb, GTK_STOCK_GO_FORWARD),
-
- GNOMEUIINFO_END
-};
-
-
-void
-hello_install_menus_and_toolbar(GtkWidget* app)
-{
- gnome_app_create_toolbar_with_data(GNOME_APP(app), toolbar, app);
- gnome_app_create_menus_with_data(GNOME_APP(app), menu, app);
- gnome_app_install_menu_hints(GNOME_APP(app), menu);
-}
-
static void
-nothing_cb(GtkWidget* widget, gpointer data)
+nothing_action_callback (GtkAction* action, gpointer data)
{
GtkWidget* dialog;
GtkWidget* app;
app = (GtkWidget*) data;
@@ -118,83 +115,90 @@ nothing_cb(GtkWidget* widget, gpointer d
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
static void
-new_app_cb(GtkWidget* widget, gpointer data)
+new_action_callback (GtkAction* action, gpointer data)
{
GtkWidget* app;
- app = hello_app_new(_("Hello, World!"), NULL, NULL);
+ app = hello_app_new (_("Hello, World!"), NULL, NULL);
- gtk_widget_show_all(app);
+ gtk_widget_show_all (app);
}
static void
-close_cb(GtkWidget* widget, gpointer data)
+close_action_callback (GtkAction* action, gpointer data)
{
GtkWidget* app;
app = (GtkWidget*) data;
- hello_app_close(app);
+ hello_app_close (app);
}
static void
-exit_cb(GtkWidget* widget, gpointer data)
+quit_action_callback (GtkAction* action, gpointer data)
{
- gtk_main_quit();
+ gtk_main_quit ();
}
static void
-about_cb(GtkWidget* widget, gpointer data)
+about_action_callback (GtkAction* action, gpointer data)
{
static GtkWidget* dialog = NULL;
GtkWidget* app;
app = (GtkWidget*) data;
if (dialog != NULL)
{
- gtk_window_present(GTK_WINDOW(dialog));
+ gtk_window_present (GTK_WINDOW (dialog));
}
else
{
+ const gchar *copyright = "\xc2\xa9 1999 Havoc Pennington";
const gchar *authors[] = {
"Havoc Pennington <hp pobox com>",
NULL
};
- GdkPixbuf* logo;
- GdkScreen *screen;
- GtkIconTheme *icon_theme;
-
- /* XXXX this does not follow icon theme changes ... */
- screen = gtk_widget_get_screen(app);
- icon_theme = gtk_icon_theme_get_for_screen(screen);
- logo = gtk_icon_theme_load_icon(icon_theme,
- "gnome-hello-logo",
- 48, 0, NULL);
-
- dialog = gnome_about_new (_("GNOME Hello"),
- VERSION,
- "(C) 1999 Havoc Pennington",
- _("A sample GNOME application."),
- authors,
- NULL,
- NULL,
- logo);
+
+ dialog = gtk_about_dialog_new ();
+
+ gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (dialog), _("GNOME Hello"));
+ gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (dialog), VERSION);
+ gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (dialog), copyright);
+ gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (dialog), authors);
+ gtk_about_dialog_set_translator_credits (GTK_ABOUT_DIALOG (dialog), _("translator-credits"));
+ gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG (dialog), "gnome-hello-logo");
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (app));
- if (logo)
- g_object_unref (logo);
- g_signal_connect(G_OBJECT(dialog),
- "destroy",
- G_CALLBACK(gtk_widget_destroyed),
- &dialog);
+ g_object_add_weak_pointer (G_OBJECT (dialog), (void**) &dialog);
- gtk_widget_show(dialog);
+ gtk_widget_show (dialog);
}
}
+GtkUIManager *
+create_ui_manager (const gchar *group, gpointer user_data)
+{
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+ GError *error;
+
+ action_group = gtk_action_group_new (group);
+ gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), user_data);
+
+ ui_manager = gtk_ui_manager_new ();
+ gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-/* gnomehello-menus ***/
+ error = NULL;
+ if (!gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, &error))
+ {
+ g_message ("Building menus failed: %s", error->message);
+ g_error_free (error);
+ exit (1);
+ }
+
+ return ui_manager;
+}
Index: menus.h
===================================================================
RCS file: /cvs/gnome/gnome-hello/src/menus.h,v
retrieving revision 1.1
diff -U5 -p -r1.1 menus.h
--- menus.h 28 Jun 1999 01:49:29 -0000 1.1
+++ menus.h 17 Nov 2004 22:32:23 -0000
@@ -16,18 +16,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-/*** gnomehello-menush */
-
#ifndef GNOMEHELLO_MENUS_H
#define GNOMEHELLO_MENUS_H
-#include <gnome.h>
-
-void hello_install_menus_and_toolbar(GtkWidget* app);
-
-#endif
+#include <gtk/gtk.h>
-/* gnomehello-menush ***/
+GtkUIManager *create_ui_manager (const gchar *group, gpointer user_data);
+#endif
Attachment:
signature.asc
Description: This is a digitally signed message part