Esempio n. 1
0
/**
 * create_gens_window_menubar(): Create the menu bar.
 */
void gens_window_create_menubar(void)
{
	if (gens_menu_bar != NULL)
	{
		// Menu bar already exists. Delete it.
		gtk_widget_destroy(gens_menu_bar);
		gens_menu_clear();
	}
	
	if (!vdraw_get_fullscreen() && Settings.showMenuBar)
	{
		// Create a menu bar.
		gens_menu_bar = gtk_menu_bar_new();
		gtk_widget_show(gens_menu_bar);
		gtk_box_pack_start(GTK_BOX(gens_vbox_main), gens_menu_bar, FALSE, FALSE, 0);
	}
	else
	{
		// Create a popup menu.
		gens_menu_bar = gtk_menu_new();
	}
	
	// Connect the menu "deactivate" signal.
	// For whatever reason, GtkMenuShell has a "deactivate" signal,
	// but not an "activate" signal.
	g_signal_connect((gpointer)gens_menu_bar, "deactivate",
			 G_CALLBACK(gens_menu_deactivate), NULL);
	
	// Accelerator Group.
	static GtkAccelGroup *gens_menu_accel_group = NULL;
	if (gens_menu_accel_group != NULL)
	{
		// Delete the accelerator group.
		gtk_window_remove_accel_group(GTK_WINDOW(gens_window), gens_menu_accel_group);
		g_object_unref(gens_menu_accel_group);
	}
	
	// Create an accelerator group.
	gens_menu_accel_group = gtk_accel_group_new();
	
	// Parse the menus.
	gens_menu_parse(&gmiMain[0], GTK_MENU_SHELL(gens_menu_bar), gens_menu_accel_group);
	
	// Add the accel group.
	gtk_window_add_accel_group(GTK_WINDOW(gens_window), gens_menu_accel_group);
	
	// Synchronize the menus.
	Sync_Gens_Window();
	
#ifdef GDK_WINDOWING_QUARTZ
	// Set the menu bar as the MacOS X menu bar.
	if (!vdraw_get_fullscreen() && Settings.showMenuBar)
		ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(gens_menu_bar));
#endif
}
Esempio n. 2
0
/**
 * create_gens_window_menubar(): Create the menu bar.
 */
void gens_window_create_menubar(void)
{
	if (gens_menu_bar != NULL)
	{
		// Menu bar already exists. Delete it.
		gtk_widget_destroy(gens_menu_bar);
		gens_menu_clear();
	}
	
	if (!vdraw_get_fullscreen() && Settings.showMenuBar)
	{
		// Create a menu bar.
		gens_menu_bar = gtk_menu_bar_new();
		gtk_widget_show(gens_menu_bar);
		gtk_box_pack_start(GTK_BOX(gens_vbox_main), gens_menu_bar, FALSE, FALSE, 0);
	}
	else
	{
		// Create a popup menu.
		gens_menu_bar = gtk_menu_new();
	}
	
	// Accelerator Group.
	static GtkAccelGroup *gens_menu_accel_group = NULL;
	if (gens_menu_accel_group != NULL)
	{
		// Delete the accelerator group.
		gtk_window_remove_accel_group(GTK_WINDOW(gens_window), gens_menu_accel_group);
		g_object_unref(gens_menu_accel_group);
	}
	
	// Create an accelerator group.
	gens_menu_accel_group = gtk_accel_group_new();
	
	// Parse the menus.
	gens_menu_parse(&gmiMain[0], gens_menu_bar, gens_menu_accel_group);
	
	// Add the accel group.
	gtk_window_add_accel_group(GTK_WINDOW(gens_window), gens_menu_accel_group);
	
	// Synchronize the menus.
	Sync_Gens_Window();
	
#ifdef GDK_WINDOWING_QUARTZ
	// Set the menu bar as the MacOS X menu bar.
	if (!vdraw_get_fullscreen() && Settings.showMenuBar)
		ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(gens_menu_bar));
#endif
}
int
main (int argc, char **argv)
{
  GtkWidget       *window;
  GtkWidget       *vbox;
  GtkWidget       *menubar;
  IgeMacMenuGroup *group;
  IgeMacDock      *dock;
  GtkWidget       *bbox;
  GtkWidget       *button;

  gtk_init (&argc, &argv);

  dock = ige_mac_dock_get_default ();

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

  vbox = gtk_vbox_new (FALSE, 0);
  gtk_container_add (GTK_CONTAINER (window), vbox);

  menubar = test_setup_menu ();
  gtk_box_pack_start (GTK_BOX (vbox), 
                      menubar,
                      FALSE, TRUE, 0);
  
  gtk_box_pack_start (GTK_BOX (vbox), 
                      gtk_label_new ("Some window content here"), 
                      FALSE, FALSE, 12);

  bbox = gtk_hbutton_box_new ();
  gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_CENTER);
  gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 12);

  gtk_box_pack_start (GTK_BOX (vbox), 
                      bbox,
                      TRUE, TRUE, 0);

  button = gtk_button_new_with_label ("Bounce");
  g_signal_connect (button, "clicked", G_CALLBACK (bounce_cb), dock);
  gtk_box_pack_start (GTK_BOX (bbox), 
                      button,
                      FALSE, FALSE, 0);

  button = gtk_button_new_with_label ("Change Icon");
  g_signal_connect (button, "clicked", G_CALLBACK (change_icon_cb), dock);
  gtk_box_pack_start (GTK_BOX (bbox), 
                      button,
                      FALSE, FALSE, 0);

  button = gtk_button_new_with_label ("Change Menu");
  g_signal_connect (button, "clicked", G_CALLBACK (change_menu_cb), NULL);
  gtk_box_pack_start (GTK_BOX (bbox),
                      button,
                      FALSE, FALSE, 0);

  gtk_widget_show_all (window);

  gtk_widget_hide (menubar);

  ige_mac_menu_set_menu_bar (GTK_MENU_SHELL (menubar));
  ige_mac_menu_set_quit_menu_item (GTK_MENU_ITEM (quit_item));

  group = ige_mac_menu_add_app_menu_group ();
  ige_mac_menu_add_app_menu_item  (group,
                                   GTK_MENU_ITEM (about_item), 
                                   NULL);

  group = ige_mac_menu_add_app_menu_group ();
  ige_mac_menu_add_app_menu_item  (group,
                                   GTK_MENU_ITEM (preferences_item), 
                                   NULL);
  
  dock = ige_mac_dock_new ();
  g_signal_connect (dock,
                    "clicked",
                    G_CALLBACK (dock_clicked_cb),
                    window);
  g_signal_connect (dock,
                    "quit-activate",
                    G_CALLBACK (gtk_main_quit),
                    window);

  gtk_main ();

  return 0;
}
Esempio n. 4
0
File: gui.c Progetto: 1ynx/gimp
static void
gui_restore_after_callback (Gimp               *gimp,
                            GimpInitStatusFunc  status_callback)
{
  GimpGuiConfig *gui_config = GIMP_GUI_CONFIG (gimp->config);
  GimpDisplay   *display;

  if (gimp->be_verbose)
    g_print ("INIT: %s\n", G_STRFUNC);

  gimp->message_handler = GIMP_MESSAGE_BOX;

  if (gui_config->restore_accels)
    menus_restore (gimp);

  ui_configurer = g_object_new (GIMP_TYPE_UI_CONFIGURER,
                                "gimp", gimp,
                                NULL);

  image_ui_manager = gimp_menu_factory_manager_new (global_menu_factory,
                                                    "<Image>",
                                                    gimp,
                                                    gui_config->tearoff_menus);
  gimp_ui_manager_update (image_ui_manager, gimp);

#ifdef GDK_WINDOWING_QUARTZ
  {
    IgeMacMenuGroup *group;
    GtkWidget       *menu;
    GtkWidget       *item;

    menu = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
				      "/dummy-menubar/image-popup");

    if (GTK_IS_MENU_ITEM (menu))
      menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu));

    ige_mac_menu_set_menu_bar (GTK_MENU_SHELL (menu));

    item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
                                      "/dummy-menubar/image-popup/File/file-quit");
    if (GTK_IS_MENU_ITEM (item))
      ige_mac_menu_set_quit_menu_item (GTK_MENU_ITEM (item));

    /*  the about group  */
    group = ige_mac_menu_add_app_menu_group ();

    gui_add_to_app_menu (image_ui_manager, group,
                         "/dummy-menubar/image-popup/Help/dialogs-about",
                         _("About GIMP"));

    /*  the preferences group  */
    group = ige_mac_menu_add_app_menu_group ();

#define PREFERENCES "/dummy-menubar/image-popup/Edit/Preferences/"

    gui_add_to_app_menu (image_ui_manager, group,
                         PREFERENCES "dialogs-preferences", NULL);
    gui_add_to_app_menu (image_ui_manager, group,
                         PREFERENCES "dialogs-input-devices", NULL);
    gui_add_to_app_menu (image_ui_manager, group,
                         PREFERENCES "dialogs-keyboard-shortcuts", NULL);
    gui_add_to_app_menu (image_ui_manager, group,
                         PREFERENCES "dialogs-module-dialog", NULL);
    gui_add_to_app_menu (image_ui_manager, group,
                         PREFERENCES "plug-in-unit-editor", NULL);

#undef PREFERENCES
  }
#endif /* GDK_WINDOWING_QUARTZ */

  g_signal_connect_object (gui_config, "notify::single-window-mode",
                           G_CALLBACK (gui_single_window_mode_notify),
                           ui_configurer, 0);
  g_signal_connect_object (gui_config, "notify::tearoff-menus",
                           G_CALLBACK (gui_tearoff_menus_notify),
                           image_ui_manager, 0);
  g_signal_connect (image_ui_manager, "show-tooltip",
                    G_CALLBACK (gui_menu_show_tooltip),
                    gimp);
  g_signal_connect (image_ui_manager, "hide-tooltip",
                    G_CALLBACK (gui_menu_hide_tooltip),
                    gimp);

  gimp_devices_restore (gimp);
  gimp_controllers_restore (gimp, image_ui_manager);

  if (status_callback == splash_update)
    splash_destroy ();

  color_history_restore (gimp);

  if (gimp_get_show_gui (gimp))
    {
      GimpDisplayShell *shell;

      /*  create the empty display  */
      display = GIMP_DISPLAY (gimp_create_display (gimp,
                                                   NULL,
                                                   GIMP_UNIT_PIXEL,
                                                   1.0));

      shell = gimp_display_get_shell (display);

      if (gui_config->restore_session)
        session_restore (gimp);

      /*  move keyboard focus to the display  */
      gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (shell))));
    }

  /*  indicate that the application has finished loading  */
  gdk_notify_startup_complete ();
}