e7b9ccedaf99caee7cf677787af0dba1afa35c39
[projects/chimara/chimara.git] / player / browser.c
1 /*
2  * Copyright (C) 2008, 2009, 2010, 2011 Philip Chimento and Marijn van Vliet.
3  * All rights reserved.
4  *
5  * Chimara is free software copyrighted by Philip Chimento and Marijn van Vliet.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  *    this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright notice,
13  *    this list of conditions and the following disclaimer in the documentation
14  *    and/or other materials provided with the distribution.
15  * 3. Neither of the names Philip Chimento or Marijn van Vliet, nor the name of
16  *    any other contributor may be used to endorse or promote products derived
17  *    from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #include <glib-object.h>
33 #include <glib/gi18n.h>
34 #include <gtk/gtk.h>
35 #include "browser.h"
36 #include "app.h"
37 #include "util.h"
38
39 typedef struct _ChimaraBrowserPrivate {
40         int dummy;
41 } ChimaraBrowserPrivate;
42
43 #define CHIMARA_BROWSER_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), CHIMARA_TYPE_BROWSER, ChimaraBrowserPrivate))
44 #define CHIMARA_BROWSER_USE_PRIVATE ChimaraBrowserPrivate *priv = CHIMARA_BROWSER_PRIVATE(self)
45
46 G_DEFINE_TYPE(ChimaraBrowser, chimara_browser, GTK_TYPE_WINDOW);
47
48 static void
49 chimara_browser_finalize(GObject *self)
50 {
51         /* Chain up */
52         G_OBJECT_CLASS(chimara_browser_parent_class)->finalize(self);
53 }
54
55 static void
56 chimara_browser_class_init(ChimaraBrowserClass *klass)
57 {
58         /* Override methods of parent classes */
59         GObjectClass *object_class = G_OBJECT_CLASS(klass);
60         object_class->finalize = chimara_browser_finalize;
61
62         /* Private data */
63         g_type_class_add_private(klass, sizeof(ChimaraBrowserPrivate));
64 }
65
66 static void
67 chimara_browser_init(ChimaraBrowser *self)
68 {
69         ChimaraApp *theapp = chimara_app_get();
70
71         /* Set own properties */
72         g_object_set(self,
73                 "title", _("Chimara"),
74                 NULL);
75
76         GtkUIManager *uimanager = new_ui_manager("browser.menus");
77
78         gtk_ui_manager_insert_action_group(uimanager, chimara_app_get_action_group(theapp), 0);
79         GtkWidget *menubar = gtk_ui_manager_get_widget(uimanager, "/browser_menu");
80         gtk_container_add(GTK_CONTAINER(self), menubar);
81 }
82
83 /* PUBLIC FUNCTIONS */
84 GtkWidget *
85 chimara_browser_new(void)
86 {
87         return GTK_WIDGET(g_object_new(CHIMARA_TYPE_BROWSER,
88                 "type", GTK_WINDOW_TOPLEVEL,
89                 NULL));
90 }
91