static void create_window (GdkWindowHints mask) { GtkWidget *window; GtkWidget *drawing_area; GtkWidget *grid; GtkWidget *label; GtkWidget *button; GdkGeometry geometry; GString *label_text = g_string_new (NULL); int border = 0; if ((mask & GDK_HINT_RESIZE_INC) != 0) g_string_append (label_text, "Gridded\n"); if ((mask & GDK_HINT_BASE_SIZE) != 0) g_string_append (label_text, "Base\n"); if ((mask & GDK_HINT_MIN_SIZE) != 0) { g_string_append (label_text, "Minimum\n"); if ((mask & GDK_HINT_BASE_SIZE) == 0) g_string_append (label_text, "(base=min)\n"); } if ((mask & GDK_HINT_MAX_SIZE) != 0) g_string_append (label_text, "Maximum\n"); if (label_text->len > 0) g_string_erase (label_text, label_text->len - 1, 1); else g_string_append (label_text, "No Options"); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), NULL); grid = gtk_grid_new (); gtk_container_set_border_width (GTK_CONTAINER (grid), 10); label = gtk_label_new (label_text->str); gtk_widget_set_hexpand (label, TRUE); gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); label = gtk_label_new ("A\nB\nC\nD\nE"); gtk_grid_attach (GTK_GRID (grid), label, 1, 1, 1, 1); drawing_area = gtk_drawing_area_new (); g_signal_connect (drawing_area, "draw", G_CALLBACK (on_drawing_area_draw), GUINT_TO_POINTER (mask)); gtk_widget_set_hexpand (drawing_area, TRUE); gtk_widget_set_vexpand (drawing_area, TRUE); gtk_grid_attach (GTK_GRID (grid), drawing_area, 0, 1, 1, 1); button = gtk_button_new_with_label ("Resize"); g_signal_connect (button, "clicked", G_CALLBACK (on_resize_clicked), GUINT_TO_POINTER (mask)); gtk_widget_set_hexpand (button, TRUE); gtk_grid_attach (GTK_GRID (grid), button, 0, 2, 1, 1); gtk_container_add (GTK_CONTAINER (window), grid); if ((mask & GDK_HINT_BASE_SIZE) != 0) { border = BORDER; geometry.base_width = border * 2; geometry.base_height = border * 2; } if ((mask & GDK_HINT_RESIZE_INC) != 0) { geometry.width_inc = GRID_SIZE; geometry.height_inc = GRID_SIZE; } if ((mask & GDK_HINT_MIN_SIZE) != 0) { geometry.min_width = 5 * GRID_SIZE + 2 * border; geometry.min_height = 5 * GRID_SIZE + 2 * border; } if ((mask & GDK_HINT_MAX_SIZE) != 0) { geometry.max_width = 15 * GRID_SIZE + 2 * border; geometry.max_height = 15 * GRID_SIZE + 2 * border; } /* Contents must be set up before gtk_window_parse_geometry() */ gtk_widget_show_all (grid); gtk_window_set_geometry_hints (GTK_WINDOW (window), drawing_area, &geometry, mask); if ((mask & GDK_HINT_RESIZE_INC) != 0) { if (geometry_string) gtk_window_parse_geometry (GTK_WINDOW (window), geometry_string); else gtk_window_set_default_geometry (GTK_WINDOW (window), 10, 10); } else { gtk_window_set_default_geometry (GTK_WINDOW (window), 10 * GRID_SIZE, 10 * GRID_SIZE); } gtk_widget_show (window); window_count++; }
static void seahorse_keyserver_results_constructed (GObject *obj) { SeahorseKeyserverResults *self = SEAHORSE_KEYSERVER_RESULTS (obj); GtkActionGroup* actions; GtkTreeSelection *selection; GtkWindow *window; GtkBuilder *builder; char* title; G_OBJECT_CLASS (seahorse_keyserver_results_parent_class)->constructed (obj); if (g_utf8_strlen (self->pv->search_string, -1) == 0) { title = g_strdup (_("Remote Keys")); } else { title = g_strdup_printf (_ ("Remote Keys Containing '%s'"), self->pv->search_string); } window = seahorse_catalog_get_window (SEAHORSE_CATALOG (self)); gtk_window_set_default_geometry(window, 640, 476); gtk_widget_set_events (GTK_WIDGET (window), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_window_set_title (window, title); gtk_widget_set_visible (GTK_WIDGET (window), TRUE); g_free (title); g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), self); actions = gtk_action_group_new ("general"); gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE); gtk_action_group_add_actions (actions, GENERAL_ENTRIES, G_N_ELEMENTS (GENERAL_ENTRIES), self); seahorse_catalog_include_actions (SEAHORSE_CATALOG (self), actions); actions = gtk_action_group_new ("keyserver"); gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE); gtk_action_group_add_actions (actions, SERVER_ENTRIES, G_N_ELEMENTS (SERVER_ENTRIES), self); seahorse_catalog_include_actions (SEAHORSE_CATALOG (self), actions); self->pv->import_actions = gtk_action_group_new ("import"); gtk_action_group_set_translation_domain (self->pv->import_actions, GETTEXT_PACKAGE); gtk_action_group_add_actions (self->pv->import_actions, IMPORT_ENTRIES, G_N_ELEMENTS (IMPORT_ENTRIES), self); g_object_set (gtk_action_group_get_action (self->pv->import_actions, "key-import-keyring"), "is-important", TRUE, NULL); seahorse_catalog_include_actions (SEAHORSE_CATALOG (self), self->pv->import_actions); /* init key list & selection settings */ builder = seahorse_catalog_get_builder (SEAHORSE_CATALOG (self)); self->pv->view = GTK_TREE_VIEW (gtk_builder_get_object (builder, "key_list")); selection = gtk_tree_view_get_selection (self->pv->view); gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); g_signal_connect_object (selection, "changed", G_CALLBACK (on_view_selection_changed), self, 0); g_signal_connect_object (self->pv->view, "row-activated", G_CALLBACK (on_row_activated), self, 0); g_signal_connect_object (self->pv->view, "button-press-event", G_CALLBACK (on_key_list_button_pressed), self, 0); g_signal_connect_object (self->pv->view, "popup-menu", G_CALLBACK (on_key_list_popup_menu), self, 0); gtk_widget_realize (GTK_WIDGET (self->pv->view)); /* Set focus to the current key list */ gtk_widget_grab_focus (GTK_WIDGET (self->pv->view)); /* To avoid flicker */ seahorse_catalog_ensure_updated (SEAHORSE_CATALOG (self)); gtk_widget_show (GTK_WIDGET (self)); self->pv->store = seahorse_key_manager_store_new (GCR_COLLECTION (self->pv->collection), self->pv->view, &self->pv->pred, self->pv->settings); on_view_selection_changed (selection, self); /* Include actions from the backend */ actions = NULL; g_object_get (seahorse_pgp_backend_get (), "actions", &actions, NULL); seahorse_catalog_include_actions (SEAHORSE_CATALOG (self), actions); g_object_unref (actions); }