/** * seahorse_widget_new: * @name: Name of widget, filename part of gtkbuilder file, and name of main window * @parent: GtkWindow to make the parent of the new swidget * * Creates a new #SeahorseWidget. * * Returns: The new #SeahorseWidget, or NULL if the widget already exists **/ SeahorseWidget* seahorse_widget_new (const gchar *name, GtkWindow *parent) { /* Check if have widget hash */ SeahorseWidget *swidget = seahorse_widget_find (name); GtkWindow *window; /* If widget already exists, present */ if (swidget != NULL) { gtk_window_present (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name))); return NULL; } /* If widget doesn't already exist, create & insert into hash */ swidget = g_object_new (SEAHORSE_TYPE_WIDGET, "name", name, NULL); if(!widgets) widgets = g_hash_table_new ((GHashFunc)g_str_hash, (GCompareFunc)g_str_equal); g_hash_table_insert (widgets, g_strdup (name), swidget); if (parent != NULL) { window = GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)); gtk_window_set_transient_for (window, parent); } return swidget; }
/** * seahorse_prefs_new: * @parent: The #GtkWindow to set as the preferences dialog's parent * * Create a new preferences window. * * Returns: The preferences window. **/ SeahorseWidget * seahorse_prefs_new (GtkWindow *parent) { SeahorseWidget *swidget; #ifndef WITH_KEYSERVER GtkWidget *widget = NULL; #endif swidget = seahorse_widget_new ("prefs", parent); if (swidget != NULL) { #ifdef WITH_KEYSERVER setup_keyservers (swidget); #else widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-tab")); g_return_val_if_fail (GTK_IS_WIDGET (widget), swidget); seahorse_prefs_remove_tab (swidget, widget); #endif seahorse_widget_show (swidget); } else { swidget = seahorse_widget_find ("prefs"); gtk_window_present (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name))); } return swidget; }