#include <gtk/gtk.h>
#include "ui.h"
+#include "ui_utils.h"
+#include "ui_buttons.h"
#include "support.h"
-#define GLADE_HOOKUP_OBJECT(component,widget,name) \
- g_object_set_data_full (G_OBJECT (component), name, \
- gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
-
-#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;
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;
{
GtkWidget* hbox;
- hbox = gtk_vbox_new (FALSE, 0);
+ hbox = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox);
- /* add buttons here: */
+ /* playlist modify buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_LIBRARY_ADD),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_LIBRARY_REFRESH),
+ FALSE, FALSE, 0);
+
+ /* spacer */
gtk_box_pack_start (GTK_BOX (hbox),
- create_label(top, "BUTTONS HERE", NULL, GTK_JUSTIFY_LEFT),
- FALSE, TRUE, 0);
+ create_label(top, NULL, NULL, GTK_JUSTIFY_CENTER),
+ TRUE, TRUE, 0);
return hbox;
}
vbox = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox);
+ gtk_widget_set_size_request(vbox, 300, -1);
/* add buttons box */
gtk_box_pack_start (GTK_BOX (vbox),
return vbox;
}
-static GtkWidget* pane_operate_status(GtkWidget* top, omnplay_instance_t* app)
+static GtkWidget* create_channel_status(GtkWidget* top, omnplay_instance_t* app, int idx)
{
+ GtkWidget* vbox;
+ GtkWidget* hbox;
GtkWidget* frame;
+ omnplay_player_t* player;
+
+ player = &app->players.item[idx];
- frame = gtk_frame_new ("STATUS");
- gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+ frame = gtk_frame_new(player->name);
gtk_widget_show(frame);
- gtk_container_add(GTK_CONTAINER(frame),
- create_label(top, "status here", NULL, GTK_JUSTIFY_CENTER));
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(frame), vbox);
+ gtk_widget_show(vbox);
+
+ /* status label */
+ gtk_box_pack_start(GTK_BOX (vbox),
+ player->label_status = create_label(top, "OFFLINE", NULL, GTK_JUSTIFY_LEFT),
+ FALSE, FALSE, 0);
+
+ /* spacel label */
+ gtk_box_pack_start(GTK_BOX (vbox),
+ create_label(top, " ", NULL, GTK_JUSTIFY_CENTER),
+ FALSE, FALSE, 0);
+
+ /* clip label */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ player->label_clip = create_label(top, "U0002323", NULL, GTK_JUSTIFY_LEFT),
+ FALSE, FALSE, 0);
+
+ /* block state/current timecode */
+ gtk_box_pack_start(GTK_BOX (vbox),
+ hbox = gtk_hbox_new(TRUE, 0),
+ FALSE, FALSE, 0);
+ gtk_widget_show(hbox);
+
+ {
+ /* clip state */
+ gtk_box_pack_start(GTK_BOX (hbox),
+ player->label_state = create_label(top, "PLAYING", NULL, GTK_JUSTIFY_LEFT),
+ TRUE, TRUE, 0);
+
+ /* current timecode */
+ gtk_box_pack_start(GTK_BOX (hbox),
+ player->label_tc_cur = create_label(top, "00:00:00:00", NULL, GTK_JUSTIFY_LEFT),
+ TRUE, TRUE, 0);
+ };
+
+ /* block remain label/remain timecode */
+ gtk_box_pack_start(GTK_BOX (vbox),
+ hbox = gtk_hbox_new(TRUE, 0),
+ FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+
+ {
+ /* label */
+ gtk_box_pack_start(GTK_BOX (hbox),
+ create_label(top, "remain:", NULL, GTK_JUSTIFY_LEFT),
+ TRUE, TRUE, 0);
+
+ /* remaining timecode */
+ gtk_box_pack_start(GTK_BOX (hbox),
+ player->label_tc_rem = create_label(top, "00:00:00:00", NULL, GTK_JUSTIFY_LEFT),
+ TRUE, TRUE, 0);
+ };
return frame;
}
+static GtkWidget* pane_operate_status(GtkWidget* top, omnplay_instance_t* app)
+{
+ int i;
+ GtkWidget* vbox;
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox);
+ gtk_widget_set_size_request(vbox, 250, -1);
+
+ for(i = 0; i < app->players.count; i++)
+ {
+ gtk_box_pack_start (GTK_BOX (vbox),
+ create_channel_status(top, app, i),
+ FALSE, FALSE, 0);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ create_label(top, NULL, NULL, GTK_JUSTIFY_CENTER),
+ FALSE, FALSE, 0);
+ }
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ create_label(top, NULL, NULL, GTK_JUSTIFY_CENTER),
+ TRUE, TRUE, 0);
+
+ return vbox;
+}
+
+static GtkWidget* pane_operate_buttons_playlist(GtkWidget* top, omnplay_instance_t* app)
+{
+ GtkWidget* hbox;
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+
+ /* playlist load/save buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_LOAD),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_SAVE),
+ FALSE, FALSE, 0);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_label(top, " ", NULL, GTK_JUSTIFY_CENTER),
+ FALSE, FALSE, 0);
+
+ /* playlist modify buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_ITEM_ADD),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_ITEM_EDIT),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_ITEM_DEL),
+ FALSE, FALSE, 0);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_label(top, " ", NULL, GTK_JUSTIFY_CENTER),
+ FALSE, FALSE, 0);
+
+ /* playlist block buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_BLOCK_SINGLE),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_BLOCK_LOOP),
+ FALSE, FALSE, 0);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_label(top, " ", NULL, GTK_JUSTIFY_CENTER),
+ FALSE, FALSE, 0);
+
+ /* playlist move items buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_ITEM_UP),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYLIST_ITEM_DOWN),
+ FALSE, FALSE, 0);
+
+ return hbox;
+}
+
+static GtkWidget* pane_operate_grid(GtkWidget* top, omnplay_instance_t* app)
+{
+ static const char* columns[] = {"REM", "B", "CH", "ID", "IN", "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_playlist", columns));
+
+ return scrolledwindow;
+}
+
+static GtkWidget* pane_operate_buttons_operate(GtkWidget* top, omnplay_instance_t* app)
+{
+ GtkWidget* hbox;
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_label(top, NULL, NULL, GTK_JUSTIFY_CENTER),
+ TRUE, TRUE, 0);
+
+ /* playlist modify buttons */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYER_CUE),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYER_PLAY),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYER_PAUSE),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox),
+ ui_create_button(top, app, BUTTON_PLAYER_STOP),
+ FALSE, FALSE, 0);
+
+ /* spacer */
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_label(top, NULL, NULL, GTK_JUSTIFY_CENTER),
+ TRUE, TRUE, 0);
+
+ return hbox;
+}
+
static GtkWidget* pane_operate_operate(GtkWidget* top, omnplay_instance_t* app)
{
- return create_label(top, "pane_operate", NULL, GTK_JUSTIFY_CENTER);
+ GtkWidget* vbox;
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox);
+
+ /* add buttons box #1 */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ pane_operate_buttons_playlist(top, app),
+ FALSE, FALSE, 0);
+
+ /* add buttons box */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ pane_operate_grid(top, app),
+ TRUE, TRUE, 0);
+
+ /* add buttons box #1 */
+ gtk_box_pack_start (GTK_BOX (vbox),
+ pane_operate_buttons_operate(top, app),
+ FALSE, FALSE, 0);
+
+ return vbox;
+
}
static GtkWidget* pane_operate(GtkWidget* top, omnplay_instance_t* app)
pane = gtk_hpaned_new ();
gtk_widget_show (pane);
- gtk_paned_set_position (GTK_PANED (pane), 300);
+ gtk_paned_set_position (GTK_PANED (pane), 800);
gtk_paned_pack1 (GTK_PANED (pane),
pane_operate(top, app),