static void search_box_init (SearchBox *search_box) { search_box->priv = GET_PRIVATE(search_box); GList* focus_chain = NULL; /* Button images */ GtkWidget* close = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); /* Searching */ search_box->priv->search_entry = gtk_entry_new(); gtk_widget_set_tooltip_text (search_box->priv->search_entry, _("Use the context menu of the \"Find\" icon for more search options")); g_signal_connect_swapped (G_OBJECT (search_box->priv->search_entry), "activate", G_CALLBACK (search_box_forward_search), search_box); g_signal_connect (G_OBJECT (search_box), "key-press-event", G_CALLBACK (on_search_box_key_pressed), search_box); g_signal_connect (G_OBJECT (search_box->priv->search_entry), "changed", G_CALLBACK (on_search_box_entry_changed), search_box); g_signal_connect (G_OBJECT (search_box->priv->search_entry), "focus-out-event", G_CALLBACK (on_search_focus_out), search_box); g_signal_connect (G_OBJECT (search_box->priv->search_entry), "icon-press", G_CALLBACK (on_search_entry_icon_pressed), search_box); g_signal_connect (G_OBJECT (search_box->priv->search_entry), "popup-menu", G_CALLBACK (on_search_entry_popup_menu), search_box); search_box->priv->close_button = gtk_button_new(); gtk_button_set_image (GTK_BUTTON (search_box->priv->close_button), close); gtk_button_set_relief (GTK_BUTTON (search_box->priv->close_button), GTK_RELIEF_NONE); g_signal_connect (G_OBJECT (search_box->priv->close_button), "clicked", G_CALLBACK (on_search_box_hide), search_box); /* Previous, Next Navigation */ search_box->priv->next_button = gtk_button_new (); gtk_container_add (GTK_CONTAINER (search_box->priv->next_button), gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON)); gtk_button_set_relief (GTK_BUTTON (search_box->priv->next_button), GTK_RELIEF_NONE); g_signal_connect_swapped (G_OBJECT(search_box->priv->next_button), "clicked", G_CALLBACK (search_box_forward_search), search_box); search_box->priv->previous_button = gtk_button_new (); gtk_container_add (GTK_CONTAINER (search_box->priv->previous_button), gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON)); gtk_button_set_relief (GTK_BUTTON (search_box->priv->previous_button), GTK_RELIEF_NONE); g_signal_connect (G_OBJECT(search_box->priv->previous_button), "clicked", G_CALLBACK (on_search_box_backward_search), search_box); /* Goto line */ search_box->priv->goto_entry = gtk_entry_new (); gtk_entry_set_width_chars (GTK_ENTRY (search_box->priv->goto_entry), LINE_ENTRY_WIDTH); gtk_entry_set_icon_from_stock (GTK_ENTRY (search_box->priv->goto_entry), GTK_ENTRY_ICON_SECONDARY, ANJUTA_STOCK_GOTO_LINE); g_signal_connect (G_OBJECT (search_box->priv->goto_entry), "activate", G_CALLBACK (on_goto_activated), search_box); g_signal_connect (G_OBJECT (search_box->priv->goto_entry), "key-press-event", G_CALLBACK (on_goto_key_pressed), search_box); /* Replace */ search_box->priv->replace_entry = gtk_entry_new(); g_signal_connect (G_OBJECT (search_box->priv->replace_entry), "activate", G_CALLBACK (on_replace_activated), search_box); search_box->priv->replace_button = gtk_button_new_with_label(_("Replace")); gtk_button_set_relief (GTK_BUTTON (search_box->priv->replace_button), GTK_RELIEF_NONE); g_signal_connect (G_OBJECT(search_box->priv->replace_button), "clicked", G_CALLBACK (on_replace_activated), search_box); search_box->priv->replace_all_button = gtk_button_new_with_label(_("Replace all")); gtk_button_set_relief (GTK_BUTTON (search_box->priv->replace_all_button), GTK_RELIEF_NONE); g_signal_connect (G_OBJECT(search_box->priv->replace_all_button), "clicked", G_CALLBACK (on_replace_all_activated), search_box); /* Popup Menu Options */ search_box->priv->regex_mode = FALSE; search_box->priv->highlight_all = FALSE; search_box->priv->case_sensitive = FALSE; /* Highlight iterator */ search_box->priv->start_highlight = NULL; search_box->priv->end_highlight = NULL; search_box->priv->idle_id = 0; /* Initialize search_box grid */ search_box->priv->grid = gtk_grid_new(); gtk_orientable_set_orientation (GTK_ORIENTABLE (search_box->priv->grid), GTK_ORIENTATION_VERTICAL); gtk_grid_set_row_spacing (GTK_GRID (search_box->priv->grid), 5); /* Attach search elements to grid */ gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->goto_entry, 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->search_entry, 1, 0, 1, 1); gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->previous_button, 2, 0, 1, 1); gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->next_button, 3, 0, 1, 1); gtk_grid_attach_next_to (GTK_GRID (search_box->priv->grid), search_box->priv->close_button, search_box->priv->next_button, GTK_POS_RIGHT, 1, 1); gtk_widget_set_hexpand(search_box->priv->close_button, TRUE); gtk_widget_set_halign(search_box->priv->close_button, GTK_ALIGN_END); /* Add Replace elements to search box on 2nd level */ gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->replace_entry, 1, 1, 1, 1); gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->replace_button, 2, 1, 1, 1); gtk_grid_attach (GTK_GRID (search_box->priv->grid), search_box->priv->replace_all_button, 3, 1, 1, 1); /* Expand search entries (a bit) */ gtk_entry_set_width_chars (GTK_ENTRY (search_box->priv->search_entry), SEARCH_ENTRY_WIDTH); gtk_entry_set_width_chars (GTK_ENTRY (search_box->priv->replace_entry), SEARCH_ENTRY_WIDTH); /* Set nice icons */ gtk_entry_set_icon_from_stock (GTK_ENTRY (search_box->priv->search_entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND); gtk_entry_set_icon_from_stock (GTK_ENTRY (search_box->priv->replace_entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND_AND_REPLACE); /* Pack grid into search box */ gtk_box_pack_start (GTK_BOX(search_box), search_box->priv->grid, TRUE, TRUE, 0); /* Set focus chain */ focus_chain = g_list_prepend (focus_chain, search_box->priv->search_entry); focus_chain = g_list_prepend (focus_chain, search_box->priv->replace_entry); focus_chain = g_list_prepend (focus_chain, search_box->priv->next_button); focus_chain = g_list_prepend (focus_chain, search_box->priv->previous_button); focus_chain = g_list_prepend (focus_chain, search_box->priv->replace_button); focus_chain = g_list_prepend (focus_chain, search_box->priv->replace_all_button); focus_chain = g_list_prepend (focus_chain, search_box->priv->goto_entry); focus_chain = g_list_prepend (focus_chain, search_box->priv->close_button); focus_chain = g_list_prepend (focus_chain, search_box->priv->search_entry); focus_chain = g_list_reverse (focus_chain); gtk_container_set_focus_chain (GTK_CONTAINER (search_box->priv->grid), focus_chain); g_list_free (focus_chain); /* Show all children but keep the top box hidden. */ gtk_widget_show_all (GTK_WIDGET (search_box)); gtk_widget_hide (GTK_WIDGET (search_box)); }
void columns_add(Columns *cols, GtkWidget *child, gint colstart, gint colspan) { ColumnsChild *childdata; g_return_if_fail(cols != NULL); g_return_if_fail(IS_COLUMNS(cols)); g_return_if_fail(child != NULL); g_return_if_fail(gtk_widget_get_parent(child) == NULL); childdata = g_new(ColumnsChild, 1); childdata->widget = child; childdata->colstart = colstart; childdata->colspan = colspan; childdata->force_left = FALSE; childdata->same_height_as = NULL; cols->children = g_list_append(cols->children, childdata); cols->taborder = g_list_append(cols->taborder, child); gtk_widget_set_parent(child, GTK_WIDGET(cols)); #if GTK_CHECK_VERSION(2, 0, 0) gtk_container_set_focus_chain(GTK_CONTAINER(cols), cols->taborder); #endif if (gtk_widget_get_realized(GTK_WIDGET(cols))) gtk_widget_realize(child); if (gtk_widget_get_visible(GTK_WIDGET(cols)) && gtk_widget_get_visible(child)) { if (gtk_widget_get_mapped(GTK_WIDGET(cols))) gtk_widget_map(child); gtk_widget_queue_resize(child); } }
/* documented in cdebconf_gtk.h */ GtkWidget * cdebconf_gtk_create_continue_button(struct frontend * fe) { struct frontend_data * fe_data = fe->data; GtkWidget * action_box = fe_data->action_box; GList * focus_chain; GtkWidget * button; char * label; /* XXX: check NULL! */ label = cdebconf_gtk_get_text(fe, "debconf/button-continue", "Continue"); button = gtk_button_new_with_label(label); g_free(label); g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(cdebconf_gtk_set_answer_ok), fe); gtk_box_pack_start(GTK_BOX(action_box), button, TRUE /* expand */, TRUE /* fill */, DEFAULT_PADDING); gtk_container_get_focus_chain(GTK_CONTAINER(action_box), &focus_chain); focus_chain = g_list_prepend(focus_chain, button); gtk_container_set_focus_chain(GTK_CONTAINER(action_box), focus_chain); g_list_free(focus_chain); gtk_widget_set_can_default(GTK_WIDGET(button), TRUE); gtk_widget_grab_default(GTK_WIDGET(button)); return button; }
GtkWidget* Console_constructWindow( GtkWindow* toplevel ){ GtkWidget* scr = gtk_scrolled_window_new( 0, 0 ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN ); gtk_widget_show( scr ); { GtkWidget* text = gtk_text_view_new(); gtk_widget_set_size_request( text, 0, -1 ); // allow shrinking gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( text ), GTK_WRAP_WORD ); gtk_text_view_set_editable( GTK_TEXT_VIEW( text ), FALSE ); gtk_container_add( GTK_CONTAINER( scr ), text ); gtk_widget_show( text ); g_console = text; //globalExtendedASCIICharacterSet().print(); widget_connect_escape_clear_focus_widget( g_console ); //g_consoleWidgetFocusPrinter.connect(g_console); g_signal_connect( G_OBJECT( g_console ), "populate-popup", G_CALLBACK( console_populate_popup ), 0 ); g_signal_connect( G_OBJECT( g_console ), "destroy", G_CALLBACK( destroy_set_null ), &g_console ); } //prevent focusing on text view after click on tab of floating group dialog (np, if called via hotkey) GtkWidget* vbox = gtk_vbox_new( FALSE, 0 ); gtk_widget_show( vbox ); gtk_box_pack_start( GTK_BOX( vbox ), scr, TRUE, TRUE, 0 ); gtk_container_set_focus_chain( GTK_CONTAINER( vbox ), NULL ); return vbox; }
static void fm_tab_page_init(FmTabPage *page) { GtkPaned* paned = GTK_PANED(page); FmTabLabel* tab_label; FmFolderView* folder_view; GList* focus_chain = NULL; FmSidePaneMode mode = app_config->side_pane_mode; page->side_pane = fm_side_pane_new(); fm_side_pane_set_mode(page->side_pane, (mode & FM_SP_MODE_MASK)); /* TODO: add a close button to side pane */ gtk_paned_add1(paned, GTK_WIDGET(page->side_pane)); focus_chain = g_list_prepend(focus_chain, page->side_pane); /* handlers below will be used when FmMainWin detects new page added */ folder_view = (FmFolderView*)fm_standard_view_new(app_config->view_mode, update_files_popup, open_folder_func); page->folder_view = folder_view; fm_folder_view_set_selection_mode(folder_view, GTK_SELECTION_MULTIPLE); page->nav_history = fm_nav_history_new(); gtk_paned_add2(paned, GTK_WIDGET(page->folder_view)); focus_chain = g_list_prepend(focus_chain, page->folder_view); /* We need this to change tab order to focus folder view before left pane. */ gtk_container_set_focus_chain(GTK_CONTAINER(page), focus_chain); g_list_free(focus_chain); gtk_widget_show_all(GTK_WIDGET(page)); if(mode & FM_SP_HIDE) gtk_widget_hide(GTK_WIDGET(page->side_pane)); /* create tab label */ tab_label = (FmTabLabel*)fm_tab_label_new(""); gtk_label_set_max_width_chars(tab_label->label, app_config->max_tab_chars); #if ! GTK_CHECK_VERSION(3, 0, 0) gtk_label_set_ellipsize(tab_label->label, PANGO_ELLIPSIZE_END); #endif page->tab_label = tab_label; g_signal_connect(page->folder_view, "sel-changed", G_CALLBACK(on_folder_view_sel_changed), page); /* g_signal_connect(page->folder_view, "chdir", G_CALLBACK(on_folder_view_chdir), page); g_signal_connect(page->folder_view, "loaded", G_CALLBACK(on_folder_view_loaded), page); g_signal_connect(page->folder_view, "error", G_CALLBACK(on_folder_view_error), page); */ /* the folder view is already loded, call the "loaded" callback ourself. */ //if(fm_folder_view_is_loaded(folder_view)) // on_folder_view_loaded(folder_view, fm_folder_view_get_cwd(folder_view), page); }
static void columns_remove(GtkContainer *container, GtkWidget *widget) { Columns *cols; ColumnsChild *child; GtkWidget *childw; GList *children; gboolean was_visible; g_return_if_fail(container != NULL); g_return_if_fail(IS_COLUMNS(container)); g_return_if_fail(widget != NULL); cols = COLUMNS(container); for (children = cols->children; children && (child = children->data); children = children->next) { if (child->widget != widget) continue; was_visible = gtk_widget_get_visible(widget); gtk_widget_unparent(widget); cols->children = g_list_remove_link(cols->children, children); g_list_free(children); if (child->same_height_as) { g_return_if_fail(child->same_height_as->same_height_as == child); child->same_height_as->same_height_as = NULL; if (gtk_widget_get_visible(child->same_height_as->widget)) gtk_widget_queue_resize(GTK_WIDGET(container)); } g_free(child); if (was_visible) gtk_widget_queue_resize(GTK_WIDGET(container)); break; } for (children = cols->taborder; children && (childw = children->data); children = children->next) { if (childw != widget) continue; cols->taborder = g_list_remove_link(cols->taborder, children); g_list_free(children); #if GTK_CHECK_VERSION(2, 0, 0) gtk_container_set_focus_chain(container, cols->taborder); #endif break; } }
static void gimp_message_box_init (GimpMessageBox *box) { gint i; gtk_orientable_set_orientation (GTK_ORIENTABLE (box), GTK_ORIENTATION_VERTICAL); gtk_box_set_spacing (GTK_BOX (box), 12); gtk_container_set_border_width (GTK_CONTAINER (box), 12); /* Unset the focus chain to keep the labels from being in the focus * chain. Users of GimpMessageBox that add focusable widgets should * either unset the focus chain or (better) explicitly set one. */ gtk_container_set_focus_chain (GTK_CONTAINER (box), NULL); for (i = 0; i < 2; i++) { GtkWidget *label = g_object_new (GTK_TYPE_LABEL, "wrap", TRUE, "wrap-mode", PANGO_WRAP_WORD_CHAR, "max-width-chars", 80, "selectable", TRUE, "xalign", 0.0, "yalign", 0.5, NULL); if (i == 0) gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); box->label[i] = label; } box->repeat = 0; box->label[2] = NULL; box->idle_id = 0; }
static void hcp_app_view_add_category (HCPCategory *category, HCPAppView *view) { /* If a group has items */ if (category->apps) { GtkWidget *grid, *separator; GtkListStore *store; GList *focus_chain = NULL; grid = hcp_app_view_create_grid (); store = hcp_app_view_create_store (); g_signal_connect (grid, "item-activated", G_CALLBACK (hcp_app_view_launch_app), NULL); /* If we are creating a group with a defined name, we use * it in the separator */ separator = hcp_app_view_create_separator (_(category->name)); gtk_box_pack_start (GTK_BOX (view), separator, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (view), GTK_WIDGET(grid), FALSE, FALSE, 0); gtk_container_get_focus_chain (GTK_CONTAINER (view), &focus_chain); focus_chain = g_list_append (focus_chain, grid); gtk_container_set_focus_chain (GTK_CONTAINER (view), focus_chain); g_list_free (focus_chain); gtk_icon_view_set_model (GTK_ICON_VIEW (grid), GTK_TREE_MODEL (store)); g_slist_foreach (category->apps, (GFunc) hcp_app_view_add_app, grid); hcp_grid_refresh_icons (HCP_GRID(grid)); /* first group */ if (!view->priv->first_grid) view->priv->first_grid = grid; } }
static void fm_tab_page_init(FmTabPage *page) { GtkPaned* paned = GTK_PANED(page); FmTabLabel* tab_label; FmFolderView* folder_view; GList* focus_chain = NULL; page->side_pane = fm_side_pane_new(); fm_side_pane_set_mode(FM_SIDE_PANE(page->side_pane), app_config->side_pane_mode); /* TODO: add a close button to side pane */ gtk_paned_add1(paned, page->side_pane); focus_chain = g_list_prepend(focus_chain, page->side_pane); page->folder_view = fm_folder_view_new(app_config->view_mode); folder_view = FM_FOLDER_VIEW(page->folder_view); fm_folder_view_set_hint_type(folder_view, app_config->hint_type); fm_folder_view_sort(folder_view, app_config->sort_type, app_config->sort_by); fm_folder_view_set_selection_mode(folder_view, GTK_SELECTION_MULTIPLE); page->nav_history = fm_nav_history_new(); gtk_paned_add2(paned, page->folder_view); focus_chain = g_list_prepend(focus_chain, page->folder_view); /* We need this to change tab order to focus folder view before left pane. */ gtk_container_set_focus_chain(page, focus_chain); g_list_free(focus_chain); gtk_widget_show_all(GTK_WIDGET(page)); /* create tab label */ tab_label = (FmTabLabel*)fm_tab_label_new(""); gtk_label_set_max_width_chars(tab_label->label, app_config->max_tab_chars); gtk_label_set_ellipsize(tab_label->label, PANGO_ELLIPSIZE_END); page->tab_label = GTK_WIDGET(tab_label); g_signal_connect(page->folder_view, "sel-changed", G_CALLBACK(on_folder_view_sel_changed), page); g_signal_connect(page->folder_view, "loaded", G_CALLBACK(on_folder_view_loaded), page); /* the folder view is already loded, call the "loaded" callback ourself. */ if(fm_folder_view_get_is_loaded(folder_view)) on_folder_view_loaded(folder_view, fm_folder_view_get_cwd(folder_view), page); }
void columns_taborder_last(Columns *cols, GtkWidget *widget) { GtkWidget *childw; GList *children; g_return_if_fail(cols != NULL); g_return_if_fail(IS_COLUMNS(cols)); g_return_if_fail(widget != NULL); for (children = cols->taborder; children && (childw = children->data); children = children->next) { if (childw != widget) continue; cols->taborder = g_list_remove_link(cols->taborder, children); g_list_free(children); cols->taborder = g_list_append(cols->taborder, widget); #if GTK_CHECK_VERSION(2, 0, 0) gtk_container_set_focus_chain(GTK_CONTAINER(cols), cols->taborder); #endif break; } }
// GtkBuilder generated dialog, using fixed widgets to closely match // the Windows layout, with some changes for color selector GtkWidget * XAP_UnixDialog_FontChooser::constructWindowContents(GtkWidget *) { GtkTreeSelection *selection; GtkWidget *vboxMain; GtkWidget *notebookMain; GtkWidget *labelFont; GtkWidget *labelStyle; GtkWidget *listFonts; GtkWidget *labelSize; GtkWidget *lblEffects; GtkWidget *grEffectRows; GtkWidget *checkbuttonStrikeout; GtkWidget *checkbuttonUnderline; GtkWidget *checkbuttonOverline; GtkWidget *checkbuttonHidden; GtkWidget *checkbuttonSubscript; GtkWidget *checkbuttonSuperscript; GtkWidget *listStyles; GtkWidget *listSizes; GtkWidget *hbox1; GtkWidget *colorSelector; GtkWidget *colorBGSelector; GtkWidget *labelTabFont; GtkWidget *labelTabColor; GtkWidget *labelTabBGColor; GtkWidget *frame4; // the entry is a special drawing area full of one // of our graphics contexts GtkWidget *entryArea; const XAP_StringSet * pSS = m_pApp->getStringSet(); vboxMain = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_show (vboxMain); notebookMain = gtk_notebook_new (); gtk_widget_show (notebookMain); gtk_box_pack_start (GTK_BOX (vboxMain), notebookMain, 1, 1, 0); gtk_container_set_border_width (GTK_CONTAINER (notebookMain), 8); GtkWidget *grid1; GtkWidget *scrolledwindow1; GtkWidget *scrolledwindow2; GtkWidget *scrolledwindow3; // GtkWidget *hboxForEncoding; grid1 = gtk_grid_new(); g_object_set(G_OBJECT(grid1), "row-spacing", 6, "column-spacing", 12, "border-width", 12, NULL); gtk_widget_show(grid1); std::string s; // Label for first page of the notebook pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_FontTab,s); labelTabFont = gtk_label_new (s.c_str()); gtk_widget_show (labelTabFont); // // Make first page of the notebook // gtk_notebook_append_page(GTK_NOTEBOOK(notebookMain), grid1, labelTabFont); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_FontLabel,s); labelFont = gtk_label_new (s.c_str()); gtk_widget_set_halign(labelFont, GTK_ALIGN_CENTER); gtk_widget_show(labelFont); gtk_grid_attach(GTK_GRID(grid1), labelFont, 0, 0, 1, 1); scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show (scrolledwindow1); gtk_grid_attach(GTK_GRID(grid1), scrolledwindow1, 0, 1, 1, 3); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); listFonts = createFontTabTreeView(); gtk_widget_show (listFonts); gtk_container_add (GTK_CONTAINER (scrolledwindow1), listFonts); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_StyleLabel,s); labelStyle = gtk_label_new (s.c_str()); gtk_widget_set_halign(labelStyle, GTK_ALIGN_CENTER); gtk_widget_show (labelStyle); gtk_grid_attach(GTK_GRID(grid1), labelStyle, 1, 0, 1, 1); scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow2); gtk_grid_attach(GTK_GRID(grid1), scrolledwindow2, 1, 1, 1, 1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_NEVER); listStyles = createFontTabTreeView(); gtk_widget_set_name (listStyles, "listStyles"); gtk_widget_show (listStyles); gtk_container_add (GTK_CONTAINER (scrolledwindow2), listStyles); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_SizeLabel,s); labelSize = gtk_label_new (s.c_str()); gtk_widget_set_halign(labelSize, GTK_ALIGN_CENTER); gtk_widget_show (labelSize); gtk_grid_attach(GTK_GRID(grid1), labelSize, 2, 0, 1, 1); scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow3); gtk_grid_attach(GTK_GRID(grid1), scrolledwindow3, 2, 1, 1, 1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); listSizes = createFontTabTreeView(); gtk_widget_show (listSizes); gtk_container_add (GTK_CONTAINER (scrolledwindow3), listSizes); grEffectRows = gtk_grid_new(); g_object_set(G_OBJECT(grEffectRows), "row-spacing", 6, "column-spacing", 12, "margin-top", 12, NULL); gtk_widget_show (grEffectRows); gtk_grid_attach(GTK_GRID(grid1), grEffectRows, 1, 2, 2, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_EffectsFrameLabel,s); s = std::string("<b>") + s + "</b>"; lblEffects = gtk_label_new (s.c_str()); g_object_set(lblEffects, "use-markup", true, "xalign", 0., NULL); gtk_widget_show(lblEffects); gtk_grid_attach(GTK_GRID(grEffectRows), lblEffects, 0, 0, 4, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_StrikeoutCheck,s); checkbuttonStrikeout = gtk_check_button_new_with_label (s.c_str()); gtk_widget_set_margin_start(checkbuttonStrikeout, 18); gtk_widget_show (checkbuttonStrikeout); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonStrikeout, 0, 1, 1, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_UnderlineCheck,s); checkbuttonUnderline = gtk_check_button_new_with_label (s.c_str()); gtk_widget_show (checkbuttonUnderline); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonUnderline, 1, 1, 1, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_OverlineCheck,s); checkbuttonOverline = gtk_check_button_new_with_label (s.c_str()); gtk_widget_show (checkbuttonOverline); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonOverline, 2, 1, 1, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_HiddenCheck,s); checkbuttonHidden = gtk_check_button_new_with_label (s.c_str()); gtk_widget_show (checkbuttonHidden); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonHidden, 3, 1, 1, 1); /* subscript/superscript */ pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_SubScript,s); checkbuttonSubscript = gtk_check_button_new_with_label (s.c_str()); gtk_widget_set_margin_start(checkbuttonSubscript, 18); gtk_widget_show (checkbuttonSubscript); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonSubscript, 0, 2, 1, 1); pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_SuperScript,s); checkbuttonSuperscript = gtk_check_button_new_with_label (s.c_str()); gtk_widget_show (checkbuttonSuperscript); gtk_grid_attach(GTK_GRID(grEffectRows), checkbuttonSuperscript, 1, 2, 1, 1); /* Notebook page for ForeGround Color Selector */ hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_widget_show (hbox1); // Label for second page of the notebook pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_ColorTab,s); labelTabColor = gtk_label_new (s.c_str()); gtk_widget_show (labelTabColor); // // Make second page of the notebook // gtk_notebook_append_page(GTK_NOTEBOOK(notebookMain), hbox1,labelTabColor); colorSelector = gtk_color_chooser_widget_new (); gtk_container_set_border_width(GTK_CONTAINER(colorSelector), 6); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(colorSelector), FALSE); gtk_widget_show (colorSelector); gtk_box_pack_start (GTK_BOX (hbox1), colorSelector, TRUE, TRUE, 0); /*Notebook page for Background Color Selector*/ GtkWidget * vboxBG = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_show (vboxBG); // Label for third page of the notebook pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_BGColorTab,s); labelTabBGColor = gtk_label_new (s.c_str()); gtk_widget_show (labelTabBGColor); // // Make third page of the notebook // gtk_notebook_append_page(GTK_NOTEBOOK(notebookMain), vboxBG,labelTabBGColor); colorBGSelector = gtk_color_chooser_widget_new (); gtk_container_set_border_width(GTK_CONTAINER(colorBGSelector), 6); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(colorBGSelector), FALSE); gtk_widget_show (colorBGSelector); gtk_box_pack_start (GTK_BOX (vboxBG), colorBGSelector, TRUE, TRUE, 0); // // Make a toggle button to set hightlight color transparent // pSS->getValueUTF8(XAP_STRING_ID_DLG_UFS_TransparencyCheck,s); GtkWidget * checkbuttonTrans = gtk_check_button_new_with_label (s.c_str()); gtk_container_set_border_width(GTK_CONTAINER(checkbuttonTrans), 6); gtk_widget_show (checkbuttonTrans); gtk_box_pack_start (GTK_BOX (vboxBG), checkbuttonTrans, TRUE, TRUE, 0); /* frame with preview */ frame4 = gtk_frame_new (NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame4), GTK_SHADOW_NONE); gtk_widget_show (frame4); gtk_box_pack_start (GTK_BOX (vboxMain), frame4, FALSE, FALSE, PREVIEW_BOX_BORDER_WIDTH_PIXELS); // setting the height takes into account the border applied on all // sides, so we need to double the single border width gtk_widget_set_size_request (frame4, -1, PREVIEW_BOX_HEIGHT_PIXELS + (PREVIEW_BOX_BORDER_WIDTH_PIXELS * 2)); gtk_container_set_border_width (GTK_CONTAINER (frame4), PREVIEW_BOX_BORDER_WIDTH_PIXELS); entryArea = gtk_drawing_area_new(); gtk_widget_set_events(entryArea, GDK_EXPOSURE_MASK); g_signal_connect(G_OBJECT(entryArea), "draw", G_CALLBACK(s_drawing_area_draw), NULL); gtk_widget_set_size_request (entryArea, -1, PREVIEW_BOX_HEIGHT_PIXELS); gtk_widget_show (entryArea); gtk_container_add (GTK_CONTAINER (frame4), entryArea); // save out to members for callback and class access m_fontList = listFonts; m_styleList = listStyles; m_sizeList = listSizes; m_colorSelector = colorSelector; m_bgcolorSelector = colorBGSelector; m_preview = entryArea; m_checkStrikeOut = checkbuttonStrikeout; m_checkUnderline = checkbuttonUnderline; m_checkOverline = checkbuttonOverline; m_checkSubScript = checkbuttonSubscript; m_checkSuperScript = checkbuttonSuperscript; m_checkHidden = checkbuttonHidden; m_checkTransparency = checkbuttonTrans; // bind signals to things g_signal_connect(G_OBJECT(m_checkUnderline), "toggled", G_CALLBACK(s_underline_toggled), static_cast<gpointer>(this)); g_signal_connect(G_OBJECT(m_checkOverline), "toggled", G_CALLBACK(s_overline_toggled), static_cast<gpointer>(this)); g_signal_connect(G_OBJECT(m_checkStrikeOut), "toggled", G_CALLBACK(s_strikeout_toggled), static_cast<gpointer>(this)); g_signal_connect(G_OBJECT(m_checkHidden), "toggled", G_CALLBACK(s_hidden_toggled), static_cast<gpointer>(this)); m_iSubScriptId = g_signal_connect(G_OBJECT(m_checkSubScript), "toggled", G_CALLBACK(s_subscript_toggled), static_cast<gpointer>(this)); m_iSuperScriptId = g_signal_connect(G_OBJECT(m_checkSuperScript), "toggled", G_CALLBACK(s_superscript_toggled), static_cast<gpointer>(this)); g_signal_connect(G_OBJECT(m_checkTransparency), "toggled", G_CALLBACK(s_transparency_toggled), static_cast<gpointer>(this)); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(listFonts)); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(s_select_row_font), static_cast<gpointer>(this)); selection = NULL; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(listStyles)); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(s_select_row_style), static_cast<gpointer>(this)); selection = NULL; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(listSizes)); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(s_select_row_size), static_cast<gpointer>(this)); selection = NULL; // This is a catch-all color selector callback which catches any // real-time updating of the color so we can refresh our preview // text g_signal_connect(G_OBJECT(colorSelector), #if GTK_CHECK_VERSION(3,4,0) "color-activated", #else "color-changed", //"event", #endif G_CALLBACK(s_color_update), static_cast<gpointer>(this)); g_signal_connect(G_OBJECT(colorBGSelector), #if GTK_CHECK_VERSION(3,4,0) "color-activated", #else "color-changed", //"event", #endif G_CALLBACK(s_bgcolor_update), static_cast<gpointer>(this)); gtk_widget_set_can_focus(listFonts, true); gtk_widget_set_can_focus(listStyles, true); gtk_widget_set_can_focus(listSizes, true); // Make the tab focus list more sensible // font -> syle -> size -> other options ... GList* focusList = NULL; focusList = g_list_append(focusList, scrolledwindow1); focusList = g_list_append(focusList, scrolledwindow2); focusList = g_list_append(focusList, scrolledwindow3); focusList = g_list_append(focusList, grEffectRows); gtk_container_set_focus_chain(GTK_CONTAINER(grid1), focusList); g_list_free(focusList); gtk_widget_grab_focus(scrolledwindow1); const gchar * text; GtkTreeModel* model; GtkTreeIter iter; // update the styles list model = gtk_tree_view_get_model(GTK_TREE_VIEW(m_styleList)); gtk_list_store_clear(GTK_LIST_STORE(model)); text = pSS->getValue(XAP_STRING_ID_DLG_UFS_StyleRegular); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, TEXT_COLUMN, text, -1); text = pSS->getValue(XAP_STRING_ID_DLG_UFS_StyleItalic); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, TEXT_COLUMN, text, -1); text = pSS->getValue(XAP_STRING_ID_DLG_UFS_StyleBold); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, TEXT_COLUMN, text, -1); text = pSS->getValue(XAP_STRING_ID_DLG_UFS_StyleBoldItalic); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, TEXT_COLUMN, text, -1); model = gtk_tree_view_get_model(GTK_TREE_VIEW(m_sizeList)); gtk_list_store_clear(GTK_LIST_STORE(model)); // TODO perhaps populate the list based on the selected font/style? { int sz = XAP_EncodingManager::fontsizes_mapping.size(); for (int i = 0; i < sz; ++i) { text = XAP_EncodingManager::fontsizes_mapping.nth2(i); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, TEXT_COLUMN, text, -1); } } return vboxMain; }
GtkWidget * tips_dialog_create (Gimp *gimp) { GimpGuiConfig *config; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *button; GtkWidget *image; gint tips_count; g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); if (!tips) { GError *error = NULL; gchar *filename; filename = g_build_filename (gimp_data_directory (), "tips", "gimp-tips.xml", NULL); tips = gimp_tips_from_file (filename, &error); if (! tips) { GimpTip *tip; if (! error) { tip = gimp_tip_new (_("The GIMP tips file is empty!"), NULL); } else if (error->code == G_FILE_ERROR_NOENT) { tip = gimp_tip_new (_("The GIMP tips file appears to be " "missing!"), _("There should be a file called '%s'. " "Please check your installation."), gimp_filename_to_utf8 (filename)); } else { tip = gimp_tip_new (_("The GIMP tips file could not be parsed!"), "%s", error->message); } tips = g_list_prepend (tips, tip); } else if (error) { g_printerr ("Error while parsing '%s': %s\n", filename, error->message); } g_clear_error (&error); g_free (filename); } tips_count = g_list_length (tips); config = GIMP_GUI_CONFIG (gimp->config); if (config->last_tip_shown >= tips_count || config->last_tip_shown < 0) config->last_tip_shown = 0; current_tip = g_list_nth (tips, config->last_tip_shown); if (tips_dialog) return tips_dialog; tips_dialog = gimp_dialog_new (_("GIMP Tip of the Day"), "gimp-tip-of-the-day", NULL, 0, NULL, NULL, NULL); button = gtk_dialog_add_button (GTK_DIALOG (tips_dialog), _("_Previous Tip"), RESPONSE_PREVIOUS); gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_icon_name ("go-previous", GTK_ICON_SIZE_BUTTON)); button = gtk_dialog_add_button (GTK_DIALOG (tips_dialog), _("_Next Tip"), RESPONSE_NEXT); gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_icon_name ("go-next", GTK_ICON_SIZE_BUTTON)); gtk_dialog_set_response_sensitive (GTK_DIALOG (tips_dialog), RESPONSE_NEXT, tips_count > 1); gtk_dialog_set_response_sensitive (GTK_DIALOG (tips_dialog), RESPONSE_PREVIOUS, tips_count > 1); g_signal_connect (tips_dialog, "response", G_CALLBACK (tips_dialog_response), NULL); g_signal_connect (tips_dialog, "destroy", G_CALLBACK (tips_dialog_destroy), config); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (tips_dialog))), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); gtk_widget_show (hbox); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); image = gtk_image_new_from_icon_name (GIMP_STOCK_INFO, GTK_ICON_SIZE_DIALOG); gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0); gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); gtk_widget_show (image); gtk_container_set_focus_chain (GTK_CONTAINER (hbox), NULL); tip_label = gtk_label_new (NULL); gtk_label_set_selectable (GTK_LABEL (tip_label), TRUE); gtk_label_set_justify (GTK_LABEL (tip_label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap (GTK_LABEL (tip_label), TRUE); gtk_misc_set_alignment (GTK_MISC (tip_label), 0.5, 0.0); gtk_box_pack_start (GTK_BOX (vbox), tip_label, TRUE, TRUE, 0); gtk_widget_show (tip_label); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); more_button = gtk_link_button_new_with_label ("http://docs.gimp.org/", /* a link to the related section in the user manual */ _("Learn more")); gtk_widget_show (more_button); gtk_box_pack_start (GTK_BOX (hbox), more_button, FALSE, FALSE, 0); g_signal_connect (more_button, "clicked", G_CALLBACK (more_button_clicked), gimp); tips_dialog_set_tip (current_tip->data); return tips_dialog; }
/** * @fn ControlData* gui_control(Tab*) * * Constructor is used to create ControlData data structure. * @param tab The tab structure used by the widget * @return The Filter viewer data created. */ ControlData* gui_control(LttvPluginTab *ptab) { Tab *tab = ptab->tab; g_debug("filter::gui_control()"); ControlData* tcd = g_new(ControlData,1); tcd->tab = tab; tcd->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(tcd->window), "LTTng Trace Control"); /* * Initiating GtkTable layout * starts with 2 rows and 5 columns and * expands when expressions added */ tcd->main_box = gtk_table_new(14,7,FALSE); gtk_table_set_row_spacings(GTK_TABLE(tcd->main_box),5); gtk_table_set_col_spacings(GTK_TABLE(tcd->main_box),5); gtk_container_add(GTK_CONTAINER(tcd->window), GTK_WIDGET(tcd->main_box)); GList *focus_chain = NULL; /* * start/pause/stop buttons */ GdkPixbuf *pixbuf; GtkWidget *image; pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStart_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->ltt_armall_button = gtk_button_new_with_label("Arm LTTng kernel probes"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->ltt_armall_button), image); g_object_set(G_OBJECT(tcd->ltt_armall_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->ltt_armall_button), 0.0, 0.0); gtk_widget_show (tcd->ltt_armall_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_button,6,7,0,1,GTK_FILL,GTK_FILL,2,2); pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStop_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->ltt_disarmall_button = gtk_button_new_with_label("Disarm LTTng kernel probes"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->ltt_disarmall_button), image); g_object_set(G_OBJECT(tcd->ltt_disarmall_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->ltt_disarmall_button), 0.0, 0.0); gtk_widget_show (tcd->ltt_disarmall_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_button,6,7,1,2,GTK_FILL,GTK_FILL,2,2); pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStart_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->start_button = gtk_button_new_with_label("start"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->start_button), image); g_object_set(G_OBJECT(tcd->start_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->start_button), 0.0, 0.0); gtk_widget_show (tcd->start_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->start_button,6,7,2,3,GTK_FILL,GTK_FILL,2,2); pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlPause_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->pause_button = gtk_button_new_with_label("pause"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->pause_button), image); g_object_set(G_OBJECT(tcd->pause_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->pause_button), 0.0, 0.0); gtk_widget_show (tcd->pause_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->pause_button,6,7,3,4,GTK_FILL,GTK_FILL,2,2); pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlPause_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->unpause_button = gtk_button_new_with_label("unpause"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->unpause_button), image); g_object_set(G_OBJECT(tcd->unpause_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->unpause_button), 0.0, 0.0); gtk_widget_show (tcd->unpause_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->unpause_button,6,7,4,5,GTK_FILL,GTK_FILL,2,2); pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStop_xpm); image = gtk_image_new_from_pixbuf(pixbuf); tcd->stop_button = gtk_button_new_with_label("stop"); //2.6 gtk_button_set_image(GTK_BUTTON(tcd->stop_button), image); g_object_set(G_OBJECT(tcd->stop_button), "image", image, NULL); gtk_button_set_alignment(GTK_BUTTON(tcd->stop_button), 0.0, 0.0); gtk_widget_show (tcd->stop_button); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->stop_button,6,7,5,6,GTK_FILL,GTK_FILL,2,2); /* * First half of the filter window * - textual entry of filter expression * - processing button */ tcd->username_label = gtk_label_new("Username:"******"root"); gtk_widget_show (tcd->username_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->username_label,0,2,0,1,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->username_entry,2,6,0,1,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->password_label = gtk_label_new("Password:"******"Channel directory:"); gtk_widget_show (tcd->channel_dir_label); tcd->channel_dir_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->channel_dir_entry),"/mnt/debugfs/ltt"); gtk_widget_show (tcd->channel_dir_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->channel_dir_label,0,2,2,3,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->channel_dir_entry,2,6,2,3,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->trace_dir_label = gtk_label_new("Trace directory:"); gtk_widget_show (tcd->trace_dir_label); tcd->trace_dir_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->trace_dir_entry),"/tmp/trace1"); gtk_widget_show (tcd->trace_dir_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_dir_label,0,2,3,4,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_dir_entry,2,6,3,4,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->trace_name_label = gtk_label_new("Trace name:"); gtk_widget_show (tcd->trace_name_label); tcd->trace_name_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->trace_name_entry),"trace"); gtk_widget_show (tcd->trace_name_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_name_label,0,2,4,5,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_name_entry,2,6,4,5,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->trace_mode_label = gtk_label_new("Trace mode "); gtk_widget_show (tcd->trace_mode_label); tcd->trace_mode_combo = gtk_combo_box_new_text(); gtk_combo_box_append_text(GTK_COMBO_BOX(tcd->trace_mode_combo), "normal"); gtk_combo_box_append_text(GTK_COMBO_BOX(tcd->trace_mode_combo), "flight recorder"); gtk_combo_box_set_active(GTK_COMBO_BOX(tcd->trace_mode_combo), 0); gtk_widget_show (tcd->trace_mode_combo); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_mode_label,0,2,5,6,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->trace_mode_combo,2,6,5,6,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->start_daemon_label = gtk_label_new("Start daemon "); gtk_widget_show (tcd->start_daemon_label); tcd->start_daemon_check = gtk_check_button_new(); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tcd->start_daemon_check), TRUE); gtk_widget_show (tcd->start_daemon_check); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->start_daemon_label,0,2,6,7,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->start_daemon_check,2,6,6,7,GTK_FILL,GTK_FILL,0,0); tcd->append_label = gtk_label_new("Append to trace "); gtk_widget_show (tcd->append_label); tcd->append_check = gtk_check_button_new(); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tcd->append_check), FALSE); gtk_widget_show (tcd->append_check); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->append_label,0,2,7,8,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->append_check,2,6,7,8,GTK_FILL,GTK_FILL,0,0); tcd->optional_label = gtk_label_new("Optional fields "); gtk_widget_show (tcd->optional_label); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->optional_label,0,6,8,9,GTK_FILL,GTK_FILL,2,2); tcd->subbuf_size_label = gtk_label_new("Subbuffer size:"); gtk_widget_show (tcd->subbuf_size_label); tcd->subbuf_size_entry = gtk_entry_new(); gtk_widget_show (tcd->subbuf_size_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->subbuf_size_label,0,2,9,10,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->subbuf_size_entry,2,6,9,10,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->subbuf_num_label = gtk_label_new("Number of subbuffers:"); gtk_widget_show (tcd->subbuf_num_label); tcd->subbuf_num_entry = gtk_entry_new(); gtk_widget_show (tcd->subbuf_num_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->subbuf_num_label,0,2,10,11,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->subbuf_num_entry,2,6,10,11,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->lttd_threads_label = gtk_label_new("Number of lttd threads:"); gtk_widget_show (tcd->lttd_threads_label); tcd->lttd_threads_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->lttd_threads_entry), "1"); gtk_widget_show (tcd->lttd_threads_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_threads_label,0,2,11,12,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_threads_entry,2,6,11,12,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->lttctl_path_label = gtk_label_new("path to lttctl:"); gtk_widget_show (tcd->lttctl_path_label); tcd->lttctl_path_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->lttctl_path_entry),PACKAGE_BIN_DIR "/lttctl"); gtk_widget_show (tcd->lttctl_path_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttctl_path_label,0,2,12,13,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttctl_path_entry,2,6,12,13,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->lttd_path_label = gtk_label_new("path to lttd:"); gtk_widget_show (tcd->lttd_path_label); tcd->lttd_path_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->lttd_path_entry),PACKAGE_BIN_DIR "/lttd"); gtk_widget_show (tcd->lttd_path_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_path_label,0,2,13,14,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_path_entry,2,6,13,14,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->ltt_armall_path_label = gtk_label_new("path to ltt_armall:"); gtk_widget_show (tcd->ltt_armall_path_label); tcd->ltt_armall_path_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->ltt_armall_path_entry),PACKAGE_BIN_DIR "/ltt-armall"); gtk_widget_show (tcd->ltt_armall_path_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_path_label,0,2,14,15,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_path_entry,2,6,14,15,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); tcd->ltt_disarmall_path_label = gtk_label_new("path to ltt_disarmall:"); gtk_widget_show (tcd->ltt_disarmall_path_label); tcd->ltt_disarmall_path_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(tcd->ltt_disarmall_path_entry),PACKAGE_BIN_DIR "/ltt-disarmall"); gtk_widget_show (tcd->ltt_disarmall_path_entry); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_path_label,0,2,15,16,GTK_FILL,GTK_FILL,2,2); gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_path_entry,2,6,15,16,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0); focus_chain = g_list_append (focus_chain, tcd->username_entry); focus_chain = g_list_append (focus_chain, tcd->password_entry); focus_chain = g_list_append (focus_chain, tcd->ltt_armall_path_entry); focus_chain = g_list_append (focus_chain, tcd->ltt_disarmall_path_entry); focus_chain = g_list_append (focus_chain, tcd->start_button); focus_chain = g_list_append (focus_chain, tcd->pause_button); focus_chain = g_list_append (focus_chain, tcd->unpause_button); focus_chain = g_list_append (focus_chain, tcd->stop_button); focus_chain = g_list_append (focus_chain, tcd->channel_dir_entry); focus_chain = g_list_append (focus_chain, tcd->trace_dir_entry); focus_chain = g_list_append (focus_chain, tcd->trace_name_entry); focus_chain = g_list_append (focus_chain, tcd->trace_mode_combo); focus_chain = g_list_append (focus_chain, tcd->start_daemon_check); focus_chain = g_list_append (focus_chain, tcd->append_check); focus_chain = g_list_append (focus_chain, tcd->subbuf_size_entry); focus_chain = g_list_append (focus_chain, tcd->subbuf_num_entry); focus_chain = g_list_append (focus_chain, tcd->lttd_threads_entry); focus_chain = g_list_append (focus_chain, tcd->lttctl_path_entry); focus_chain = g_list_append (focus_chain, tcd->lttd_path_entry); gtk_container_set_focus_chain(GTK_CONTAINER(tcd->main_box), focus_chain); g_list_free(focus_chain); g_signal_connect(G_OBJECT(tcd->start_button), "clicked", (GCallback)start_clicked, tcd); g_signal_connect(G_OBJECT(tcd->pause_button), "clicked", (GCallback)pause_clicked, tcd); g_signal_connect(G_OBJECT(tcd->unpause_button), "clicked", (GCallback)unpause_clicked, tcd); g_signal_connect(G_OBJECT(tcd->stop_button), "clicked", (GCallback)stop_clicked, tcd); g_signal_connect(G_OBJECT(tcd->ltt_armall_button), "clicked", (GCallback)arm_clicked, tcd); g_signal_connect(G_OBJECT(tcd->ltt_disarmall_button), "clicked", (GCallback)disarm_clicked, tcd); /* * show main container */ gtk_widget_show(tcd->main_box); gtk_widget_show(tcd->window); g_object_set_data_full( G_OBJECT(guicontrol_get_widget(tcd)), "control_viewer_data", tcd, (GDestroyNotify)gui_control_destructor); g_control_list = g_slist_append( g_control_list, tcd); return tcd; }