X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=player%2Fbrowser.c;h=f63404d2afc99503e2f9a6b8d2cc9d1d453bd6ac;hb=6fd0347f330cb24ef6145662023053a1c0f81a64;hp=4646eefddbb2169d1914916c9f20822631bf9e79;hpb=32ba95a539a77d1dd2b94d19e83024c40d9c10c7;p=projects%2Fchimara%2Fchimara.git diff --git a/player/browser.c b/player/browser.c index 4646eef..f63404d 100644 --- a/player/browser.c +++ b/player/browser.c @@ -1,12 +1,43 @@ +/* + * Copyright (C) 2008, 2009, 2010, 2011 Philip Chimento and Marijn van Vliet. + * All rights reserved. + * + * Chimara is free software copyrighted by Philip Chimento and Marijn van Vliet. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither of the names Philip Chimento or Marijn van Vliet, nor the name of + * any other contributor may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + #include #include #include #include "browser.h" #include "app.h" -#include "error.h" +#include "util.h" typedef struct _ChimaraBrowserPrivate { - int dummy; + GtkActionGroup *action_group; } ChimaraBrowserPrivate; #define CHIMARA_BROWSER_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), CHIMARA_TYPE_BROWSER, ChimaraBrowserPrivate)) @@ -14,9 +45,23 @@ typedef struct _ChimaraBrowserPrivate { G_DEFINE_TYPE(ChimaraBrowser, chimara_browser, GTK_TYPE_WINDOW); +/* CALLBACKS */ + +static gboolean +on_browser_delete_event(GtkWidget *browser, GdkEvent *event) +{ + gtk_main_quit(); + return TRUE; +} + +/* TYPE SYSTEM */ + static void chimara_browser_finalize(GObject *self) { + CHIMARA_BROWSER_USE_PRIVATE; + g_object_unref(priv->action_group); + /* Chain up */ G_OBJECT_CLASS(chimara_browser_parent_class)->finalize(self); } @@ -26,13 +71,7 @@ chimara_browser_class_init(ChimaraBrowserClass *klass) { /* Override methods of parent classes */ GObjectClass *object_class = G_OBJECT_CLASS(klass); - //object_class->set_property = chimara_if_set_property; - //object_class->get_property = chimara_if_get_property; object_class->finalize = chimara_browser_finalize; - - /* Signals */ - - /* Properties */ /* Private data */ g_type_class_add_private(klass, sizeof(ChimaraBrowserPrivate)); @@ -41,34 +80,43 @@ chimara_browser_class_init(ChimaraBrowserClass *klass) static void chimara_browser_init(ChimaraBrowser *self) { + CHIMARA_BROWSER_USE_PRIVATE; 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 "/browser.menus", &error) ) { -#ifdef DEBUG - g_error_free(error); - error = NULL; - if( !gtk_ui_manager_add_ui_from_file(uimanager, PACKAGE_SRC_DIR "/browser.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); + /* Build user interface */ + char *object_ids[] = { + "browser_group", + NULL + }; + GtkBuilder *builder = new_builder_with_objects(object_ids); + + priv->action_group = GTK_ACTION_GROUP(load_object(builder, "browser_group")); + g_object_ref(priv->action_group); + + GtkUIManager *uimanager = new_ui_manager("browser.menus"); + + gtk_ui_manager_insert_action_group(uimanager, priv->action_group, 0); + gtk_ui_manager_insert_action_group(uimanager, chimara_app_get_action_group(theapp), 1); GtkWidget *menubar = gtk_ui_manager_get_widget(uimanager, "/browser_menu"); - gtk_container_add(GTK_CONTAINER(self), menubar); + GtkWidget *toolbar = gtk_ui_manager_get_widget(uimanager, "/browser_toolbar"); + GtkWidget *vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(self), vbox); + gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); + + g_signal_connect(self, "delete-event", G_CALLBACK(on_browser_delete_event), NULL); + + g_object_unref(uimanager); + g_object_unref(builder); } /* PUBLIC FUNCTIONS */ + GtkWidget * chimara_browser_new(void) { @@ -77,3 +125,29 @@ chimara_browser_new(void) NULL)); } +/* GLADE CALLBACKS */ + +void +action_add_file(GtkAction *action, ChimaraBrowser *browser) +{ +} + +void +action_add_watched_folder(GtkAction *action, ChimaraBrowser *browser) +{ +} + +void +action_remove_file(GtkAction *action, ChimaraBrowser *browser) +{ +} + +void +action_play(GtkAction *action, ChimaraBrowser *browser) +{ +} + +void +action_more_info(GtkAction *action, ChimaraBrowser *browser) +{ +}