UI' basic canvases added
authorMaksym Veremeyenko <verem@m1stereo.tv>
Thu, 16 Jun 2011 17:47:40 +0000 (20:47 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Thu, 16 Jun 2011 17:47:40 +0000 (20:47 +0300)
src/ui.c

index eb17987..b7b6b83 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
   g_object_set_data (G_OBJECT (component), name, widget)
 
+static GtkWidget* create_label(GtkWidget* top, char* text, char* reg, GtkJustification jtype)
+{
+    GtkWidget* label;
+
+    label = gtk_label_new ("");
+    gtk_widget_show (label);
+
+    gtk_label_set_justify (GTK_LABEL (label), jtype);
+
+    if(reg)
+        GLADE_HOOKUP_OBJECT (top, label, reg);
+
+    if(text)
+        gtk_label_set_text(GTK_LABEL (label), text);
+
+    return label;
+};
+
+static GtkWidget* create_treeview(GtkWidget* top, char* name, const char* columns[])
+{
+    int i;
+
+    GtkWidget *treeview;
+    GtkCellRenderer *renderer;
+    GtkTreeViewColumn *column;
+    GtkListStore *list_store;
+
+    treeview = gtk_tree_view_new ();
+    gtk_widget_show (treeview);
+
+    list_store = gtk_list_store_new(7,
+        G_TYPE_STRING,
+        G_TYPE_STRING,
+        G_TYPE_STRING,
+        G_TYPE_STRING,
+        G_TYPE_STRING,
+        G_TYPE_STRING,
+        G_TYPE_STRING);
+    gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ), GTK_TREE_MODEL( list_store ) );
+
+    for(i = 0; columns[i]; i++)
+    {
+        renderer = gtk_cell_renderer_toggle_new();
+        column = gtk_tree_view_column_new_with_attributes(
+            columns[i], renderer, "text", i, NULL);
+        gtk_tree_view_append_column(GTK_TREE_VIEW( treeview ), column);
+    };
+
+    GLADE_HOOKUP_OBJECT (top, treeview, name);
+
+    return treeview;
+};
+
+static GtkWidget* pane_library_grid(GtkWidget* top, omnplay_instance_t* app)
+{
+//    static const char* columns[] = {"REM", "B", "CH", "ID", "IN", "DUR", "TITLE", NULL};
+    static const char* columns[] = {"ID", "DUR", "TITLE", NULL};
+    GtkWidget *scrolledwindow;
+
+    scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+    gtk_widget_show (scrolledwindow);
+    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow),
+        GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+    gtk_container_add (GTK_CONTAINER (scrolledwindow),
+        create_treeview(top, "treeview_library", columns));
+
+    return scrolledwindow;
+}
+
+static GtkWidget* pane_library_buttons(GtkWidget* top, omnplay_instance_t* app)
+{
+    GtkWidget* hbox;
+
+    hbox = gtk_vbox_new (FALSE, 0);
+    gtk_widget_show (hbox);
+
+    /* add buttons here: */
+    gtk_box_pack_start (GTK_BOX (hbox),
+        create_label(top, "BUTTONS HERE", NULL, GTK_JUSTIFY_LEFT),
+            FALSE, TRUE, 0);
+
+    return hbox;
+}
+
+static GtkWidget* pane_library(GtkWidget* top, omnplay_instance_t* app)
+{
+    GtkWidget* vbox;
+
+    vbox = gtk_vbox_new (FALSE, 0);
+    gtk_widget_show (vbox);
+
+    /* add buttons box */
+    gtk_box_pack_start (GTK_BOX (vbox),
+        pane_library_buttons(top, app),
+        FALSE, FALSE, 0);
+
+    /* add buttons box */
+    gtk_box_pack_start (GTK_BOX (vbox),
+        pane_library_grid(top, app),
+        TRUE, TRUE, 0);
+
+    return vbox;
+}
+
+static GtkWidget* pane_operate_status(GtkWidget* top, omnplay_instance_t* app)
+{
+    GtkWidget* frame;
+
+    frame = gtk_frame_new ("STATUS");
+    gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+    gtk_widget_show(frame);
+
+    gtk_container_add(GTK_CONTAINER(frame),
+        create_label(top, "status here", NULL, GTK_JUSTIFY_CENTER));
+
+    return frame;
+}
+
+static GtkWidget* pane_operate_operate(GtkWidget* top, omnplay_instance_t* app)
+{
+    return create_label(top, "pane_operate", NULL, GTK_JUSTIFY_CENTER);
+}
+
+static GtkWidget* pane_operate(GtkWidget* top, omnplay_instance_t* app)
+{
+    GtkWidget* hbox;
+
+    hbox = gtk_hbox_new (FALSE, 0);
+    gtk_widget_show (hbox);
+
+    /* add buttons box */
+    gtk_box_pack_start (GTK_BOX (hbox),
+        pane_operate_status(top, app),
+        FALSE, FALSE, 0);
+
+    /* add buttons box */
+    gtk_box_pack_start (GTK_BOX (hbox),
+        pane_operate_operate(top, app),
+        TRUE, TRUE, 0);
+
+    return hbox;
+
+};
+
+static GtkWidget* pane_top(GtkWidget* top, omnplay_instance_t* app)
+{
+    GtkWidget* pane;
+
+    pane = gtk_hpaned_new ();
+    gtk_widget_show (pane);
+
+    gtk_paned_set_position (GTK_PANED (pane), 300);
+
+    gtk_paned_pack1 (GTK_PANED (pane),
+        pane_operate(top, app),
+        TRUE, FALSE);
+
+    gtk_paned_pack2 (GTK_PANED (pane),
+        pane_library(top, app),
+        FALSE, FALSE);
+
+    return pane;
+}
 
 GtkWidget* ui_omnplay (omnplay_instance_t* app)
 {
@@ -51,5 +215,8 @@ GtkWidget* ui_omnplay (omnplay_instance_t* app)
     gtk_window_set_title (GTK_WINDOW (wnd), _("Omneon Player"));
     gtk_window_set_default_size (GTK_WINDOW (wnd), 1024, 768);
 
+    gtk_container_add (GTK_CONTAINER (wnd),
+        pane_top(wnd, app));
+
     return wnd;
 }