static void userlist_add_columns (GtkTreeView * treeview) { GtkCellRenderer *renderer; /* icon column */ renderer = gtk_cell_renderer_pixbuf_new (); if (prefs.hex_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1, NULL, renderer, "pixbuf", 0, NULL); /* nick column */ renderer = gtk_cell_renderer_text_new (); if (prefs.hex_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1, NULL, renderer, "text", 1, "foreground-gdk", 4, NULL); if (prefs.hex_gui_ulist_show_hosts) { /* hostname column */ renderer = gtk_cell_renderer_text_new (); if (prefs.hex_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), -1, NULL, renderer, "text", 2, NULL); } }
static void add_column(GtkTreeView *treeview, gint column_id, gfloat xalign, const gchar *label) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new(); gtk_cell_renderer_text_set_fixed_height_from_font( GTK_CELL_RENDERER_TEXT(renderer), 1); g_object_set(renderer, "xalign", xalign, "ypad", GUI_CELL_RENDERER_YPAD, NULL_PTR); column = gtk_tree_view_column_new_with_attributes(label, renderer, "text", column_id, NULL_PTR); g_object_set(column, "fixed-width", 100, "min-width", 1, "reorderable", TRUE, "resizable", TRUE, "sizing", GTK_TREE_VIEW_COLUMN_FIXED, NULL_PTR); gtk_tree_view_append_column(treeview, column); }
static void gm_cell_renderer_bitext_init (GmCellRendererBitext* self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GM_TYPE_CELL_RENDERER_BITEXT, GmCellRendererBitextPrivate); self->priv->primary_text = g_strdup (""); self->priv->secondary_text = g_strdup (""); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (self), 2); }
static void dcc_add_column (GtkWidget *tree, int textcol, int colorcol, char *title, gboolean right_justified) { GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new (); if (right_justified) g_object_set (G_OBJECT (renderer), "xalign", (float) 1.0, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, renderer, "text", textcol, "foreground-gdk", colorcol, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); }
static GtkCellRenderer * create_cell_renderer(gfloat xalign) { GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new(); gtk_cell_renderer_text_set_fixed_height_from_font( GTK_CELL_RENDERER_TEXT(renderer), TRUE); g_object_set(renderer, "mode", GTK_CELL_RENDERER_MODE_INERT, "xalign", xalign, "ypad", (guint) GUI_CELL_RENDERER_YPAD, (void *) 0); return renderer; }
static GtkCellRenderer * create_text_cell_renderer(gfloat xalign) { GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new(); gtk_cell_renderer_text_set_fixed_height_from_font( GTK_CELL_RENDERER_TEXT(renderer), 1); g_object_set(G_OBJECT(renderer), "mode", GTK_CELL_RENDERER_MODE_INERT, "xalign", xalign, "ypad", (unsigned) GUI_CELL_RENDERER_YPAD, NULL_PTR); return renderer; }
static inline void gwy_graph_data_pack_renderer(GwyGraphData *graph_data, GtkTreeViewColumn *column, gint id) { GtkCellRenderer *renderer; renderer = gtk_cell_renderer_text_new(); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT(renderer), 1); g_object_set(renderer, "xalign", 1.0, NULL); if (id) g_object_set_qdata(G_OBJECT(renderer), quark_id, GINT_TO_POINTER(id)); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_cell_data_func(column, renderer, render_data, graph_data, NULL); }
static void chanlist_add_column (GtkWidget *tree, int textcol, int size, char *title, gboolean right_justified) { GtkCellRenderer *renderer; GtkTreeViewColumn *col; renderer = gtk_cell_renderer_text_new (); if (right_justified) g_object_set (G_OBJECT (renderer), "xalign", (gfloat) 1.0, NULL); g_object_set (G_OBJECT (renderer), "ypad", (gint) 0, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, renderer, "text", textcol, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); col = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), textcol); gtk_tree_view_column_set_sort_column_id (col, textcol); gtk_tree_view_column_set_resizable (col, TRUE); if (textcol != COL_TOPIC) { gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (col, size); } }
static void cv_tree_init (chanview *cv) { GtkWidget *view, *win; GtkCellRenderer *renderer; static const GtkTargetEntry dnd_src_target[] = { {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } }; static const GtkTargetEntry dnd_dest_target[] = { {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } }; win = gtk_scrolled_window_new (0, 0); /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (cv->box), win); gtk_widget_show (win); view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); gtk_widget_set_name (view, "xchat-tree"); if (cv->style) gtk_widget_set_style (view, cv->style); /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ GTK_WIDGET_UNSET_FLAGS (view, GTK_CAN_FOCUS); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); #if GTK_CHECK_VERSION(2,10,0) if (!(prefs.gui_tweaks & 8)) gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); #endif gtk_container_add (GTK_CONTAINER (win), view); /* icon column */ if (cv->use_icons) { renderer = gtk_cell_renderer_pixbuf_new (); if (prefs.gui_tweaks & 32) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1, NULL, renderer, "pixbuf", COL_PIXBUF, NULL); } /* main column */ renderer = gtk_cell_renderer_text_new (); if (prefs.gui_tweaks & 32) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1, NULL, renderer, "text", COL_NAME, "attributes", COL_ATTR, NULL); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), "changed", G_CALLBACK (cv_tree_sel_cb), cv); g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (cv_tree_click_cb), cv); g_signal_connect (G_OBJECT (view), "row-activated", G_CALLBACK (cv_tree_activated_cb), NULL); gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); #ifndef WIN32 g_signal_connect (G_OBJECT (view), "drag_begin", G_CALLBACK (mg_drag_begin_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_drop", G_CALLBACK (mg_drag_drop_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_motion", G_CALLBACK (mg_drag_motion_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_end", G_CALLBACK (mg_drag_end_cb), NULL); #endif ((treeview *)cv)->tree = GTK_TREE_VIEW (view); ((treeview *)cv)->scrollw = win; gtk_widget_show (view); }
static VALUE rg_set_fixed_height_from_font(VALUE self, VALUE number_of_rows) { gtk_cell_renderer_text_set_fixed_height_from_font(_SELF(self), NUM2INT(number_of_rows)); return self; }
/** * \fn createFilterDialog * \brief Create the dialog including list of all filters available on the left. * */ GtkWidget * createFilterDialog (void) { dialog = create_dialog1(); //connect toolbar #define CALLME_TOOLBAR(x,y) gtk_signal_connect(GTK_OBJECT(WID(x)),"clicked", GTK_SIGNAL_FUNC(wrapToolButton), (void *) y); #define CALLME(x,y) gtk_dialog_add_action_widget (GTK_DIALOG (dialog), WID(x), y) // Each of these triggers the following message: // Gtk-CRITICAL **: gtk_box_pack_end: assertion `child->parent == NULL' failed CALLME (buttonRemove, A_REMOVE); CALLME (buttonProperties, A_CONFIGURE); CALLME (buttonUp, A_UP); CALLME (buttonDown, A_DOWN); CALLME (buttonPreview, A_PREVIEW); CALLME (buttonPartial, A_PARTIAL); CALLME (buttonAdd, A_ADD); CALLME_TOOLBAR (toolbuttonHalfD1, A_HALFD1); CALLME_TOOLBAR (toolbuttonScript, A_SCRIPT); CALLME_TOOLBAR (toolbuttonVCD, A_VCD); CALLME_TOOLBAR (toolbuttonSVCD, A_SVCD); CALLME_TOOLBAR (toolbuttonDVD, A_DVD); CALLME_TOOLBAR (toolbuttonSave, A_SAVE); CALLME_TOOLBAR (toolbuttonScript, A_SAVE); CALLME_TOOLBAR (toolbuttonOpen, A_LOAD); //create treeviews // Treeview zero is reserved and does not contain // trees[0]=lookup_widget(dialog,"treeview0"); stores[0]=gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER); #define LOOK(x) {trees[x]=lookup_widget(dialog,"treeview"#x);\ stores[x]=gtk_list_store_new (1, G_TYPE_STRING);} LOOK(1); LOOK(2); LOOK(3); LOOK(4); LOOK(5); LOOK(6); LOOK(7); LOOK(8); //load stores with filter names, get start filter for each page char *str=NULL; GtkTreeIter iter; // Dispatch each category to the matching tree for(int current_tree=0;current_tree< VF_MAX;current_tree++) { std::vector <FilterDescriptor *> vec=filterCategories[current_tree]; for (uint32_t i = 0; i < vec.size(); i++) { str = g_strconcat( "<span weight=\"bold\">", vec[i]->name, "</span>\n", "<span size=\"smaller\">", vec[i]->description, "</span>", NULL); gtk_list_store_append (stores[current_tree+1], &iter); gtk_list_store_set (stores[current_tree+1], &iter, 0, str ,-1); g_free(str); max++; } } //setup treeviews for(int i=0;i<VF_MAX+1;i++) { renderers[i] = gtk_cell_renderer_text_new(); columns[i] = gtk_tree_view_column_new_with_attributes ( "", renderers[i], "markup", (GdkModifierType) 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT(renderers[i]), 3); g_object_set(renderers[i], "wrap-width", 0, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW (trees[i]), columns[i]); gtk_tree_view_set_model(GTK_TREE_VIEW(trees[i]),GTK_TREE_MODEL (stores[i])); // Add double click, 0 is active filter tree if(i) g_signal_connect (G_OBJECT(trees[i]), "row-activated", G_CALLBACK(on_action_double_click), (void *) dialog); else { gtk_tree_view_set_reorderable(GTK_TREE_VIEW(trees[i]), true); g_signal_connect(G_OBJECT(WID(treeview0)), "row-activated", G_CALLBACK(on_action_double_click_1), (void *)NULL); row_inserted_id=g_signal_connect(G_OBJECT(stores[i]), "row-inserted", G_CALLBACK(on_treeview0_row_inserted), (void *)NULL); row_deleted_id=g_signal_connect(G_OBJECT(stores[i]), "row-deleted", G_CALLBACK(on_treeview0_row_deleted), (void *)NULL); } g_signal_connect(G_OBJECT(trees[i]), "size-allocate", G_CALLBACK(on_treeview1_size_allocate), renderers[i]); } return dialog; }
static void _dtv_init (DiagramTreeView *dtv) { GtkTreeViewColumn *column; GtkCellRenderer *cell; gint font_size; GtkStyle *style; /* connect the model with the view */ gtk_tree_view_set_model (GTK_TREE_VIEW (dtv), diagram_tree_model_new ()); gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (dtv), TRUE); /* the tree requires reading across rows (semantic hint) */ #if 0 /* stripe style */ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (dtv), TRUE); #endif style = gtk_widget_get_style (GTK_WIDGET (dtv)); font_size = pango_font_description_get_size (style->font_desc); font_size = PANGO_PIXELS (font_size); /* first colum: name of diagram/layer/object - here is the tree */ cell = gtk_cell_renderer_text_new (); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (cell), 1); g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Name")); gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_min_width (column, font_size * 10); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_column_set_resizable (column, TRUE); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_tree_view_column_add_attribute (column, cell, "text", NAME_COLUMN); gtk_tree_view_insert_column (GTK_TREE_VIEW (dtv), column, -1); /* this is enough for simple name search (just typing) */ gtk_tree_view_set_search_column (GTK_TREE_VIEW (dtv), NAME_COLUMN); /* must have a sortable model ... */ gtk_tree_view_column_set_sort_column_id (column, NAME_COLUMN); /* type column - show the type icon */ column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Type")); /* must have fixed size, too */ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); /* without it gets zero size - not very useful! */ gtk_tree_view_column_set_min_width (column, font_size * 6); gtk_tree_view_column_set_resizable (column, TRUE); cell = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (column), cell, _dtv_cell_pixbuf_func, dtv, NULL); gtk_tree_view_insert_column (GTK_TREE_VIEW (dtv), column, -1); gtk_tree_view_column_set_sort_column_id (column, OBJECT_COLUMN); /* TODO: other fancy stuff */ { GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dtv)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (dtv), TRUE); } gtk_widget_set_has_tooltip (GTK_WIDGET (dtv), TRUE); _dtv_create_popup_menu (dtv); }
void load_interface(cam* cam) { gchar *title; GdkPixbuf *logo = NULL; GtkTreeView* treeview = GTK_TREE_VIEW(glade_xml_get_widget(cam->xml, "treeview_effects")); GtkCellRenderer* cell; menu_item_filter_type = g_quark_from_static_string("camorama-menu-item-filter-type"); /* set up the tree view */ cell = gtk_cell_renderer_text_new(); g_object_set(cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(cell), 1); gtk_tree_view_insert_column_with_attributes(treeview, -1, _("Effects"), cell, "text", CAMORAMA_FILTER_CHAIN_COL_NAME, NULL); cam->filter_chain = camorama_filter_chain_new(); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(cam->filter_chain)); g_object_unref(cam->filter_chain); g_signal_connect_swapped(treeview, "button-press-event", G_CALLBACK(treeview_clicked_cb), cam); g_signal_connect_swapped(treeview, "popup-menu", G_CALLBACK(treeview_popup_menu_cb), cam); logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(glade_xml_get_widget(cam->xml, "main_window"))), CAMORAMA_STOCK_WEBCAM, 24, 0, NULL); gtk_window_set_default_icon(logo); logo = (GdkPixbuf *) create_pixbuf (PACKAGE_DATA_DIR "/pixmaps/camorama.png"); if (logo == NULL) { printf ("\n\nLOGO NO GO\n\n"); } if (cam->show_adjustments == FALSE) { gtk_widget_hide (glade_xml_get_widget (cam->xml, "adjustments_table")); gtk_window_resize (GTK_WINDOW (glade_xml_get_widget (cam->xml, "main_window")), 320, 240); } gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(glade_xml_get_widget(cam->xml, "showadjustment_item")), cam->show_adjustments); if (cam->show_effects == FALSE) { gtk_widget_hide (glade_xml_get_widget (cam->xml, "scrolledwindow_effects")); gtk_window_resize (GTK_WINDOW (glade_xml_get_widget (cam->xml, "main_window")), 320, 240); } gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(glade_xml_get_widget(cam->xml, "show_effects")), cam->show_effects); cam->tray_icon = gtk_status_icon_new_from_stock (CAMORAMA_STOCK_WEBCAM); update_tooltip (cam); /* add the status to the plug */ g_object_set_data (G_OBJECT (cam->tray_icon), "available", GINT_TO_POINTER (1)); g_object_set_data (G_OBJECT (cam->tray_icon), "embedded", GINT_TO_POINTER (0)); g_signal_connect (cam->tray_icon, "popup-menu", G_CALLBACK (tray_clicked_callback), cam); /* connect the signals in the interface * glade_xml_signal_autoconnect(xml); * this won't work, can't pass data to callbacks. have to do it individually :(*/ title = g_strdup_printf ("Camorama - %s - %dx%d", cam->vid_cap.name, cam->x, cam->y); gtk_window_set_title (GTK_WINDOW (glade_xml_get_widget (cam->xml, "main_window")), title); g_free (title); gtk_window_set_icon (GTK_WINDOW (glade_xml_get_widget (cam->xml, "main_window")), logo); gtk_window_set_icon (GTK_WINDOW (glade_xml_get_widget (cam->xml, "prefswindow")), logo); glade_xml_signal_connect_data (cam->xml, "on_show_effects_activate", G_CALLBACK (on_show_effects_activate), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "togglebutton1"), cam->show_adjustments); glade_xml_signal_connect_data (cam->xml, "on_show_adjustments_activate", G_CALLBACK (on_show_adjustments_activate), cam); glade_xml_signal_connect_data (cam->xml, "on_large_activate", G_CALLBACK (on_change_size_activate), cam); glade_xml_signal_connect_data (cam->xml, "on_medium_activate", G_CALLBACK (on_change_size_activate), cam); glade_xml_signal_connect_data (cam->xml, "on_small_activate", G_CALLBACK (on_change_size_activate), cam); //glade_xml_signal_connect_data(cam->xml, "capture_func", G_CALLBACK(on_change_size_activate), cam); glade_xml_signal_connect_data (cam->xml, "capture_func", G_CALLBACK (capture_func), cam); glade_xml_signal_connect_data (cam->xml, "gtk_main_quit", G_CALLBACK (delete_event), NULL); /* sliders */ glade_xml_signal_connect_data (cam->xml, "contrast_change", G_CALLBACK (contrast_change), cam); gtk_range_set_value ((GtkRange *) glade_xml_get_widget (cam->xml, "slider2"), (int) (cam->contrast / 256)); glade_xml_signal_connect_data (cam->xml, "brightness_change", G_CALLBACK (brightness_change), cam); gtk_range_set_value ((GtkRange *) glade_xml_get_widget (cam->xml, "slider3"), (int) (cam->brightness / 256)); glade_xml_signal_connect_data (cam->xml, "colour_change", G_CALLBACK (colour_change), cam); gtk_range_set_value ((GtkRange *) glade_xml_get_widget (cam->xml, "slider4"), (int) (cam->colour / 256)); glade_xml_signal_connect_data (cam->xml, "hue_change", G_CALLBACK (hue_change), cam); gtk_range_set_value ((GtkRange *) glade_xml_get_widget (cam->xml, "slider5"), (int) (cam->hue / 256)); glade_xml_signal_connect_data (cam->xml, "wb_change", G_CALLBACK (wb_change), cam); gtk_range_set_value ((GtkRange *) glade_xml_get_widget (cam->xml, "slider6"), (int) (cam->wb / 256)); /* buttons */ glade_xml_signal_connect_data (cam->xml, "on_status_show", G_CALLBACK (on_status_show), (gpointer) cam); glade_xml_signal_connect_data (cam->xml, "on_quit_activate", G_CALLBACK (on_quit_activate), (gpointer) cam); glade_xml_signal_connect_data (cam->xml, "on_preferences1_activate", G_CALLBACK (on_preferences1_activate), (gpointer) cam); glade_xml_signal_connect_data (cam->xml, "on_about_activate", G_CALLBACK (on_about_activate), (gpointer) cam); /* prefs */ glade_xml_signal_connect_data (cam->xml, "prefs_func", G_CALLBACK (prefs_func), cam); /* general */ glade_xml_signal_connect_data (cam->xml, "cap_func", G_CALLBACK (cap_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "captured_cb"), cam->cap); glade_xml_signal_connect_data (cam->xml, "rcap_func", G_CALLBACK (rcap_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "rcapture"), cam->rcap); glade_xml_signal_connect_data (cam->xml, "acap_func", G_CALLBACK (acap_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "acapture"), cam->acap); glade_xml_signal_connect_data (cam->xml, "interval_change", G_CALLBACK (interval_change), cam); gtk_spin_button_set_value ((GtkSpinButton *) glade_xml_get_widget (cam->xml, "interval_entry"), (cam->timeout_interval / 60000)); /* local */ dentry = glade_xml_get_widget (cam->xml, "dentry"); entry2 = glade_xml_get_widget (cam->xml, "entry2"); gtk_entry_set_text (GTK_ENTRY (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (dentry))), cam->pixdir); gtk_entry_set_text (GTK_ENTRY (entry2), cam->capturefile); glade_xml_signal_connect_data (cam->xml, "append_func", G_CALLBACK (append_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "appendbutton"), cam->timefn); glade_xml_signal_connect_data (cam->xml, "jpg_func", G_CALLBACK (jpg_func), cam); if (cam->savetype == JPEG) { gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "jpgb"), TRUE); } glade_xml_signal_connect_data (cam->xml, "png_func", G_CALLBACK (png_func), cam); if (cam->savetype == PNG) { gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "pngb"), TRUE); } glade_xml_signal_connect_data (cam->xml, "ts_func", G_CALLBACK (ts_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "tsbutton"), cam->timestamp); /* remote */ login_entry = glade_xml_get_widget (cam->xml, "login_entry"); host_entry = glade_xml_get_widget (cam->xml, "host_entry"); pw_entry = glade_xml_get_widget (cam->xml, "pw_entry"); directory_entry = glade_xml_get_widget (cam->xml, "directory_entry"); filename_entry = glade_xml_get_widget (cam->xml, "filename_entry"); gtk_entry_set_text (GTK_ENTRY (host_entry), cam->rhost); gtk_entry_set_text (GTK_ENTRY (login_entry), cam->rlogin); gtk_entry_set_text (GTK_ENTRY (pw_entry), cam->rpw); gtk_entry_set_text (GTK_ENTRY (directory_entry), cam->rpixdir); gtk_entry_set_text (GTK_ENTRY (filename_entry), cam->rcapturefile); glade_xml_signal_connect_data (cam->xml, "rappend_func", G_CALLBACK (rappend_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "timecb"), cam->rtimefn); glade_xml_signal_connect_data (cam->xml, "rjpg_func", G_CALLBACK (rjpg_func), cam); if (cam->rsavetype == JPEG) { gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "fjpgb"), TRUE); } glade_xml_signal_connect_data (cam->xml, "rpng_func", G_CALLBACK (rpng_func), cam); if (cam->rsavetype == PNG) { gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "fpngb"), TRUE); } glade_xml_signal_connect_data (cam->xml, "rts_func", G_CALLBACK (rts_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "tsbutton2"), cam->rtimestamp); /* timestamp */ glade_xml_signal_connect_data (cam->xml, "customstring_func", G_CALLBACK (customstring_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "cscb"), cam->usestring); string_entry = glade_xml_get_widget (cam->xml, "string_entry"); gtk_entry_set_text (GTK_ENTRY (string_entry), cam->ts_string); glade_xml_signal_connect_data (cam->xml, "drawdate_func", G_CALLBACK (drawdate_func), cam); gtk_toggle_button_set_active ((GtkToggleButton *) glade_xml_get_widget (cam->xml, "tscb"), cam->usedate); cam->status = glade_xml_get_widget (cam->xml, "status"); set_sensitive (cam); gtk_widget_set_sensitive (glade_xml_get_widget (cam->xml, "string_entry"), cam->usestring); gtk_widget_set_size_request (glade_xml_get_widget (cam->xml, "da"), cam->x, cam->y); prefswindow = glade_xml_get_widget (cam->xml, "prefswindow"); }
static void cv_tree_init (chanview *cv) { GtkWidget *view, *win; GtkCellRenderer *renderer; GtkTreeViewColumn *col; int wid1, wid2; static const GtkTargetEntry dnd_src_target[] = { {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } }; static const GtkTargetEntry dnd_dest_target[] = { {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } }; win = gtk_scrolled_window_new (0, 0); /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (cv->box), win); gtk_widget_show (win); view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); gtk_widget_set_name (view, "xchat-tree"); if (cv->style) gtk_widget_set_style (view, cv->style); /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ gtk_widget_set_can_focus (view, FALSE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); if (prefs.pchat_gui_tab_dots) { gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); } /* Indented channels with no server looks silly, but we still want expanders */ if (!prefs.pchat_gui_tab_server) { gtk_widget_style_get (view, "expander-size", &wid1, "horizontal-separator", &wid2, NULL); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (view), -wid1 - wid2); } gtk_container_add (GTK_CONTAINER (win), view); col = gtk_tree_view_column_new(); /* icon column */ if (cv->use_icons) { renderer = gtk_cell_renderer_pixbuf_new (); if (prefs.pchat_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_tree_view_column_pack_start(col, renderer, FALSE); gtk_tree_view_column_set_attributes (col, renderer, "pixbuf", COL_PIXBUF, NULL); } /* main column */ renderer = gtk_cell_renderer_text_new (); if (prefs.pchat_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_column_pack_start(col, renderer, TRUE); gtk_tree_view_column_set_attributes (col, renderer, "text", COL_NAME, "attributes", COL_ATTR, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), "changed", G_CALLBACK (cv_tree_sel_cb), cv); g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (cv_tree_click_cb), cv); g_signal_connect (G_OBJECT (view), "row-activated", G_CALLBACK (cv_tree_activated_cb), NULL); g_signal_connect (G_OBJECT (view), "scroll_event", G_CALLBACK (cv_tree_scroll_event_cb), NULL); gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); g_signal_connect (G_OBJECT (view), "drag_begin", G_CALLBACK (mg_drag_begin_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_drop", G_CALLBACK (mg_drag_drop_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_motion", G_CALLBACK (mg_drag_motion_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_end", G_CALLBACK (mg_drag_end_cb), NULL); ((treeview *)cv)->tree = GTK_TREE_VIEW (view); ((treeview *)cv)->scrollw = win; gtk_widget_show (view); }
static void bt_settings_page_interaction_controller_init_ui (const BtSettingsPageInteractionController * self, GtkWidget * pages) { GtkWidget *label, *widget, *scrolled_window; GtkCellRenderer *renderer; GtkTreeViewColumn *tree_col; GtkTreeSelection *tree_sel; BtIcRegistry *ic_registry; gchar *str; gtk_widget_set_name (GTK_WIDGET (self), "interaction controller settings"); // create the widget already so that we can set the initial text self->priv->message = GTK_LABEL (gtk_label_new (NULL)); g_object_set (GTK_WIDGET (self->priv->message), "hexpand", TRUE, NULL); // add setting widgets label = gtk_label_new (NULL); str = g_strdup_printf ("<big><b>%s</b></big>", _("Interaction Controller")); gtk_label_set_markup (GTK_LABEL (label), str); g_free (str); g_object_set (label, "xalign", 0.0, NULL); gtk_grid_attach (GTK_GRID (self), label, 0, 0, 3, 1); gtk_grid_attach (GTK_GRID (self), gtk_label_new (" "), 0, 1, 1, 3); label = gtk_label_new (_("Device")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (self), label, 1, 1, 1, 1); widget = gtk_combo_box_new (); self->priv->device_menu = GTK_COMBO_BOX (widget); renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_set_fixed_size (renderer, 1, -1); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (self->priv->device_menu), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (self->priv->device_menu), renderer, "text", DEVICE_MENU_LABEL, NULL); // get list of devices from libbtic and listen to changes g_object_get (self->priv->app, "ic-registry", &ic_registry, NULL); g_signal_connect_object (ic_registry, "notify::devices", G_CALLBACK (on_ic_registry_devices_changed), (gpointer) self, 0); g_object_unref (ic_registry); g_object_set (widget, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (self), widget, 2, 1, 1, 1); g_signal_connect (widget, "changed", G_CALLBACK (on_device_menu_changed), (gpointer) self); // add list of controllers (updated when selecting a device) scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); self->priv->controller_list = GTK_TREE_VIEW (gtk_tree_view_new ()); g_object_set (self->priv->controller_list, "enable-search", FALSE, "rules-hint", TRUE, NULL); // have this first as the last column gets the remaining space (always :/) renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_insert_column_with_attributes (self->priv->controller_list, -1, _("In use"), renderer, "active", CONTROLLER_LIST_USED, NULL); self->priv->id_renderer = renderer = gtk_cell_renderer_text_new (); //gtk_cell_renderer_set_fixed_size (renderer, 1, -1); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); g_signal_connect (renderer, "edited", G_CALLBACK (on_control_name_edited), (gpointer) self); if ((tree_col = gtk_tree_view_column_new_with_attributes (_("Controller"), renderer, "text", CONTROLLER_LIST_LABEL, NULL)) ) { g_object_set (tree_col, "expand", TRUE, NULL); gtk_tree_view_insert_column (self->priv->controller_list, tree_col, -1); } else GST_WARNING ("can't create treeview column"); tree_sel = gtk_tree_view_get_selection (self->priv->controller_list); gtk_tree_selection_set_mode (tree_sel, GTK_SELECTION_BROWSE); g_signal_connect (tree_sel, "changed", G_CALLBACK (on_control_selected), (gpointer) self); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (self->priv->controller_list)); g_object_set (GTK_WIDGET (scrolled_window), "hexpand", TRUE, "vexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (self), GTK_WIDGET (scrolled_window), 1, 2, 2, 1); // add a message pane #if ! defined(USE_GUDEV) && ! defined(USE_ALSA) gtk_label_set_text (self->priv->message, _("This package has been built without GUdev and Alsa support and thus " "supports no interaction controllers.")); #endif gtk_grid_attach (GTK_GRID (self), GTK_WIDGET (self->priv->message), 0, 3, 3, 1); // listen to page changes g_signal_connect ((gpointer) pages, "notify::page", G_CALLBACK (on_page_switched), (gpointer) self); // initial refresh on_ic_registry_devices_changed (ic_registry, NULL, (gpointer) self); }
static void bt_crash_recover_dialog_init_ui (const BtCrashRecoverDialog * self) { GtkWidget *label, *icon, *hbox, *vbox, *btn, *entries_view; gchar *str; GtkCellRenderer *renderer; GtkListStore *store; GtkTreeIter tree_iter; GList *node; BtChangeLogFile *crash_entry; GST_DEBUG ("prepare crash recover dialog"); gtk_widget_set_name (GTK_WIDGET (self), "Unsaved song recovery"); gtk_window_set_title (GTK_WINDOW (self), _("Unsaved song recovery")); // add dialog commision widgets (okay) // FIXME(ensonic): add Okay, Cancel, Delete // select song + okay -> recover // select song + delete -> remove log gtk_dialog_add_button (GTK_DIALOG (self), _("_Close"), GTK_RESPONSE_CLOSE); // content area hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); icon = gtk_image_new_from_icon_name ("dialog-information", GTK_ICON_SIZE_DIALOG); gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); str = g_strdup_printf ("<big><b>%s</b></big>\n%s\n", _("Unsaved songs found"), _("Select them one by one and choose 'recover' or 'delete'.")); label = g_object_new (GTK_TYPE_LABEL, "use-markup", TRUE, "label", str, NULL); g_free (str); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); self->priv->entries_list = GTK_TREE_VIEW (gtk_tree_view_new ()); g_object_set (self->priv->entries_list, "enable-search", FALSE, "rules-hint", TRUE, /*"fixed-height-mode",TRUE, */// causes the first column to be not shown (or getting width=0) NULL); gtk_tree_selection_set_mode (gtk_tree_view_get_selection (self-> priv->entries_list), GTK_SELECTION_BROWSE); g_signal_connect (self->priv->entries_list, "realize", G_CALLBACK (on_list_realize), (gpointer) self); renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); /* column listing song file names to recover */ gtk_tree_view_insert_column_with_attributes (self->priv->entries_list, -1, _("Song file"), renderer, "text", COL_SONG_FILE_NAME, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); /* column listing song file names to recover */ gtk_tree_view_insert_column_with_attributes (self->priv->entries_list, -1, _("Last changed"), renderer, "text", COL_CHANGE_TS, NULL); // fill model from self->priv->entries store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); for (node = self->priv->entries; node; node = g_list_next (node)) { crash_entry = (BtChangeLogFile *) node->data; gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LOG_NAME, crash_entry->log_name, COL_SONG_FILE_NAME, crash_entry->song_file_name, COL_CHANGE_TS, crash_entry->change_ts, -1); } gtk_tree_view_set_model (self->priv->entries_list, GTK_TREE_MODEL (store)); g_object_unref (store); // drop with treeview entries_view = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (entries_view), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (entries_view), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (entries_view), GTK_WIDGET (self->priv->entries_list)); gtk_box_pack_start (GTK_BOX (vbox), entries_view, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), hbox, TRUE, TRUE, 0); // add "undelete" button to action area // GTK_STOCK_REVERT_TO_SAVED btn = gtk_dialog_add_button (GTK_DIALOG (self), _("Recover"), GTK_RESPONSE_NONE); // we send close once we recovered the log g_signal_connect (btn, "clicked", G_CALLBACK (on_recover_clicked), (gpointer) self); btn = gtk_dialog_add_button (GTK_DIALOG (self), _("Delete"), GTK_RESPONSE_NONE); g_signal_connect (btn, "clicked", G_CALLBACK (on_delete_clicked), (gpointer) self); }
static void bt_settings_dialog_init_ui (const BtSettingsDialog * self) { GtkWidget *box, *scrolled_window, *pages; GtkCellRenderer *renderer; GtkListStore *store; GtkTreeIter tree_iter; gtk_widget_set_name (GTK_WIDGET (self), "buzztrax settings"); //gtk_widget_set_size_request(GTK_WIDGET(self),800,600); gtk_window_set_title (GTK_WINDOW (self), _("buzztrax settings")); // add dialog commision widgets (okay, cancel) gtk_dialog_add_buttons (GTK_DIALOG (self), _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_ACCEPT); // add widgets to the dialog content area box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_container_set_border_width (GTK_CONTAINER (box), 6); // add a list on the right and a notebook without tabs on the left scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); self->priv->settings_list = GTK_TREE_VIEW (gtk_tree_view_new ()); gtk_tree_view_set_headers_visible (self->priv->settings_list, FALSE); renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_insert_column_with_attributes (self->priv->settings_list, -1, NULL, renderer, "icon-name", COL_ICON_NAME, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_insert_column_with_attributes (self->priv->settings_list, -1, NULL, renderer, "text", COL_LABEL, NULL); gtk_tree_selection_set_mode (gtk_tree_view_get_selection (self-> priv->settings_list), GTK_SELECTION_BROWSE); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (self->priv->settings_list)); gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (scrolled_window), FALSE, FALSE, 0); g_signal_connect (self->priv->settings_list, "realize", G_CALLBACK (on_settings_list_realize), (gpointer) scrolled_window); g_signal_connect (self->priv->settings_list, "cursor-changed", G_CALLBACK (on_settings_list_cursor_changed), (gpointer) self); store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_LONG, G_TYPE_STRING); //-- append entries for settings pages gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("Audio Devices"), COL_ID, BT_SETTINGS_PAGE_AUDIO_DEVICES, COL_ICON_NAME, "audio-card", -1); gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("Directories"), COL_ID, BT_SETTINGS_PAGE_DIRECTORIES, COL_ICON_NAME, "folder", -1); gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("Interaction Controller"), COL_ID, BT_SETTINGS_PAGE_INTERACTION_CONTROLLER, COL_ICON_NAME, "input-gaming", -1); gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("Playback Controller"), COL_ID, BT_SETTINGS_PAGE_PLAYBACK_CONTROLLER, COL_ICON_NAME, "media-playback-start", -1); gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("Shortcuts"), COL_ID, BT_SETTINGS_PAGE_SHORTCUTS, COL_ICON_NAME, "input-keyboard", -1); gtk_list_store_append (store, &tree_iter); gtk_list_store_set (store, &tree_iter, COL_LABEL, _("User interface"), COL_ID, BT_SETTINGS_PAGE_UI, COL_ICON_NAME, "preferences-desktop-theme", -1); gtk_tree_view_set_model (self->priv->settings_list, GTK_TREE_MODEL (store)); g_object_unref (store); // drop with treeview // add notebook pages = gtk_notebook_new (); self->priv->settings_pages = GTK_NOTEBOOK (pages); gtk_widget_set_name (pages, "settings pages"); gtk_notebook_set_show_tabs (self->priv->settings_pages, FALSE); gtk_notebook_set_show_border (self->priv->settings_pages, FALSE); gtk_container_add (GTK_CONTAINER (box), pages); // add audio device page self->priv->audiodevices_page = bt_settings_page_audiodevices_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->audiodevices_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_AUDIO_DEVICES), gtk_label_new (_("Audio Devices"))); // add directories page self->priv->directories_page = bt_settings_page_directories_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->directories_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_DIRECTORIES), gtk_label_new (_("Directories"))); // add interaction controller page self->priv->interaction_controller_page = bt_settings_page_interaction_controller_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->interaction_controller_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_INTERACTION_CONTROLLER), gtk_label_new (_("Interaction Controller"))); // add playback controller page self->priv->playback_controller_page = bt_settings_page_playback_controller_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->playback_controller_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_PLAYBACK_CONTROLLER), gtk_label_new (_("Playback Controller"))); // add shortcuts pags self->priv->shortcuts_page = bt_settings_page_shortcuts_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->shortcuts_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_SHORTCUTS), gtk_label_new (_("Shortcuts"))); // add ui page self->priv->ui_page = bt_settings_page_ui_new (pages); gtk_container_add (GTK_CONTAINER (self->priv->settings_pages), GTK_WIDGET (self->priv->ui_page)); gtk_notebook_set_tab_label (GTK_NOTEBOOK (self->priv->settings_pages), gtk_notebook_get_nth_page (GTK_NOTEBOOK (self->priv->settings_pages), BT_SETTINGS_PAGE_UI), gtk_label_new (_("User Interface"))); /* TODO(ensonic): more settings * - misc * - initial song bpm (from, to) * - cpu monitor (view menu?) */ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), box, TRUE, TRUE, 0); }