static GtkWidget* main_window() { GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Switcher"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); GtkWidget* box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_container_add(GTK_CONTAINER(window), box); // Stack GtkWidget* main_area = gtk_stack_new(); gtk_stack_set_transition_type(GTK_STACK(main_area), GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT); gtk_stack_set_transition_duration(GTK_STACK(main_area), 2000); // Checkbox GtkWidget* check_button = gtk_check_button_new_with_label("Do not fn check me"); gtk_stack_add_titled(GTK_STACK(main_area), check_button, "check_name", "Check Box"); // Label GtkWidget* label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label), "<big>OMG this text is huge!</big>"); gtk_stack_add_titled(GTK_STACK(main_area), label, "label_name", "Big Label"); // StackSwitcher GtkWidget* stack_switcher = gtk_stack_switcher_new(); gtk_stack_switcher_set_stack(GTK_STACK_SWITCHER(stack_switcher), GTK_STACK(main_area)); gtk_box_pack_start(GTK_BOX(box), stack_switcher, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(box), main_area, TRUE, TRUE, 0); return window; }
static void nemo_toolbar_constructed (GObject *obj) { NemoToolbar *self = NEMO_TOOLBAR (obj); GtkWidget *toolbar; GtkWidget *hbox; GtkToolItem *tool_box; GtkWidget *box; GtkStyleContext *context; G_OBJECT_CLASS (nemo_toolbar_parent_class)->constructed (obj); gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (self)), GTK_JUNCTION_BOTTOM); self->priv->show_location_entry = g_settings_get_boolean (nemo_preferences, NEMO_PREFERENCES_SHOW_LOCATION_ENTRY); /* add the UI */ self->priv->ui_manager = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (self->priv->ui_manager, self->priv->action_group, 0); toolbar = gtk_toolbar_new (); self->priv->toolbar = toolbar; gtk_box_pack_start (GTK_BOX (self), self->priv->toolbar, TRUE, TRUE, 0); context = gtk_widget_get_style_context (GTK_WIDGET(toolbar)); gtk_style_context_add_class (context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR); /* Back/Forward/Up */ self->priv->navigation_box = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->previous_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_BACK); gtk_container_add (GTK_CONTAINER (box), self->priv->previous_button); self->priv->next_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_FORWARD); gtk_container_add (GTK_CONTAINER (box), self->priv->next_button); self->priv->up_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_UP); gtk_container_add (GTK_CONTAINER (box), self->priv->up_button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_container_add (GTK_CONTAINER (self->priv->navigation_box), GTK_WIDGET (box)); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (self->priv->navigation_box)); gtk_widget_show_all (GTK_WIDGET (self->priv->navigation_box)); gtk_widget_set_margin_right (GTK_WIDGET (self->priv->navigation_box), 6); /* Refresh */ self->priv->refresh_box = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->refresh_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_RELOAD); gtk_container_add (GTK_CONTAINER (box), self->priv->refresh_button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_container_add (GTK_CONTAINER (self->priv->refresh_box), GTK_WIDGET (box)); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (self->priv->refresh_box)); gtk_widget_show_all (GTK_WIDGET (self->priv->refresh_box)); gtk_widget_set_margin_right (GTK_WIDGET (self->priv->refresh_box), 6); /* Home/Computer */ self->priv->location_box = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->home_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_HOME); gtk_container_add (GTK_CONTAINER (box), self->priv->home_button); self->priv->computer_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_COMPUTER); gtk_container_add (GTK_CONTAINER (box), self->priv->computer_button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_container_add (GTK_CONTAINER (self->priv->location_box), GTK_WIDGET (box)); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (self->priv->location_box)); gtk_widget_show_all (GTK_WIDGET (self->priv->location_box)); gtk_widget_set_margin_right (GTK_WIDGET (self->priv->location_box), 6); /* Container to hold the location and pathbars */ self->priv->stack = gtk_stack_new(); gtk_stack_set_transition_type (GTK_STACK (self->priv->stack), GTK_STACK_TRANSITION_TYPE_CROSSFADE); gtk_stack_set_transition_duration (GTK_STACK (self->priv->stack), 150); /* Regular Path Bar */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (self->priv->stack), TRUE, TRUE, 0); self->priv->path_bar = g_object_new (NEMO_TYPE_PATH_BAR, NULL); gtk_stack_add_named(GTK_STACK (self->priv->stack), GTK_WIDGET (self->priv->path_bar), "path_bar"); /* Entry-Like Location Bar */ self->priv->location_bar = nemo_location_bar_new (); gtk_stack_add_named(GTK_STACK (self->priv->stack), GTK_WIDGET (self->priv->location_bar), "location_bar"); gtk_widget_show_all (hbox); tool_box = gtk_tool_item_new (); gtk_tool_item_set_expand (tool_box, TRUE); gtk_container_add (GTK_CONTAINER (tool_box), hbox); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (tool_box)); gtk_widget_show (GTK_WIDGET (tool_box)); /* Search/Open in Terminal/New Folder/Toggle Location */ self->priv->tools_box = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->toggle_location_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_TOGGLE_LOCATION); gtk_container_add (GTK_CONTAINER (box), self->priv->toggle_location_button); self->priv->open_terminal_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_OPEN_IN_TERMINAL); gtk_container_add (GTK_CONTAINER (box), self->priv->open_terminal_button); self->priv->new_folder_button = toolbar_create_toolbutton (self, FALSE, NEMO_ACTION_NEW_FOLDER); gtk_container_add (GTK_CONTAINER (box), self->priv->new_folder_button); self->priv->search_button = toolbar_create_toolbutton (self, TRUE, NEMO_ACTION_SEARCH); gtk_container_add (GTK_CONTAINER (box), self->priv->search_button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_container_add (GTK_CONTAINER (self->priv->tools_box), GTK_WIDGET (box)); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (self->priv->tools_box)); gtk_widget_show_all (GTK_WIDGET (self->priv->tools_box)); gtk_widget_set_margin_left (GTK_WIDGET (self->priv->tools_box), 6); setup_root_info_bar (self); /* View Select */ self->priv->view_box = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->icon_view_button = toolbar_create_toolbutton (self, TRUE, NEMO_ACTION_ICON_VIEW); gtk_container_add (GTK_CONTAINER (box), self->priv->icon_view_button); self->priv->list_view_button = toolbar_create_toolbutton (self, TRUE, NEMO_ACTION_LIST_VIEW); gtk_container_add (GTK_CONTAINER (box), self->priv->list_view_button); self->priv->compact_view_button = toolbar_create_toolbutton (self, TRUE, NEMO_ACTION_COMPACT_VIEW); gtk_container_add (GTK_CONTAINER (box), self->priv->compact_view_button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_container_add (GTK_CONTAINER (self->priv->view_box), GTK_WIDGET (box)); gtk_container_add (GTK_CONTAINER (self->priv->toolbar), GTK_WIDGET (self->priv->view_box)); gtk_widget_show_all (GTK_WIDGET (self->priv->view_box)); gtk_widget_set_margin_left (GTK_WIDGET (self->priv->view_box), 6); /* nemo patch */ g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_PREVIOUS_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_NEXT_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_UP_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_EDIT_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_RELOAD_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_HOME_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_COMPUTER_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_SEARCH_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_NEW_FOLDER_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_OPEN_IN_TERMINAL_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_ICON_VIEW_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_LIST_VIEW_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_COMPACT_VIEW_ICON_TOOLBAR, G_CALLBACK (toolbar_update_appearance), self); toolbar_update_appearance (self); }
void ide_workbench_set_visible_perspective (IdeWorkbench *self, IdePerspective *perspective) { g_autofree gchar *id = NULL; GActionGroup *actions = NULL; const gchar *current_id; GtkWidget *titlebar; guint restore_duration = 0; g_return_if_fail (IDE_IS_WORKBENCH (self)); g_return_if_fail (IDE_IS_PERSPECTIVE (perspective)); /* * If we can detect that this is the first transition to the editor, * and that our window is not yet displayed, we can avoid the transition * duration altogether. This is handy when first opening a window with * a project loaded, as used by self->disable_greeter. */ if (self->disable_greeter && IDE_IS_EDITOR_PERSPECTIVE (perspective) && !self->did_initial_editor_transition) { self->did_initial_editor_transition = TRUE; restore_duration = gtk_stack_get_transition_duration (self->perspectives_stack); gtk_stack_set_transition_duration (self->perspectives_stack, 0); } current_id = gtk_stack_get_visible_child_name (self->perspectives_stack); id = ide_perspective_get_id (perspective); if (!ide_str_equal0 (current_id, id)) gtk_stack_set_visible_child_name (self->perspectives_stack, id); titlebar = gtk_stack_get_child_by_name (self->header_stack, id); if (titlebar != NULL) gtk_stack_set_visible_child (self->header_stack, titlebar); else gtk_stack_set_visible_child (self->header_stack, GTK_WIDGET (self->header_bar)); actions = ide_perspective_get_actions (perspective); gtk_widget_insert_action_group (GTK_WIDGET (self), "perspective", actions); /* * If we are transitioning to the editor the first time, we can * remove the early perspectives (greeter, etc). */ if (IDE_IS_EDITOR_PERSPECTIVE (perspective)) remove_early_perspectives (self); gtk_widget_set_visible (GTK_WIDGET (self->perspective_menu_button), !ide_perspective_is_early (perspective)); if (self->addins != NULL) peas_extension_set_foreach (self->addins, ide_workbench_notify_perspective_set, perspective); g_clear_object (&actions); if (restore_duration != 0) gtk_stack_set_transition_duration (self->perspectives_stack, restore_duration); /* Notify the application to possibly update actions such * as the preferences state. */ ide_application_actions_update (IDE_APPLICATION_DEFAULT); }
static GtkWidget* create_starter_widget (StarterPlugin* plugin) { GError *error; GtkWidget *stack; GtkWidget *switcher; GtkWidget *starter_box; GtkWidget *switcher_box; GtkWidget *actions_frame; GtkWidget *actions_listbox; GtkWidget *recent_projects_box; GtkWidget *recent_listbox; GtkBuilder *builder; GtkWidget *button; error = NULL; builder = gtk_builder_new (); if (!gtk_builder_add_from_resource (builder, "/org/gnome/anjuta/ui/starter.ui", &error)) { DEBUG_PRINT ("Could not load starter.ui! %s", error->message); g_error_free (error); } else { /* Manually assembling stack and switcher because they are not available in glade yet */ switcher = gtk_stack_switcher_new (); stack = gtk_stack_new (); gtk_stack_switcher_set_stack (switcher, stack); gtk_stack_set_transition_type (stack, GTK_STACK_TRANSITION_TYPE_CROSSFADE); gtk_stack_set_transition_duration (stack, TRANSITION_TIME); starter_box = GTK_WIDGET (gtk_builder_get_object (builder, STARTER_BOX)); switcher_box = GTK_WIDGET (gtk_builder_get_object (builder, SWITCHER_BOX)); gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (starter_box)), starter_box); g_object_ref (starter_box); gtk_box_pack_start (switcher_box, switcher, FALSE, FALSE, 0); gtk_box_pack_start (starter_box, stack, FALSE, FALSE, 0); gtk_widget_show_all (starter_box); actions_listbox = GTK_WIDGET (gtk_builder_get_object (builder, ACTIONS_LISTBOX)); gtk_list_box_set_header_func (GTK_LIST_BOX (actions_listbox), add_action_separators, NULL, NULL); actions_frame = GTK_WIDGET (gtk_builder_get_object (builder, ACTIONS_FRAME)); gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (actions_frame)), actions_frame); g_object_ref (actions_frame); gtk_stack_add_titled (stack, actions_frame, ACTIONS_ID, "Actions"); recent_projects_box = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_PROJECTS_BOX)); gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (recent_projects_box)), recent_projects_box); g_object_ref (recent_projects_box); recent_listbox = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_LISTBOX)); refresh_recent_project_view (GTK_LIST_BOX (recent_listbox)); gtk_stack_add_titled (stack, recent_projects_box, RECENT_PROJECTS_ID, "Recent Projects"); button = GTK_WIDGET (gtk_builder_get_object (builder, REMOVE_PROJECT_BUTTON)); g_signal_connect_object (G_OBJECT (button), "clicked", G_CALLBACK (on_remove_project_clicked), recent_listbox, G_CONNECT_AFTER); gtk_builder_connect_signals (builder, plugin); } g_object_unref (builder); return starter_box; }
PocketvoxSetup* pocketvox_setup_new() { PocketvoxSetup *setup = (PocketvoxSetup *)g_object_new(TYPE_POCKETVOX_SETUP, NULL); setup->priv = G_TYPE_INSTANCE_GET_PRIVATE (setup, TYPE_POCKETVOX_SETUP, PocketvoxSetupPrivate); PocketvoxSetupPrivate *priv = setup->priv; bindtextdomain (GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); priv->settings = g_settings_new("org.pocketvox.config"); //Build the window priv->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(priv->window), GTK_WIN_POS_CENTER_ALWAYS); gtk_window_set_title(GTK_WINDOW(priv->window), "pocketvox-gtk"); gtk_window_set_default_size(GTK_WINDOW(priv->window), 500, 350); gtk_window_set_icon_name(GTK_WINDOW(priv->window), "pocketvox"); gtk_container_set_border_width(GTK_CONTAINER(priv->window), 5); g_signal_connect_swapped(priv->window, "delete-event", G_CALLBACK(pocketvox_setup_save_and_quit), setup); GtkWidget *bar = gtk_header_bar_new(); gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(bar), TRUE); gtk_window_set_titlebar(GTK_WINDOW(priv->window), bar); //add a vertical box GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_container_add(GTK_CONTAINER(priv->window), box); //a button for all GtkWidget* button_notification = gtk_button_new_with_label(_("Notifications")); GtkWidget* button_user = gtk_button_new_with_label(_("Users")); GtkWidget* button_pocketsphinx = gtk_button_new_with_label(_("Pocketsphinx")); GtkWidget* button_gstreamer = gtk_button_new_with_label(_("Gstreamer")); gtk_widget_set_tooltip_text(button_notification, _("Display notifications parameters")); gtk_widget_set_tooltip_text(button_user, _("Display user parameters")); gtk_widget_set_tooltip_text(button_pocketsphinx, _("Display pocketsphinx parameters")); gtk_widget_set_tooltip_text(button_gstreamer, _("Display gstreamer parameters")); gtk_button_set_relief(GTK_BUTTON(button_notification), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(button_user), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(button_pocketsphinx), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(button_gstreamer), GTK_RELIEF_NONE); GtkWidget *grid_button = gtk_grid_new(); gtk_grid_attach(GTK_GRID(grid_button), button_user, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(grid_button), button_notification, 0, 1, 1, 1); gtk_grid_attach(GTK_GRID(grid_button), button_pocketsphinx, 0, 2, 1, 1); gtk_grid_attach(GTK_GRID(grid_button), button_gstreamer, 0, 3, 1, 1); GtkWidget* grid_notification = pocketvox_setup_get_notification_grid(setup); GtkWidget* grid_user = pocketvox_setup_get_user_grid(setup); GtkWidget* grid_pocketsphinx = pocketvox_setup_get_pocketsphinx_grid(setup); GtkWidget* grid_gstreamer = pocketvox_setup_get_gstreamer_grid(setup); //connect all signals (TODO) g_signal_connect_swapped(button_notification, "clicked", G_CALLBACK(gtk_widget_show), grid_notification); g_signal_connect_swapped(button_notification, "clicked", G_CALLBACK(gtk_widget_hide), grid_user); g_signal_connect_swapped(button_notification, "clicked", G_CALLBACK(gtk_widget_hide), grid_pocketsphinx); g_signal_connect_swapped(button_notification, "clicked", G_CALLBACK(gtk_widget_hide), grid_gstreamer); g_signal_connect_swapped(button_pocketsphinx, "clicked", G_CALLBACK(gtk_widget_hide), grid_notification); g_signal_connect_swapped(button_pocketsphinx, "clicked", G_CALLBACK(gtk_widget_hide), grid_user); g_signal_connect_swapped(button_pocketsphinx, "clicked", G_CALLBACK(gtk_widget_show), grid_pocketsphinx); g_signal_connect_swapped(button_pocketsphinx, "clicked", G_CALLBACK(gtk_widget_hide), grid_gstreamer); g_signal_connect_swapped(button_user, "clicked", G_CALLBACK(gtk_widget_hide), grid_notification); g_signal_connect_swapped(button_user, "clicked", G_CALLBACK(gtk_widget_show), grid_user); g_signal_connect_swapped(button_user, "clicked", G_CALLBACK(gtk_widget_hide), grid_pocketsphinx); g_signal_connect_swapped(button_user, "clicked", G_CALLBACK(gtk_widget_hide), grid_gstreamer); g_signal_connect_swapped(button_gstreamer, "clicked", G_CALLBACK(gtk_widget_hide), grid_notification); g_signal_connect_swapped(button_gstreamer, "clicked", G_CALLBACK(gtk_widget_hide), grid_user); g_signal_connect_swapped(button_gstreamer, "clicked", G_CALLBACK(gtk_widget_hide), grid_pocketsphinx); g_signal_connect_swapped(button_gstreamer, "clicked", G_CALLBACK(gtk_widget_show), grid_gstreamer); //add GtkWidget* gridBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(gridBox), grid_user, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(gridBox), grid_notification, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(gridBox), grid_pocketsphinx, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(gridBox), grid_gstreamer, TRUE, TRUE, 0); GtkWidget* separator = gtk_separator_new(GTK_ORIENTATION_VERTICAL); gtk_widget_show(separator); GtkWidget *hgridBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hgridBox), grid_button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hgridBox), separator, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(hgridBox), gridBox, TRUE, TRUE, 0); GtkWidget *stack = gtk_stack_new(); gtk_stack_set_transition_type(GTK_STACK(stack) , GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT); gtk_stack_set_transition_duration(GTK_STACK(stack), 1000); gtk_stack_add_titled(GTK_STACK(stack), hgridBox, "Setup", _("Configuration")); GtkWidget* scrolledWindow = gtk_scrolled_window_new(NULL, NULL); //return void pocketvox_setup_get_modules_grid(setup); gtk_container_add(GTK_CONTAINER(scrolledWindow), priv->listBox); gtk_widget_show_all(scrolledWindow); gtk_stack_add_titled(GTK_STACK(stack), scrolledWindow, "Modules", _("Modules")); //adding a task switcher GtkWidget* stackSwitcher = gtk_stack_switcher_new(); gtk_stack_switcher_set_stack(GTK_STACK_SWITCHER(stackSwitcher), GTK_STACK(stack)); gtk_header_bar_set_custom_title(GTK_HEADER_BAR(bar), stackSwitcher); GtkWidget *add_module_button = gtk_button_new_from_icon_name("gtk-new", GTK_ICON_SIZE_MENU); GtkWidget *remove_module_button = gtk_button_new_from_icon_name("gtk-delete", GTK_ICON_SIZE_MENU); gtk_button_set_relief(GTK_BUTTON(add_module_button), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(remove_module_button), GTK_RELIEF_NONE); gtk_header_bar_pack_start(GTK_HEADER_BAR(bar), add_module_button); gtk_header_bar_pack_start(GTK_HEADER_BAR(bar), remove_module_button); g_signal_connect_swapped(remove_module_button, "clicked", G_CALLBACK(pocketvox_setup_remove_module), setup); g_signal_connect_swapped(add_module_button, "clicked", G_CALLBACK(pocketvox_setup_add_module_callback), setup); g_signal_connect_swapped(stack, "notify::visible-child", G_CALLBACK(pocketvox_stack_child_changed), add_module_button); g_signal_connect_swapped(stack, "notify::visible-child", G_CALLBACK(pocketvox_stack_child_changed), remove_module_button); //add them to the vbox gtk_box_pack_start(GTK_BOX(box), stack, TRUE, TRUE, 0); gtk_widget_show(grid_user); gtk_widget_hide(grid_notification); gtk_widget_hide(grid_pocketsphinx); gtk_widget_hide(grid_gstreamer); gtk_widget_show(gridBox); gtk_widget_show_all(grid_button); gtk_widget_show(hgridBox); gtk_widget_show(box); gtk_widget_show(stack); gtk_widget_show(stackSwitcher); gtk_widget_show_all(bar); //get the setup return setup; }
gint main (gint argc, gchar ** argv) { GtkWidget *window, *box, *button, *hbox, *combo; GtkWidget *w2, *w3; GtkListStore* store; GtkWidget *tree_view; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *scrolled_win; int i; GtkTreeIter iter; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (window, 300, 300); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (window), box); switcher = gtk_stack_switcher_new (); gtk_box_pack_start (GTK_BOX (box), switcher, FALSE, FALSE, 0); stack = gtk_stack_new (); /* Make transitions longer so we can see that they work */ gtk_stack_set_transition_duration (GTK_STACK (stack), 1500); gtk_widget_set_halign (stack, GTK_ALIGN_START); gtk_container_add (GTK_CONTAINER (box), stack); gtk_stack_switcher_set_stack (GTK_STACK_SWITCHER (switcher), GTK_STACK (stack)); w1 = gtk_text_view_new (); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (w1)), "This is a\nTest\nBalh!", -1); gtk_container_add_with_properties (GTK_CONTAINER (stack), w1, "name", "1", "title", "1", NULL); w2 = gtk_button_new_with_label ("Gazoooooooooooooooonk"); gtk_container_add (GTK_CONTAINER (stack), w2); gtk_container_child_set (GTK_CONTAINER (stack), w2, "name", "2", "title", "2", "needs-attention", TRUE, NULL); scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_size_request (scrolled_win, 100, 200); store = gtk_list_store_new (1, G_TYPE_STRING); for (i = 0; i < 40; i++) gtk_list_store_insert_with_values (store, &iter, i, 0, "Testvalule", -1); tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_container_add (GTK_CONTAINER (scrolled_win), tree_view); w3 = scrolled_win; renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Target", renderer, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); gtk_stack_add_titled (GTK_STACK (stack), w3, "3", "3"); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (box), hbox); button = gtk_button_new_with_label ("1"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child, w1); button = gtk_button_new_with_label ("2"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child, w2); button = gtk_button_new_with_label ("3"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child, w3); button = gtk_button_new_with_label ("1"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child_name, (gpointer) "1"); button = gtk_button_new_with_label ("2"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child_name, (gpointer) "2"); button = gtk_button_new_with_label ("3"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) set_visible_child_name, (gpointer) "3"); button = gtk_check_button_new_with_label ("homogeneous"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), gtk_stack_get_homogeneous (GTK_STACK (stack))); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) toggle_homogeneous, NULL); button = gtk_toggle_button_new_with_label ("Add icon"); g_signal_connect (button, "toggled", (GCallback) toggle_icon_name, NULL); gtk_container_add (GTK_CONTAINER (hbox), button); combo = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "NONE"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "CROSSFADE"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_RIGHT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_LEFT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_UP"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_DOWN"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_LEFT_RIGHT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "SLIDE_UP_DOWN"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "OVER_UP"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "OVER_DOWN"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "OVER_LEFT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "OVER_RIGHT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "UNDER_UP"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "UNDER_DOWN"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "UNDER_LEFT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "UNDER_RIGHT"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "OVER_UP_DOWN"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); gtk_container_add (GTK_CONTAINER (hbox), combo); g_signal_connect (combo, "changed", (GCallback) toggle_transitions, NULL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (box), hbox); button = gtk_button_new_with_label ("<"); g_signal_connect (button, "clicked", (GCallback) on_back_button_clicked, stack); g_signal_connect (stack, "notify::visible-child-name", (GCallback)update_back_button_sensitivity, button); gtk_container_add (GTK_CONTAINER (hbox), button); button = gtk_button_new_with_label (">"); gtk_container_add (GTK_CONTAINER (hbox), button); g_signal_connect (button, "clicked", (GCallback) on_forward_button_clicked, stack); g_signal_connect (stack, "notify::visible-child-name", (GCallback)update_forward_button_sensitivity, button); gtk_widget_show_all (window); gtk_main (); gtk_widget_destroy (window); return 0; }