[libgda] Control center adaptations to avoid using deprecated APIs and package resources



commit 0ed1452107f0cb6b412b960e65ab5d2932b02794
Author: Vivien Malerba <malerba gnome-db org>
Date:   Thu Apr 10 21:06:57 2014 +0200

    Control center adaptations to avoid using deprecated APIs and package resources

 control-center/.gitignore                    |    1 +
 control-center/Makefile.am                   |   24 ++-
 control-center/control-center.gresource.xml  |   12 ++
 control-center/dsn-config.c                  |   27 +--
 control-center/dsn-properties-dialog.c       |   20 +--
 control-center/gda-control-center-newcnc.png |  Bin 7910 -> 0 bytes
 control-center/gdaui-bar.c                   |   83 +--------
 control-center/gdaui-bar.h                   |    6 +-
 control-center/gdaui-dsn-assistant.c         |    1 +
 control-center/gdaui-login-dialog.c          |   15 +-
 control-center/main.c                        |  231 +++++++++++---------------
 control-center/menus.ui                      |   41 +++++
 control-center/provider-config.c             |    9 +-
 doc/C/packaging_ui.xml                       |    9 +-
 installers/Windows/make-zip-setup.sh         |    4 -
 15 files changed, 213 insertions(+), 270 deletions(-)
---
diff --git a/control-center/.gitignore b/control-center/.gitignore
index b170929..498446e 100644
--- a/control-center/.gitignore
+++ b/control-center/.gitignore
@@ -1,2 +1,3 @@
 gda-control-center-6.0
 gda-control-center-6.*.desktop
+control-center.gresources.c
diff --git a/control-center/Makefile.am b/control-center/Makefile.am
index 3227f36..c8c46f2 100644
--- a/control-center/Makefile.am
+++ b/control-center/Makefile.am
@@ -31,7 +31,16 @@ gda_control_center_6_0_SOURCES=\
        dsn-properties-dialog.h \
        main.c \
        provider-config.c \
-       provider-config.h
+       provider-config.h \
+       control-center.gresources.c
+
+# resources
+RESOURCES=\
+       menus.ui \
+       gda-control-center.png
+
+control-center.gresources.c: control-center.gresource.xml $(RESOURCES)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) 
--sourcedir=$(srcdir)/../libgda-ui/data --generate-source $(srcdir)/control-center.gresource.xml
 
 if PLATFORM_WIN32
 EXTRALDFLAGS=-mwindows
@@ -59,14 +68,13 @@ desktopdir=$(datadir)/applications
 Desktop_in_files = gda-control-center-6.0.desktop.in
 desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop)
 
-# icons
-iconsdir=$(datadir)/libgda-6.0/pixmaps
-icons_DATA= \
-       gda-control-center.png \
-       gda-control-center-newcnc.png
-
 EXTRA_DIST = \
+       control-center.gresource.xml \
        control-center-res.rc \
        gda-control-center.ico \
-       $(Desktop_in_files) $(icons_DATA)
+       $(Desktop_in_files)
+
 DISTCLEANFILES = $(desktop_DATA)
+
+CLEANFILES = \
+       control-center.gresources.c
diff --git a/control-center/control-center.gresource.xml b/control-center/control-center.gresource.xml
new file mode 100644
index 0000000..be50c42
--- /dev/null
+++ b/control-center/control-center.gresource.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/application">
+    <file compressed="true">menus.ui</file>
+  </gresource>
+  <gresource prefix="/images">
+    <file compressed="no">gda-control-center.png</file>
+  </gresource>
+  <gresource prefix="/images">
+    <file compressed="no">gdaui-generic.png</file>
+  </gresource>
+</gresources>
diff --git a/control-center/dsn-config.c b/control-center/dsn-config.c
index e74ab62..cd4243e 100644
--- a/control-center/dsn-config.c
+++ b/control-center/dsn-config.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  *
@@ -63,17 +63,12 @@ list_popup_delete_cb (G_GNUC_UNUSED GtkWidget *menu, gpointer user_data)
 
 static GtkWidget *
 new_menu_item (const gchar *label,
-                       gboolean pixmap,
-                       GCallback cb_func,
-                       gpointer user_data)
+              GCallback cb_func,
+              gpointer user_data)
 {
        GtkWidget *item;
 
-       if (pixmap)
-               item = gtk_image_menu_item_new_from_stock (label, NULL);
-       else
-               item = gtk_menu_item_new_with_mnemonic (label);
-       
+       item = gtk_menu_item_new_with_mnemonic (label);
        g_signal_connect (G_OBJECT (item), "activate",
                          G_CALLBACK (cb_func), user_data);
 
@@ -87,12 +82,10 @@ list_popup_cb (GdauiRawGrid *grid, GtkMenu *menu, gpointer user_data)
        gboolean ok;
        GArray *selection;
 
-       item_delete = new_menu_item (GTK_STOCK_DELETE,
-                                    TRUE,
+       item_delete = new_menu_item (_("_Delete"),
                                     G_CALLBACK (list_popup_delete_cb),
                                     user_data);
-       item_properties = new_menu_item (GTK_STOCK_PROPERTIES,
-                                        TRUE,
+       item_properties = new_menu_item (_("_Properties"),
                                         G_CALLBACK (list_popup_properties_cb),
                                         user_data);
 
@@ -138,10 +131,8 @@ dsn_config_new (void)
        priv->title = gdaui_bar_new (title);
        g_free (title);
 
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gdaui-generic.png", NULL);
-       gdaui_bar_set_icon_from_file (GDAUI_BAR (priv->title), path);
-       g_free (path);
+       gdaui_bar_set_icon_from_resource (GDAUI_BAR (priv->title), "/images/gdaui-generic.png");
+
        gtk_box_pack_start (GTK_BOX (dsn), priv->title, FALSE, FALSE, 0);
        gtk_widget_show (priv->title);
 
@@ -178,7 +169,7 @@ dsn_config_new (void)
        gtk_box_pack_start (GTK_BOX (dsn), box, FALSE, FALSE, 0);
        gtk_widget_show (box);
 
-       image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
+       image = gtk_image_new_from_icon_name ("dialog-information", GTK_ICON_SIZE_DIALOG);
         gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
        gtk_widget_show (image);
        gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
diff --git a/control-center/dsn-properties-dialog.c b/control-center/dsn-properties-dialog.c
index 1c58e0f..b80b86b 100644
--- a/control-center/dsn-properties-dialog.c
+++ b/control-center/dsn-properties-dialog.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  *
@@ -38,8 +38,8 @@ enum {
 static gboolean
 data_source_info_equal (const GdaDsnInfo *info1, const GdaDsnInfo *info2)
 {
-       #define str_is_equal(x,y) (((x) && (y) && !strcmp ((x),(y))) || (!(x) && (!y)))
-        if (!info1 && !info2)
+#define str_is_equal(x,y) (((x) && (y) && !strcmp ((x),(y))) || (!(x) && (!y)))
+       if (!info1 && !info2)
                 return TRUE;
         if (!info1 || !info2)
                 return FALSE;
@@ -75,7 +75,7 @@ dsn_changed_cb (GdauiDsnEditor *config, gpointer user_data)
 static void 
 data_source_info_free (GdaDsnInfo *info)
 {
-       g_free (info->provider); 
+       g_free (info->provider);
        g_free (info->cnc_string); 
        g_free (info->description);
        g_free (info->auth_string);
@@ -93,7 +93,6 @@ dsn_properties_dialog (GtkWindow *parent, const gchar *dsn)
 {
        GdaDsnInfo *dsn_info, *priv_dsn_info;
        GtkWidget *dialog, *props, *label, *hbox;
-       GdkPixbuf *icon;
        gchar *str;
        gint result;
        GdaProviderInfo *pinfo;
@@ -108,8 +107,8 @@ dsn_properties_dialog (GtkWindow *parent, const gchar *dsn)
                                              parent, GTK_DIALOG_DESTROY_WITH_PARENT,
                                              _("Test"), TEST_BUTTON,
                                              _("Browse"), BROWSE_BUTTON,
-                                             GTK_STOCK_REVERT_TO_SAVED, REVERT_BUTTON,
-                                             GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
+                                             _("_Revert"), REVERT_BUTTON,
+                                             _("Close"), GTK_RESPONSE_OK,
                                              NULL);
        gtk_window_set_default_size (GTK_WINDOW (dialog), 450, 300);
        gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), TEST_BUTTON, pinfo ? TRUE : FALSE);
@@ -132,10 +131,9 @@ dsn_properties_dialog (GtkWindow *parent, const gchar *dsn)
        g_object_set_data_full (G_OBJECT (dialog), "old_dsn_info", priv_dsn_info,
                                (GDestroyNotify) data_source_info_free);
 
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gda-control-center.png", 
NULL);
-       icon = gdk_pixbuf_new_from_file (path, NULL);
-       g_free (path);
+
+       GdkPixbuf *icon;
+       icon = gdk_pixbuf_new_from_resource ("/images/gda-control-center.png", NULL);
        if (icon) {
                gtk_window_set_icon (GTK_WINDOW (dialog), icon);
                g_object_unref (icon);
diff --git a/control-center/gdaui-bar.c b/control-center/gdaui-bar.c
index 1082149..af42b96 100644
--- a/control-center/gdaui-bar.c
+++ b/control-center/gdaui-bar.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -388,36 +388,14 @@ gdaui_bar_set_icon_from_file (GdauiBar *bar, const gchar *file)
 }
 
 /**
- * gdaui_set_icon_from_stock
- * @bar: a #GdauiBar widget.
- * @stock_id: a stock icon name.
- * @size: a tock icon size.
- *
- * Set the icon using a stock icon for the given gray bar.
+ * gdaui_bar_set_icon_from_resource:
  */
 void
-gdaui_bar_set_icon_from_stock (GdauiBar *bar, const gchar *stock_id, GtkIconSize size)
+gdaui_bar_set_icon_from_resource (GdauiBar *bar, const gchar *resource_name)
 {
-        g_return_if_fail (GDAUI_IS_BAR (bar));
-
-        gtk_image_set_from_stock (GTK_IMAGE (bar->priv->icon), stock_id, size);
-        gdaui_bar_set_show_icon (bar, TRUE);
-}
-
-/**
- * gdaui_set_icon_from_pixbuf
- * @bar: a #GdauiBar widget.
- * @pixbuf: a #GdkPixbuf
- *
- * Set the icon using a stock icon for the given gray bar.
- */
-void
-gdaui_bar_set_icon_from_pixbuf (GdauiBar *bar, GdkPixbuf *pixbuf)
-{
-        g_return_if_fail (GDAUI_IS_BAR (bar));
-
-        gtk_image_set_from_pixbuf (GTK_IMAGE (bar->priv->icon), pixbuf);
-        gdaui_bar_set_show_icon (bar, TRUE);
+       g_return_if_fail (GDAUI_IS_BAR (bar));
+       gtk_image_set_from_resource (GTK_IMAGE (bar->priv->icon), resource_name);
+       gdaui_bar_set_show_icon (bar, TRUE);
 }
 
 /**
@@ -457,49 +435,6 @@ gdaui_bar_get_show_icon (GdauiBar *bar)
         return bar->priv->show_icon;
 }
 
-/**
- * gdaui_bar_add_button_from_stock:
- * @bar: a #GdauiBar
- * @stock_id: the stock name of the button to add
- *
- * Returns: (transfer none): the created #GtkButton
- */
-GtkWidget *
-gdaui_bar_add_button_from_stock (GdauiBar *bar, const gchar *stock_id)
-{
-       g_return_val_if_fail (GDAUI_IS_BAR (bar), NULL);
-       g_return_val_if_fail (stock_id && *stock_id, NULL);
-
-       GtkWidget *vb, *button, *img;
-
-       vb = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
-       gtk_button_box_set_layout (GTK_BUTTON_BOX (vb), GTK_BUTTONBOX_CENTER);
-       gtk_box_pack_start (GTK_BOX (bar->priv->action_area), vb, FALSE, FALSE, 0);
-
-       button = gtk_button_new ();
-       img = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
-       gtk_container_add (GTK_CONTAINER (button), img);
-       gtk_box_pack_start (GTK_BOX (vb), button, FALSE, FALSE, 0);
-       g_object_set (G_OBJECT (button), "label", NULL, NULL);
-
-       /* CSS theming */
-       GtkStyleContext *context;
-       context = gtk_widget_get_style_context (vb);
-       gtk_style_context_add_provider (context, css_provider, G_MAXUINT);
-       gtk_style_context_add_class (context, "gdauibar_button");
-
-       context = gtk_widget_get_style_context (button);
-       gtk_style_context_add_provider (context, css_provider, G_MAXUINT);
-       gtk_style_context_add_class (context, "gdauibar_button");
-
-       context = gtk_widget_get_style_context (img);
-       gtk_style_context_add_provider (context, css_provider, G_MAXUINT);
-       gtk_style_context_add_class (context, "gdauibar_button");
-
-       gtk_widget_show_all (vb);
-       return button;
-}
-
 static void
 find_icon_pressed_cb (GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_pos,
                      G_GNUC_UNUSED GdkEvent *event, G_GNUC_UNUSED gpointer data)
@@ -538,9 +473,9 @@ gdaui_bar_add_search_entry (GdauiBar *bar)
        gtk_style_context_add_provider (context, css_provider, G_MAXUINT);
        gtk_style_context_add_class (context, "gdauibar_entry");
 
-       gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
-                                      GTK_ENTRY_ICON_SECONDARY,
-                                      GTK_STOCK_CLEAR);
+       gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry),
+                                          GTK_ENTRY_ICON_SECONDARY,
+                                          "edit-clear");
        g_signal_connect (entry, "icon-press",
                          G_CALLBACK (find_icon_pressed_cb), NULL);
 
diff --git a/control-center/gdaui-bar.h b/control-center/gdaui-bar.h
index 0c5db93..1350d60 100644
--- a/control-center/gdaui-bar.h
+++ b/control-center/gdaui-bar.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -56,12 +56,10 @@ GType        gdaui_bar_get_type              (void) G_GNUC_CONST;
 GtkWidget   *gdaui_bar_new                   (const gchar *text);
 const gchar *gdaui_bar_get_text              (GdauiBar *bar);
 void         gdaui_bar_set_text              (GdauiBar *bar, const gchar *text);
-void         gdaui_bar_set_icon_from_pixbuf  (GdauiBar *bar, GdkPixbuf *pixbuf);
 void         gdaui_bar_set_icon_from_file    (GdauiBar *bar, const gchar *file);
-void         gdaui_bar_set_icon_from_stock   (GdauiBar *bar, const gchar *stock_id, GtkIconSize size);
+void         gdaui_bar_set_icon_from_resource(GdauiBar *bar, const gchar *resource_name);
 void         gdaui_bar_set_show_icon         (GdauiBar *bar, gboolean show);
 gboolean     gdaui_bar_get_show_icon         (GdauiBar *bar);
-GtkWidget   *gdaui_bar_add_button_from_stock (GdauiBar *bar, const gchar *stock_id);
 GtkWidget   *gdaui_bar_add_search_entry      (GdauiBar *bar);
 
 G_END_DECLS
diff --git a/control-center/gdaui-dsn-assistant.c b/control-center/gdaui-dsn-assistant.c
index b697e0a..7ab334c 100644
--- a/control-center/gdaui-dsn-assistant.c
+++ b/control-center/gdaui-dsn-assistant.c
@@ -720,6 +720,7 @@ gdaui_dsn_assistant_new (void)
        GdauiDsnAssistant *assistant;
 
        assistant = g_object_new (GDAUI_TYPE_DSN_ASSISTANT, NULL);
+       gtk_window_set_default_size (GTK_WINDOW (assistant), 500, -1);
        return GTK_WIDGET (assistant);
 }
 
diff --git a/control-center/gdaui-login-dialog.c b/control-center/gdaui-login-dialog.c
index 3d3f506..7c7db1b 100644
--- a/control-center/gdaui-login-dialog.c
+++ b/control-center/gdaui-login-dialog.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  *
@@ -95,7 +95,6 @@ gdaui_login_dialog_init (GdauiLoginDialog *dialog, G_GNUC_UNUSED GdauiLoginDialo
 {
        GtkWidget *hbox, *vbox, *image, *label;
        GtkWidget *nb;
-       GdkPixbuf *icon;
        GtkWidget *dcontents;
 
        g_return_if_fail (GDAUI_IS_LOGIN_DIALOG (dialog));
@@ -103,8 +102,8 @@ gdaui_login_dialog_init (GdauiLoginDialog *dialog, G_GNUC_UNUSED GdauiLoginDialo
        dcontents = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
        dialog->priv = g_new0 (GdauiLoginDialogPrivate, 1);
         
-       gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-       gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CONNECT, GTK_RESPONSE_OK);
+       gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Cancel"), GTK_RESPONSE_CANCEL);
+       gtk_dialog_add_button (GTK_DIALOG (dialog), _("C_onnect"), GTK_RESPONSE_OK);
        gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
 
        gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
@@ -116,7 +115,7 @@ gdaui_login_dialog_init (GdauiLoginDialog *dialog, G_GNUC_UNUSED GdauiLoginDialo
        gtk_widget_show (hbox);
        gtk_box_pack_start (GTK_BOX (dcontents), hbox, TRUE, TRUE, 0);
 
-       image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG);
+       image = gtk_image_new_from_icon_name ("dialog-password", GTK_ICON_SIZE_DIALOG);
         gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
        gtk_widget_show (image);
        gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 5);
@@ -152,10 +151,8 @@ gdaui_login_dialog_init (GdauiLoginDialog *dialog, G_GNUC_UNUSED GdauiLoginDialo
        g_signal_connect (G_OBJECT (dialog->priv->login), "changed",
                          G_CALLBACK (login_changed_cb), dialog);
 
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gdaui-generic.png", NULL);
-       icon = gdk_pixbuf_new_from_file (path, NULL);
-       g_free (path);
+       GdkPixbuf *icon;
+       icon = gdk_pixbuf_new_from_resource ("/images/gdaui-generic.png", NULL);
        if (icon) {
                gtk_window_set_icon (GTK_WINDOW (dialog), icon);
                g_object_unref (icon);
diff --git a/control-center/main.c b/control-center/main.c
index 6a79250..58f8227 100644
--- a/control-center/main.c
+++ b/control-center/main.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  *
@@ -29,11 +29,10 @@
 
 GtkApplication *app;
 GtkWindow *main_window;
-GtkActionGroup *actions;
 
-#define DSN_PAGE      "DSN_Page"
-#define PROVIDER_PAGE "Provider_Page"
-static GtkWidget *create_main_notebook (void);
+#define DSN_PAGE "DSN"
+#define NOTEBOOK "Nb"
+static GtkWidget *create_main_notebook (GtkApplicationWindow *app_window);
 
 static void
 show_error (GtkWindow *parent, const gchar *format, ...)
@@ -60,7 +59,7 @@ show_error (GtkWindow *parent, const gchar *format, ...)
                                                      GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
                                                      GTK_BUTTONS_CLOSE, "%s", str);
         gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
-                                      gtk_button_new_from_stock (GTK_STOCK_OK),
+                                      gtk_button_new_with_mnemonic (_("_Ok")),
                                       GTK_RESPONSE_OK);
         gtk_widget_show_all (dialog);
         gtk_dialog_run (GTK_DIALOG (dialog));
@@ -90,7 +89,7 @@ assistant_closed_cb (GdauiDsnAssistant *assistant, G_GNUC_UNUSED gpointer user_d
 }
 
 static void
-file_new_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
+file_new_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, G_GNUC_UNUSED gpointer user_data)
 {
        GtkWidget *assistant;
 
@@ -103,14 +102,14 @@ file_new_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
 }
 
 static void
-file_properties_cb (G_GNUC_UNUSED GtkAction *action, gpointer user_data)
+file_properties_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, gpointer user_data)
 {
-       GtkWidget *nb = GTK_WIDGET (user_data);
-       GtkWidget *dsn, *provider, *current_widget;
+       GtkWidget *app_window = GTK_WIDGET (user_data);
+       GtkWidget *nb, *dsn, *current_widget;
        gint current;
 
-       dsn = g_object_get_data (G_OBJECT (nb), DSN_PAGE);
-       provider = g_object_get_data (G_OBJECT (nb), PROVIDER_PAGE);
+       dsn = g_object_get_data (G_OBJECT (app_window), DSN_PAGE);
+       nb = g_object_get_data (G_OBJECT (app_window), NOTEBOOK);
 
        current = gtk_notebook_get_current_page (GTK_NOTEBOOK (nb));
        if (current == -1)
@@ -122,14 +121,14 @@ file_properties_cb (G_GNUC_UNUSED GtkAction *action, gpointer user_data)
 }
 
 static void
-file_delete_cb (G_GNUC_UNUSED GtkAction *action, gpointer user_data)
+file_delete_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, gpointer user_data)
 {
-       GtkWidget *nb = GTK_WIDGET (user_data);
-       GtkWidget *dsn, *provider, *current_widget;
+       GtkWidget *app_window = GTK_WIDGET (user_data);
+       GtkWidget *nb, *dsn, *current_widget;
        gint current;
 
-       dsn = g_object_get_data (G_OBJECT (nb), DSN_PAGE);
-       provider = g_object_get_data (G_OBJECT (nb), PROVIDER_PAGE);
+       dsn = g_object_get_data (G_OBJECT (app_window), DSN_PAGE);
+       nb = g_object_get_data (G_OBJECT (app_window), NOTEBOOK);
 
        current = gtk_notebook_get_current_page (GTK_NOTEBOOK (nb));
        if (current == -1)
@@ -141,13 +140,13 @@ file_delete_cb (G_GNUC_UNUSED GtkAction *action, gpointer user_data)
 }
 
 static void
-window_closed_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
+window_closed_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, G_GNUC_UNUSED gpointer user_data)
 {
        g_application_quit (G_APPLICATION (app));
 }
 
 static void
-about_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
+about_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, G_GNUC_UNUSED gpointer user_data)
 {
        GdkPixbuf *icon;
        GtkWidget *dialog;
@@ -168,22 +167,20 @@ about_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
                "Christian Rose <menthos menthos com> Swedish translations\n" \
                "Kjartan Maraas <kmaraas online no> Norwegian translation\n";
 
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gda-control-center.png", 
NULL);
-       icon = gdk_pixbuf_new_from_file (path, NULL);
-       g_free (path);
 
        dialog = gtk_about_dialog_new ();
        gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (dialog), _("Database access control center"));
        gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (dialog), PACKAGE_VERSION);
-       gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (dialog), "(C) 1998 - 2011 GNOME Foundation");
+       gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (dialog), "(C) 1998 - 2014 GNOME Foundation");
        gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (dialog), _("Database access services for the GNOME 
Desktop"));
        gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (dialog), "GNU Lesser General Public License");
        gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (dialog), "http://www.gnome-db.org";);
        gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (dialog), authors);
        gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (dialog), documenters);
        gtk_about_dialog_set_translator_credits (GTK_ABOUT_DIALOG (dialog), translator_credits);
-       gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (dialog), icon);
+       icon = gdk_pixbuf_new_from_resource ("/images/gda-control-center.png", NULL);
+       if (icon)
+               gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (dialog), icon);
        g_signal_connect (G_OBJECT (dialog), "response",
                          G_CALLBACK (gtk_widget_destroy),
                          dialog);
@@ -192,89 +189,66 @@ about_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED gpointer user_data)
 
 }
 
-static GtkActionEntry ui_actions[] = {
-       { "Database", NULL, N_("_Data source"), NULL, N_("Database"), NULL },
-       { "DatabaseClose", GTK_STOCK_CLOSE, N_("_Close"), NULL, N_("Close this window"), G_CALLBACK 
(window_closed_cb) },
-       { "DatabaseNew", GTK_STOCK_NEW, N_("_New datasource"), NULL, N_("Create new data source"), G_CALLBACK 
(file_new_cb) },
-       { "DatabaseDelete", GTK_STOCK_DELETE, N_("_Delete datasource"), NULL, N_("Delete selected data 
source"), G_CALLBACK (file_delete_cb) },
-       { "DatabaseProperties", GTK_STOCK_PROPERTIES, N_("_Properties"), NULL, N_("Edit properties for 
selected data source"), G_CALLBACK (file_properties_cb) },
-       { "About", NULL, N_("_About"), NULL, N_("About"), NULL },
-       { "HelpAbout", GTK_STOCK_ABOUT, N_("_About"), NULL, N_("About GNOME-DB"), G_CALLBACK (about_cb) }
+static GActionEntry app_entries[] = {
+       { "quit", window_closed_cb, NULL, NULL, NULL },
 };
 
-static const gchar *ui_actions_info =
-        "<ui>"
-       "  <menubar name='MenuBar'>"
-       "    <menu name='Database' action='Database'>"
-       "      <menuitem name='DatabaseNew' action= 'DatabaseNew'/>"
-       "      <menuitem name='DatabaseProperties' action= 'DatabaseProperties'/>"
-       "      <menuitem name='DatabaseDelete' action= 'DatabaseDelete'/>"
-       "      <separator/>"
-       "      <menuitem name='DatabaseClose' action= 'DatabaseClose'/>"
-       "    </menu>"
-       "    <menu name='About' action='About'>"
-       "      <menuitem name='HelpAbout' action= 'HelpAbout'/>"
-       "    </menu>"
-       "  </menubar>"
-        "  <toolbar  name='ToolBar'>"
-        "    <toolitem action='DatabaseNew'/>"
-        "    <toolitem action='DatabaseProperties'/>"
-        "    <toolitem action='DatabaseDelete'/>"
-        "  </toolbar>"
-        "</ui>";
+static GActionEntry win_entries[] = {
+       { "DatasourceNew", file_new_cb, NULL, NULL, NULL },
+       { "DatasourceDelete", file_delete_cb, NULL, NULL, NULL },
+       { "DatasourceProperties", file_properties_cb, NULL, NULL, NULL },
+       { "about", about_cb, NULL, NULL, NULL }
+};
 
 static void
-prepare_menu (GtkBox *vbox, GtkWidget *nb)
+startup (GApplication *app)
 {
-        GtkWidget *menubar;
-       GtkWidget *toolbar;
-       GtkUIManager *ui;
-
-        actions = gtk_action_group_new ("Actions");
-       gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);
-        gtk_action_group_add_actions (actions, ui_actions, G_N_ELEMENTS (ui_actions), nb);
-
-        ui = gtk_ui_manager_new ();
-        gtk_ui_manager_insert_action_group (ui, actions, 0);
-        gtk_ui_manager_add_ui_from_string (ui, ui_actions_info, -1, NULL);
-
-        menubar = gtk_ui_manager_get_widget (ui, "/MenuBar");
-        gtk_box_pack_start (vbox, menubar, FALSE, FALSE, 0);
-       gtk_widget_show (menubar);
-
-       toolbar = gtk_ui_manager_get_widget (ui, "/ToolBar");
-        gtk_box_pack_start (vbox, toolbar, FALSE, FALSE, 0);
-       gtk_widget_show (toolbar);
-
-       GtkAction *action;
-       action = gtk_action_group_get_action (actions, "DatabaseProperties");
-       g_object_set (G_OBJECT (action), "sensitive", FALSE, NULL);
-       action = gtk_action_group_get_action (actions, "DatabaseDelete");
-       g_object_set (G_OBJECT (action), "sensitive", FALSE, NULL);
-}
+       GtkBuilder *builder;
+       GMenuModel *appmenu;
+       GMenuModel *menubar;
 
+       builder = gtk_builder_new ();
+       g_assert (gtk_builder_add_from_resource (builder, "/application/menus.ui", NULL));
 
-static GtkWidget *
-create_main_window (void)
+       appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
+       menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
+
+       gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
+       gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
+
+       g_object_unref (builder);
+}
+
+static void
+activate (GApplication *app)
 {
-       GtkWidget *window, *vbox;
+       static GtkWidget *window = NULL;
+       if (window) {
+               gtk_window_present (GTK_WINDOW (window));
+               return;
+       }
+
+       GtkWidget *vbox;
        GtkWidget *nb;
-       GdkPixbuf *icon;
+
+       gdaui_init ();
 
        /* create the main window */
-       window = gtk_application_window_new (app);
+       window = gtk_application_window_new (GTK_APPLICATION (app));
        main_window = GTK_WINDOW (window);
-       gtk_window_set_title (GTK_WINDOW (window), _("Database access control center"));
+       gtk_window_set_title (GTK_WINDOW (window), _("Datasource access control center"));
        gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size (GTK_WINDOW (window), 650, 600);
-       g_signal_connect (G_OBJECT (window), "destroy",
-                         G_CALLBACK (window_closed_cb), NULL);
+
+       /* actions */
+       g_action_map_add_action_entries (G_ACTION_MAP (window),
+                                        win_entries, G_N_ELEMENTS (win_entries),
+                                        window);
+
 
        /* icon */
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gda-control-center.png", 
NULL);
-       icon = gdk_pixbuf_new_from_file (path, NULL);
-       g_free (path);
+       GdkPixbuf *icon;
+       icon = gdk_pixbuf_new_from_resource ("/images/gda-control-center.png", NULL);
        if (icon) {
                gtk_window_set_icon (GTK_WINDOW (window), icon);
                g_object_unref (icon);
@@ -285,37 +259,30 @@ create_main_window (void)
        gtk_container_add (GTK_CONTAINER (window), vbox);
        gtk_widget_show (vbox);
 
-       nb = create_main_notebook ();   
-       prepare_menu (GTK_BOX (vbox), nb);
-
+       nb = create_main_notebook (GTK_APPLICATION_WINDOW (window));
         gtk_container_set_border_width (GTK_CONTAINER (nb), 6);
        gtk_box_pack_start (GTK_BOX (vbox), nb, TRUE, TRUE, 0);
        gtk_widget_show (nb);
 
        gtk_widget_show (window);
-       return window;
-}
 
-static void
-activate (GtkApplication *app)
-{
-       static GtkWidget *window = NULL;
+       /* set actions start state */
+       GAction *action;
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "DatasourceProperties");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
 
-       if (! window) {
-               gdaui_init ();
-               window = create_main_window ();
-               gtk_window_set_application (GTK_WINDOW (window), app);
-               gtk_widget_show (window);
-       }
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "DatasourceDelete");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
 }
 
 int
 main (int argc, char *argv[])
 {
        gint status;
-       
-       app = gtk_application_new ("org.GnomeDb.GdaBrowser", G_APPLICATION_FLAGS_NONE);
+
+       app = gtk_application_new ("org.Libgda.Preferences", G_APPLICATION_FLAGS_NONE);
        g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
+       g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
        
        status = g_application_run (G_APPLICATION (app), argc, argv);
        
@@ -325,40 +292,40 @@ main (int argc, char *argv[])
 }
 
 static void
-dsn_selection_changed_cb (GdauiRawGrid *dbrawgrid, G_GNUC_UNUSED gboolean row_selected, G_GNUC_UNUSED 
gpointer data)
+dsn_selection_changed_cb (GdauiRawGrid *dbrawgrid, GtkApplicationWindow *main_window)
 {
-       GtkAction *action;
        GArray *selection;
-
        selection = gdaui_data_selector_get_selected_rows (GDAUI_DATA_SELECTOR (dbrawgrid));
 
-       action = gtk_action_group_get_action (actions, "DatabaseProperties");
-       g_object_set (G_OBJECT (action), "sensitive", selection ? TRUE : FALSE, NULL);
+       GAction *action;
+       action = g_action_map_lookup_action (G_ACTION_MAP (main_window), "DatasourceProperties");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), selection ? TRUE : FALSE);
 
-       action = gtk_action_group_get_action (actions, "DatabaseDelete");
-       g_object_set (G_OBJECT (action), "sensitive", selection ? TRUE : FALSE, NULL);
+       action = g_action_map_lookup_action (G_ACTION_MAP (main_window), "DatasourceDelete");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), selection ? TRUE : FALSE);
        if (selection)
                g_array_free (selection, TRUE);
 }
 
 static void
-main_nb_page_switched_cb (G_GNUC_UNUSED GtkNotebook *notebook, G_GNUC_UNUSED GtkWidget *page, guint 
page_num, G_GNUC_UNUSED gpointer data)
+main_nb_page_switched_cb (G_GNUC_UNUSED GtkNotebook *notebook, G_GNUC_UNUSED GtkWidget *page, guint page_num,
+                         GtkApplicationWindow *main_window)
 {
        gboolean show;
-       GtkAction *action;
+       show = page_num == 0 ? TRUE : FALSE;
 
-       if (!actions)
-               return;
+       GAction *action;
+       action = g_action_map_lookup_action (G_ACTION_MAP (main_window), "DatasourceProperties");
+       //g_object_set (G_OBJECT (action), "visible", show, NULL);
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), show);
 
-       show = page_num == 0 ? TRUE : FALSE;
-       action = gtk_action_group_get_action (actions, "DatabaseProperties");
-       g_object_set (G_OBJECT (action), "visible", show, NULL);
-       action = gtk_action_group_get_action (actions, "DatabaseDelete");
-       g_object_set (G_OBJECT (action), "visible", show, NULL);
+       action = g_action_map_lookup_action (G_ACTION_MAP (main_window), "DatasourceDelete");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), show);
+       //g_object_set (G_OBJECT (action), "visible", show, NULL);
 }
 
 static GtkWidget *
-create_main_notebook (void)
+create_main_notebook (GtkApplicationWindow *app_window)
 {
        GtkWidget *nb;
        GtkWidget *dsn;
@@ -366,26 +333,30 @@ create_main_notebook (void)
        GdauiRawGrid *grid;
 
        nb = gtk_notebook_new ();
+       g_object_set_data (G_OBJECT (app_window), NOTEBOOK, nb);
         gtk_notebook_set_show_tabs (GTK_NOTEBOOK (nb), TRUE);
         gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
         gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
         gtk_widget_show (nb);
        g_signal_connect (G_OBJECT (nb), "switch-page",
-                         G_CALLBACK (main_nb_page_switched_cb), NULL);
+                         G_CALLBACK (main_nb_page_switched_cb), app_window);
+
+       g_action_map_add_action_entries (G_ACTION_MAP (app),
+                                        app_entries, G_N_ELEMENTS (app_entries),
+                                        app);
 
        /* data source configuration page */
        dsn = dsn_config_new ();
-       g_object_set_data (G_OBJECT (nb), DSN_PAGE, dsn);
+       g_object_set_data (G_OBJECT (app_window), DSN_PAGE, dsn);
        gtk_notebook_append_page (GTK_NOTEBOOK (nb), dsn,
                                  gtk_label_new (_("Data Sources")));
        
        grid = g_object_get_data (G_OBJECT (dsn), "grid");
        g_signal_connect (G_OBJECT (grid), "selection-changed",
-                         G_CALLBACK (dsn_selection_changed_cb), NULL);
+                         G_CALLBACK (dsn_selection_changed_cb), app_window);
 
        /* providers configuration page */
        provider = provider_config_new ();
-       g_object_set_data (G_OBJECT (nb), PROVIDER_PAGE, provider);
        gtk_notebook_append_page (GTK_NOTEBOOK (nb), provider,
                                  gtk_label_new (_("Providers")));
 
diff --git a/control-center/menus.ui b/control-center/menus.ui
new file mode 100644
index 0000000..4088a35
--- /dev/null
+++ b/control-center/menus.ui
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<interface>
+  <menu id="appmenu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Quit</attribute>
+        <attribute name="action">app.quit</attribute>
+        <attribute name="accel">&lt;Primary&gt;q</attribute>
+      </item>
+    </section>
+  </menu>
+  <menu id="menubar">
+    <submenu>
+      <attribute name="label" translatable="yes">_Data sources</attribute>
+      <section>
+       <item>
+          <attribute name="label" translatable="yes">_New</attribute>
+          <attribute name="action">win.DatasourceNew</attribute>
+          <attribute name="accel">&lt;Primary&gt;n</attribute>
+       </item>
+       <item>
+          <attribute name="label" translatable="yes">_Properties</attribute>
+          <attribute name="action">win.DatasourceProperties</attribute>
+       </item>
+       <item>
+          <attribute name="label" translatable="yes">_Delete</attribute>
+          <attribute name="action">win.DatasourceDelete</attribute>
+          <attribute name="accel">&lt;Primary&gt;d</attribute>
+       </item>
+      </section>
+    </submenu>
+    <submenu>
+      <attribute name="label" translatable="yes">_Help</attribute>
+      <item>
+        <attribute name="label" translatable="yes">_About</attribute>
+        <attribute name="action">win.about</attribute>
+        <attribute name="accel">&lt;Primary&gt;a</attribute>
+      </item>
+    </submenu>
+  </menu>
+</interface>
diff --git a/control-center/provider-config.c b/control-center/provider-config.c
index c947b69..3ff4241 100644
--- a/control-center/provider-config.c
+++ b/control-center/provider-config.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 - 2011 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  *
  * This program is free software; you can redistribute it and/or
@@ -62,10 +62,7 @@ provider_config_new (void)
        priv->title = gdaui_bar_new (title);
        g_free (title);
 
-       gchar *path;
-       path = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "pixmaps", "gdaui-generic.png", NULL);
-       gdaui_bar_set_icon_from_file (GDAUI_BAR (priv->title), path);
-       g_free (path);
+       gdaui_bar_set_icon_from_resource (GDAUI_BAR (priv->title), "/images/gdaui-generic.png");
 
        gtk_box_pack_start (GTK_BOX (provider), priv->title, FALSE, FALSE, 0);
        gtk_widget_show (priv->title);
@@ -92,7 +89,7 @@ provider_config_new (void)
         gtk_container_set_border_width (GTK_CONTAINER (box), 6);
        gtk_box_pack_start (GTK_BOX (provider), box, FALSE, FALSE, 0);
 
-       image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
+       image = gtk_image_new_from_icon_name ("dialog-information", GTK_ICON_SIZE_DIALOG);
        gtk_widget_show (image);
        gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
 
diff --git a/doc/C/packaging_ui.xml b/doc/C/packaging_ui.xml
index 12f622d..f4ec39f 100644
--- a/doc/C/packaging_ui.xml
+++ b/doc/C/packaging_ui.xml
@@ -112,12 +112,9 @@
 `-- share
     |-- applications
     |   `-- gda-control-center-6.0.desktop
-    |-- libgda-6.0
-    |   `-- pixmaps
-    |       `-- gdaui-generic.png
-    `-- pixmaps
-        |-- gda-control-center-newcnc.png
-        `-- gda-control-center.png
+    `-- libgda-6.0
+        `-- pixmaps
+            `-- gdaui-generic.png
        </programlisting>
       </para>
     </sect2>
diff --git a/installers/Windows/make-zip-setup.sh b/installers/Windows/make-zip-setup.sh
index 9cf4184..4b4f1c6 100755
--- a/installers/Windows/make-zip-setup.sh
+++ b/installers/Windows/make-zip-setup.sh
@@ -462,10 +462,6 @@ files=(gda-browser-6.0.png)
 add_files_to_zip $archive $prefix share/pixmaps $files
 add_found_files_to_nsh core share/pixmaps
 
-files=(gda-control-center.png)
-add_files_to_zip $archive $prefix share/libgda-6.0/pixmaps $files
-add_found_files_to_nsh core share/libgda-6.0/pixmaps
-
 files=(gdaui-entry-number.xml gdaui-entry-string.xml)
 add_files_to_zip $archive $prefix share/libgda-6.0/ui $files
 add_found_files_to_nsh core share/libgda-6.0/ui


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