// Create and bind the tree model to the tree view for the audio track list // Also, connect up the signal that lets us know the selection has changed static void bind_audio_tree_model(signal_user_data_t *ud) { GtkCellRenderer *source_cell; GtkCellRenderer *arrow_cell; GtkCellRenderer *output_cell; GtkCellRenderer *edit_cell; GtkCellRenderer *delete_cell; GtkTreeViewColumn *column; GtkTreeStore *treestore; GtkTreeView *treeview; GtkTreeSelection *selection; g_debug("bind_audio_tree_model()\n"); treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "audio_list_view")); selection = gtk_tree_view_get_selection(treeview); treestore = gtk_tree_store_new(6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_FLOAT); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore)); source_cell = gtk_cell_renderer_text_new(); arrow_cell = gtk_cell_renderer_text_new(); output_cell = gtk_cell_renderer_text_new(); edit_cell = custom_cell_renderer_button_new(); delete_cell = custom_cell_renderer_button_new(); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_spacing(column, 12); gtk_tree_view_column_set_title(column, _("Track Information")); gtk_tree_view_column_pack_start(column, source_cell, FALSE); gtk_tree_view_column_add_attribute(column, source_cell, "markup", 0); gtk_tree_view_column_add_attribute(column, source_cell, "yalign", 5); gtk_tree_view_column_pack_start(column, arrow_cell, FALSE); gtk_tree_view_column_add_attribute(column, arrow_cell, "text", 1); gtk_tree_view_column_pack_start(column, output_cell, TRUE); gtk_tree_view_column_add_attribute(column, output_cell, "markup", 2); gtk_tree_view_column_add_attribute(column, output_cell, "yalign", 5); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_column_set_max_width(column, 400); column = gtk_tree_view_column_new_with_attributes( _(""), edit_cell, "icon-name", 3, NULL); //gtk_tree_view_column_set_min_width(column, 24); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); column = gtk_tree_view_column_new_with_attributes( _(""), delete_cell, "icon-name", 4, NULL); //gtk_tree_view_column_set_min_width(column, 24); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); g_signal_connect(selection, "changed", audio_list_selection_changed_cb, ud); g_signal_connect(edit_cell, "clicked", audio_edit_clicked_cb, ud); g_signal_connect(delete_cell, "clicked", audio_remove_clicked_cb, ud); g_debug("Done\n"); }
// Create and bind the tree model to the tree view for the queue list // Also, connect up the signal that lets us know the selection has changed static void bind_queue_tree_model (signal_user_data_t *ud) { GtkCellRenderer *cell, *textcell; GtkTreeViewColumn *column; GtkTreeStore *treestore; GtkTreeView *treeview; GtkTreeSelection *selection; GtkTargetEntry SrcEntry; SrcEntry.target = "DATA"; SrcEntry.flags = GTK_TARGET_SAME_WIDGET; g_debug("bind_queue_tree_model ()\n"); treeview = GTK_TREE_VIEW(GHB_WIDGET (ud->builder, "queue_list")); selection = gtk_tree_view_get_selection (treeview); treestore = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore)); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (column, _("Job Information")); cell = gtk_cell_renderer_pixbuf_new(); g_object_set(cell, "yalign", 0.0, NULL); gtk_tree_view_column_pack_start (column, cell, FALSE); gtk_tree_view_column_add_attribute (column, cell, "icon-name", 0); textcell = gtk_cell_renderer_text_new(); g_object_set(textcell, "wrap-mode", PANGO_WRAP_CHAR, NULL); g_object_set(textcell, "wrap-width", 500, NULL); gtk_tree_view_column_pack_start (column, textcell, TRUE); gtk_tree_view_column_add_attribute (column, textcell, "markup", 1); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_column_set_max_width (column, 550); cell = custom_cell_renderer_button_new(); g_object_set(cell, "yalign", 0.0, NULL); column = gtk_tree_view_column_new_with_attributes( _(""), cell, "icon-name", 2, NULL); gtk_tree_view_column_set_min_width (column, 24); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_enable_model_drag_dest (treeview, &SrcEntry, 1, GDK_ACTION_MOVE); gtk_tree_view_enable_model_drag_source (treeview, GDK_BUTTON1_MASK, &SrcEntry, 1, GDK_ACTION_MOVE); g_signal_connect(selection, "changed", queue_list_selection_changed_cb, ud); g_signal_connect(cell, "clicked", queue_remove_clicked_cb, ud); g_signal_connect(treeview, "size-allocate", queue_list_size_allocate_cb, textcell); g_signal_connect(treeview, "drag_data_received", queue_drag_cb, ud); g_signal_connect(treeview, "drag_motion", queue_drag_motion_cb, ud); // Work around silly treeview display bug. If the treeview // hasn't been shown yet, the width request doesn't seem // to work right. Cells get badly formatted. GtkWidget *widget = GHB_WIDGET (ud->builder, "queue_window"); gtk_widget_show (widget); gtk_widget_hide (widget); }
// Create and bind the tree model to the tree view for the queue list // Also, connect up the signal that lets us know the selection has changed static void bind_queue_tree_model(signal_user_data_t *ud) { GtkCellRenderer *cell, *textcell; GtkTreeViewColumn *column; GtkTreeStore *treestore; GtkTreeView *treeview; GtkTreeSelection *selection; GtkTargetEntry SrcEntry; SrcEntry.target = "DATA"; SrcEntry.flags = GTK_TARGET_SAME_WIDGET; g_debug("bind_queue_tree_model()\n"); treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "queue_list")); selection = gtk_tree_view_get_selection(treeview); treestore = gtk_tree_store_new(5, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore)); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Job Information")); cell = gtk_cell_renderer_spinner_new(); gtk_tree_view_column_pack_start(column, cell, FALSE); gtk_tree_view_column_add_attribute(column, cell, "active", 0); gtk_tree_view_column_add_attribute(column, cell, "pulse", 4); cell = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(column, cell, FALSE); gtk_tree_view_column_add_attribute(column, cell, "icon-name", 1); textcell = gtk_cell_renderer_text_new(); g_object_set(textcell, "wrap-mode", PANGO_WRAP_CHAR, NULL); g_object_set(textcell, "wrap-width", 500, NULL); gtk_tree_view_column_pack_start(column, textcell, TRUE); gtk_tree_view_column_add_attribute(column, textcell, "markup", 2); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_column_set_max_width(column, 550); g_signal_connect(treeview, "size-allocate", queue_list_size_allocate_cb, textcell); cell = custom_cell_renderer_button_new(); column = gtk_tree_view_column_new_with_attributes( _(""), cell, "icon-name", 3, NULL); gtk_tree_view_column_set_min_width(column, 24); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_enable_model_drag_dest(treeview, &SrcEntry, 1, GDK_ACTION_MOVE); gtk_tree_view_enable_model_drag_source(treeview, GDK_BUTTON1_MASK, &SrcEntry, 1, GDK_ACTION_MOVE); g_signal_connect(selection, "changed", queue_list_selection_changed_cb, ud); g_signal_connect(cell, "clicked", queue_remove_clicked_cb, ud); g_signal_connect(treeview, "drag_data_received", queue_drag_cb, ud); g_signal_connect(treeview, "drag_motion", queue_drag_motion_cb, ud); }