Implement empty browser window
authorP. F. Chimento <philip.chimento@gmail.com>
Tue, 21 Jun 2011 15:43:07 +0000 (17:43 +0200)
committerP. F. Chimento <philip.chimento@gmail.com>
Tue, 21 Jun 2011 15:43:07 +0000 (17:43 +0200)
player/app.c
player/app.h
player/browser.c
player/browser.h
player/main.c

index 988c08302e9527a3a23c75e1a2a07569fe4626fb..a9cf6746e8e9944300de51eed44ee144143d14b6 100644 (file)
@@ -11,6 +11,7 @@
 #include <config.h>
 #include <libchimara/chimara-if.h>
 #include "app.h"
+#include "browser.h"
 #include "error.h"
 #include "preferences.h"
 #include "player.h"
@@ -140,8 +141,9 @@ chimara_app_get(void)
     if(G_UNLIKELY(theapp == NULL)) {
                theapp = CHIMARA_APP(g_object_new(CHIMARA_TYPE_APP, NULL));
 
-               /* Create preferences window */
+               /* Create one-per-application windows */
                theapp->prefswindow = chimara_prefs_new();
+               theapp->browser_window = chimara_browser_new();
        }
 
        return theapp;
index d15f2a9c4259c657614fa52e0b543a33ce0ae441..6a22cc017c02be4ffa64c4bc7a20cd8abc97d095 100644 (file)
@@ -17,7 +17,7 @@ typedef struct _ChimaraApp {
        GObject parent_instance;
        
        /* Public pointers */
-       // library browser window?
+       GtkWidget *browser_window;
        GtkWidget *aboutwindow;
        GtkWidget *prefswindow;
        /* Public settings */
index 8dfadf401184620bb2ce31c43dacddc863dae5e6..e4b3e747228c33e0282d53b753164c0a17266b6c 100644 (file)
@@ -1,6 +1,9 @@
 #include <glib-object.h>
+#include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include "browser.h"
+#include "app.h"
+#include "error.h"
 
 typedef struct _ChimaraBrowserPrivate {
        int dummy;
@@ -38,12 +41,39 @@ chimara_browser_class_init(ChimaraBrowserClass *klass)
 static void
 chimara_browser_init(ChimaraBrowser *self)
 {
+       ChimaraApp *theapp = chimara_app_get();
+       GError *error = NULL;
+
+       /* Set own properties */
+       g_object_set(self,
+               "title", _("Chimara"),
+               NULL);
+
+       GtkUIManager *uimanager = gtk_ui_manager_new();
+       if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_DATA_DIR "/chimara.menus", &error) ) {
+#ifdef DEBUG
+               g_error_free(error);
+               error = NULL;
+               if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_SRC_DIR "/chimara.menus", &error) ) {
+#endif /* DEBUG */
+                       error_dialog(NULL, error, "Error while building interface: ");
+                       return;
+#ifdef DEBUG
+               }
+#endif /* DEBUG */
+       }
+
+       gtk_ui_manager_insert_action_group(uimanager, chimara_app_get_action_group(theapp), 0);
+       GtkWidget *menubar = gtk_ui_manager_get_widget(uimanager, "/browser_menu");
+       gtk_container_add(GTK_CONTAINER(self), menubar);
 }
 
 /* PUBLIC FUNCTIONS */
-ChimaraBrowser *
+GtkWidget *
 chimara_browser_new(void)
 {
-       return CHIMARA_BROWSER(g_object_new(CHIMARA_TYPE_BROWSER, NULL));
+       return GTK_WIDGET(g_object_new(CHIMARA_TYPE_BROWSER,
+               "type", GTK_WINDOW_TOPLEVEL,
+               NULL));
 }
 
index 991267c86c33dd8aa936741563b4573158080fd0..588b4056aee450271edc496e1c49579fa7d2197b 100644 (file)
@@ -24,7 +24,7 @@ typedef struct _ChimaraBrowserClass {
 } ChimaraBrowserClass;
 
 GType chimara_browser_get_type(void) G_GNUC_CONST;
-ChimaraBrowser *chimara_browser_new(void);
+GtkWidget *chimara_browser_new(void);
 
 G_END_DECLS
 
index 85ed57cbbeab7bd57f2674b20ff0301ae2a0d048..20ee3290886240e6d7e1fe52c123c37f4646dd5d 100644 (file)
@@ -62,9 +62,6 @@ main(int argc, char *argv[])
 
        ChimaraApp *theapp = chimara_app_get();
 
-       GtkWidget *window = chimara_player_new();
-       gtk_widget_show_all(window);
-
        //if(argc == 3) {
        //      g_object_set(glk, "graphics-file", argv[2], NULL);
        //}
@@ -75,6 +72,8 @@ main(int argc, char *argv[])
        //      }
        //}
 
+       gtk_widget_show_all(theapp->browser_window);
+
     gdk_threads_enter();
        gtk_main();
        gdk_threads_leave();