break;
case PROP_FILENAME:
{
+ PsppireWindowRegister *reg = psppire_window_register_new ();
gchar mdash[6] = {0,0,0,0,0,0};
gchar *basename, *title;
const gchar *name = g_value_get_string (value);
- gchar *candidate_name = strdup (name);
int x = 0;
+ gchar *candidate_name ;
+ GValue def = {0};
+ g_value_init (&def, pspec->value_type);
- PsppireWindowRegister *reg = psppire_window_register_new ();
+ if ( NULL == name)
+ {
+ g_param_value_set_default (pspec, &def);
+ name = g_value_get_string (&def);
+ }
+
+ candidate_name = strdup (name);
while ( psppire_window_register_lookup (reg, candidate_name))
{
basename = g_path_get_basename (candidate_name);
g_unichar_to_utf8 (0x2014, mdash);
+ g_value_unset (&def);
+
switch (window->usage)
{
case PSPPIRE_WINDOW_USAGE_SYNTAX:
{
}
+static void
+menu_toggled (GtkCheckMenuItem *mi, gpointer data)
+{
+ /* Prohibit changes to the state */
+ mi->active = !mi->active;
+}
+
+
+/* Look up the window associated with this menuitem and present it to the user */
+static void
+menu_activate (GtkMenuItem *mi, gpointer data)
+{
+ const gchar *key = data;
+
+ PsppireWindowRegister *reg = psppire_window_register_new ();
+
+ PsppireWindow *window = psppire_window_register_lookup (reg, key);
+
+ gtk_window_present (GTK_WINDOW (window));
+}
+
static void
insert_menuitem_into_menu (PsppireWindow *window, gpointer key)
{
GtkWidget *item = gtk_check_menu_item_new_with_label (key);
+ g_signal_connect (item, "toggled", G_CALLBACK (menu_toggled), NULL);
+ g_signal_connect (item, "activate", G_CALLBACK (menu_activate), key);
+
gtk_widget_show (item);
gtk_menu_shell_append (window->menu, item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
- (psppire_window_register_lookup (psppire_window_register_new (), key) == window));
+ /* Set the state without emitting a signal */
+ GTK_CHECK_MENU_ITEM (item)->active =
+ (psppire_window_register_lookup (psppire_window_register_new (), key) == window);
g_hash_table_insert (window->menuitem_table, key, item);
}
PsppireWindow *window = PSPPIRE_WINDOW (data);
GtkWidget *item ;
- if ( !GTK_WIDGET_REALIZED (window))
- return;
-
item = g_hash_table_lookup (window->menuitem_table, key);
g_hash_table_remove (window->menuitem_table, key);
- gtk_container_remove (GTK_CONTAINER (window->menu), item);
+ if (GTK_IS_CONTAINER (window->menu))
+ gtk_container_remove (GTK_CONTAINER (window->menu), item);
}
static void
psppire_window_get_filename (PsppireWindow *w)
{
const gchar *name = NULL;
- g_object_get (w, "filename", name, NULL);
+ g_object_get (w, "filename", &name, NULL);
return name;
}