static GtkWidget*
new_testrgb_window (GdkPixbuf *pixbuf, gchar *title)
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *temp_box;
	GtkWidget *button;
	GtkWidget *drawing_area;
	gint w, h;
 
	w = gdk_pixbuf_get_width (pixbuf);
	h = gdk_pixbuf_get_height (pixbuf);

	window = gtk_widget_new (gtk_window_get_type (),
				 "GtkObject::user_data", NULL,
				 "GtkWindow::type", GTK_WINDOW_TOPLEVEL,
				 "GtkWindow::title", "testrgb",
				 "GtkWindow::allow_shrink", TRUE,
				 NULL);
	gtk_signal_connect (GTK_OBJECT (window), "destroy",
			    (GtkSignalFunc) quit_func, NULL);

	vbox = gtk_vbox_new (FALSE, 0);

	if (title)
		gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (title),
				    TRUE, TRUE, 0);

	drawing_area = gtk_drawing_area_new ();

	temp_box = gtk_hbox_new (FALSE, 0);
	gtk_drawing_area_size (GTK_DRAWING_AREA(drawing_area), w, h);
	gtk_box_pack_start (GTK_BOX (temp_box), drawing_area, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), temp_box, FALSE, FALSE, 0);
	

	gtk_signal_connect (GTK_OBJECT(drawing_area), "expose_event",
			    GTK_SIGNAL_FUNC(expose_func), NULL);
	gtk_signal_connect (GTK_OBJECT(drawing_area), "configure_event",
			    GTK_SIGNAL_FUNC (config_func), NULL);

	gtk_object_set_data (GTK_OBJECT(drawing_area), "pixbuf", pixbuf);

	gtk_widget_show (drawing_area);

	button = gtk_button_new_with_label ("Quit");
	gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
	gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
				   (GtkSignalFunc) gtk_widget_destroy,
				   GTK_OBJECT (window));

	gtk_widget_show (button);

	gtk_container_add (GTK_CONTAINER (window), vbox);
	gtk_widget_show_all (vbox);

	gtk_widget_show (window);

        return window;
}
Exemple #2
0
static GtkWidget*
new_testrgb_window (GdkPixbuf *pixbuf, gchar *title)
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *temp_box;
	GtkWidget *button;
	GtkWidget *drawing_area;
	gint w, h;

        g_return_val_if_fail (pixbuf != NULL, NULL);
	w = gdk_pixbuf_get_width (pixbuf);
	h = gdk_pixbuf_get_height (pixbuf);

	window = g_object_new (gtk_window_get_type (),
				 "GtkObject::user_data", NULL,
				 "GtkWindow::type", GTK_WINDOW_TOPLEVEL,
				 "GtkWindow::title", title ? title : "testrgb",
				 "GtkWindow::allow_shrink", TRUE,
				 NULL);
	g_signal_connect (window, "destroy",
			  G_CALLBACK (quit_func), NULL);

	vbox = gtk_vbox_new (FALSE, 0);

	if (title)
		gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (title),
				    TRUE, TRUE, 0);

	drawing_area = gtk_drawing_area_new ();

	temp_box = gtk_hbox_new (FALSE, 0);
	gtk_widget_set_size_request (GTK_WIDGET (drawing_area), w, h);
	gtk_box_pack_start (GTK_BOX (temp_box), drawing_area, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), temp_box, FALSE, FALSE, 0);
	

	g_signal_connect (drawing_area, "expose_event",
			  G_CALLBACK (expose_func), NULL);
	g_signal_connect (drawing_area, "configure_event",
			  G_CALLBACK (config_func), NULL);

	g_object_set_data (G_OBJECT (drawing_area), "pixbuf", pixbuf);

	gtk_widget_show (drawing_area);

	button = gtk_button_new_with_label ("Quit");
	gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
	g_signal_connect_swapped (button, "clicked",
				  G_CALLBACK (gtk_widget_destroy), window);

	gtk_widget_show (button);

	gtk_container_add (GTK_CONTAINER (window), vbox);
	gtk_widget_show_all (vbox);

	gtk_widget_show (window);

        return drawing_area;
}
Exemple #3
0
/*
 * Initializes the GbWidget structure.
 * I've placed this at the end of the file so we don't have to include
 * declarations of all the functions.
 */
GbWidget *
gb_window_init ()
{
  /* Initialise the GTK type */
  volatile GtkType type;
  type = gtk_window_get_type ();

  /* Initialize the GbWidget structure */
  gb_widget_init_struct (&gbwidget);

  /* Fill in the pixmap struct & tooltip */
  gbwidget.pixmap_struct = window_xpm;
  gbwidget.tooltip = _("Window");

  /* Fill in any functions that this GbWidget has */
  gbwidget.gb_widget_new = gb_window_new;
  gbwidget.gb_widget_create_properties = gb_window_create_properties;
  gbwidget.gb_widget_get_properties = gb_window_get_properties;
  gbwidget.gb_widget_set_properties = gb_window_set_properties;
  gbwidget.gb_widget_write_source = gb_window_write_source;
/*
   gbwidget.gb_widget_create_popup_menu = gb_window_create_popup_menu;
 */

  return &gbwidget;
}
Exemple #4
0
int
main (int argc, char *argv[])
{
  GtkWidget *window;

  gtk_init (&argc, &argv);

  window = g_object_connect (g_object_new (gtk_window_get_type (),
                                           "type", GTK_WINDOW_TOPLEVEL,
                                           "title", "hello world",
                                           "resizable", FALSE,
                                           NULL),
                             "signal::destroy", gtk_main_quit, NULL,
                             NULL);
  g_object_connect (g_object_new (gtk_button_get_type (),
                                  "GtkButton::label", "hello world",
                                  "GtkWidget::parent", window,
                                  "GtkWidget::visible", TRUE,
                                  NULL),
                    "signal::clicked", hello, NULL,
                    NULL);
  gtk_widget_show (window);

  gtk_main ();

  return 0;
}
Exemple #5
0
GType file_viewer_get_type (void) {
	static volatile gsize file_viewer_type_id__volatile = 0;
	if (g_once_init_enter (&file_viewer_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (FileViewerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) file_viewer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FileViewer), 0, (GInstanceInitFunc) file_viewer_instance_init, NULL };
		GType file_viewer_type_id;
		file_viewer_type_id = g_type_register_static (gtk_window_get_type (), "FileViewer", &g_define_type_info, 0);
		g_once_init_leave (&file_viewer_type_id__volatile, file_viewer_type_id);
	}
	return file_viewer_type_id__volatile;
}
Exemple #6
0
GType docker_gui_get_type (void) {
	static volatile gsize docker_gui_type_id__volatile = 0;
	if (g_once_init_enter (&docker_gui_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (DockerGuiClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) docker_gui_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DockerGui), 0, (GInstanceInitFunc) docker_gui_instance_init, NULL };
		GType docker_gui_type_id;
		docker_gui_type_id = g_type_register_static (gtk_window_get_type (), "DockerGui", &g_define_type_info, 0);
		g_once_init_leave (&docker_gui_type_id__volatile, docker_gui_type_id);
	}
	return docker_gui_type_id__volatile;
}
Exemple #7
0
guint
gtk_plug_get_type ()
{
  static guint plug_type = 0;

  if (!plug_type)
    {
      static const GtkTypeInfo plug_info =
      {
	"GtkPlug",
	sizeof (GtkPlug),
	sizeof (GtkPlugClass),
	(GtkClassInitFunc) gtk_plug_class_init,
	(GtkObjectInitFunc) gtk_plug_init,
        /* reserved_1 */ NULL,
	/* reserved_2 */ NULL,
	(GtkClassInitFunc) NULL,
      };

      plug_type = gtk_type_unique (gtk_window_get_type (), &plug_info);
    }

  return plug_type;
}
Exemple #8
0
      plug_type = gtk_type_unique (gtk_window_get_type (), &plug_info);
    }

  return plug_type;
}

static void
gtk_plug_class_init (GtkPlugClass *class)
{
  GtkWidgetClass *widget_class;
  GtkWindowClass *window_class;

  widget_class = (GtkWidgetClass *)class;
  window_class = (GtkWindowClass *)class;

  parent_class = gtk_type_class (gtk_window_get_type ());

  widget_class->realize = gtk_plug_realize;
  widget_class->unrealize = gtk_plug_unrealize;
  widget_class->key_press_event = gtk_plug_key_press_event;
  widget_class->focus_in_event = gtk_plug_focus_in_event;
  widget_class->focus_out_event = gtk_plug_focus_out_event;

  window_class->set_focus = gtk_plug_set_focus;
}

static void
gtk_plug_init (GtkPlug *plug)
{
  GtkWindow *window;
Exemple #9
0
static void
create_vkbd(void)
{
  GtkWidget *window, *container, *hbox;
  int i, j;
  KeyCode *keycodeptr, keycode = MIN_KEYCODE;
  static SPIBoolean true_val = True;
  static SPIBoolean false_val = False;

  window = g_object_connect (gtk_widget_new (gtk_window_get_type (),
					     "user_data", NULL,
					     "can_focus", FALSE,
					     "type", GTK_WINDOW_TOPLEVEL,
					     "window-position", GTK_WIN_POS_CENTER,
					     "title", "test",
					     "allow_grow", FALSE,
					     "allow_shrink", FALSE,
					     "border_width", 10,
					     NULL),
			     "signal::realize", keysynth_realize, NULL,
			     "signal::destroy", keysynth_exit, NULL,
			     NULL);
  
  container = gtk_widget_new (GTK_TYPE_VBOX,
			      "GtkWidget::parent", window,
			      "GtkWidget::visible", TRUE,
			      NULL);
  for (i=0; i<MAX_ROWS-1; ++i)
    {
      hbox = gtk_widget_new (gtk_hbox_get_type(),
			     "GtkWidget::parent", container,
			     "GtkWidget::visible", TRUE,
			     NULL);
      buttons[i] = g_new0 (GtkButton*, MAX_COLUMNS);
      for (j=0; j<MAX_COLUMNS; ++j)
	{
	  keycodeptr = (KeyCode *) g_new0 (KeyCode, 1);
	  *keycodeptr = keycode;
	  buttons[i][j] = g_object_connect (gtk_widget_new (gtk_button_get_type (),
						     "GtkWidget::parent", hbox,
						     "GtkWidget::visible", TRUE,
						     NULL),
				     "signal::clicked",
				     synth_keycode, keycodeptr,
				     NULL);
	  if (keycode == SHIFT_L_KEYCODE || keycode == SHIFT_R_KEYCODE)
	    {
	      g_object_connect (buttons[i][j], "signal::pressed", show_shift,
				&true_val, NULL);  
	      g_object_connect (buttons[i][j], "signal::released", show_shift,
				&false_val, NULL);  
	    }
	  ++keycode;
	}
    } 
  hbox = gtk_widget_new (gtk_hbox_get_type(),
			 "GtkWidget::parent", container,
			 "GtkWidget::visible", TRUE,
			 NULL);
  buttons[i] = g_new0 (GtkButton*, 2);
  buttons[i][0] = g_object_connect (gtk_widget_new (gtk_button_get_type (),
							     "GtkButton::label", "Quit",
							     "GtkWidget::parent", hbox,
							     "GtkWidget::visible", TRUE,
							     NULL),
					     "signal::clicked",
					     button_exit, NULL,
					     NULL);
  buttons[i][1] = g_object_connect (gtk_widget_new (gtk_button_get_type (),
						    "GtkButton::label", "ShiftLatch",
						    "GtkWidget::parent", hbox,
						    "GtkWidget::visible", TRUE,
						    NULL),
				    "signal::clicked",
				    toggle_shift_latch, NULL,
				    NULL);
  label_buttons (caps_lock || shift_latched);
  gtk_widget_show (window);
}
gtk_gui::gtk_gui(const char* title, const char* initfile)
:
	m_programfilename(NULL),
	m_smilfilename(NULL),
	m_settings(NULL),
	m_toplevelcontainer(NULL),
	m_guicontainer(NULL),
	m_documentcontainer(NULL),
#if  GTK_MAJOR_VERSION >= 3
	m_play(NULL),
	m_pause(NULL),
	m_stop(NULL),
	m_reload(NULL),
#else // GTK_MAJOR_VERSION < 3
	menubar(NULL),
	m_actions(NULL),
#endif // GTK_MAJOR_VERSION < 3
#ifdef	LOCK_MESSAGE
	m_gui_thread(0),
#endif/*LOCK_MESSAGE*/
	m_file_chooser(NULL),
	m_settings_chooser(NULL),
	m_url_text_entry(NULL),
	m_mainloop(NULL)
{

	GError *error = NULL;

	// Initialization of the Menu Bar Items
	// There is a problem in here because the callbacks in Actions go like g_signal_connect (but, we need g_sginal_connect_swapped)
#if  GTK_MAJOR_VERSION >= 3
#else // GTK_MAJOR_VERSION < 3
	static GtkActionEntry entries[] = {
	{ "FileMenu", NULL, gettext_noop("_File")},
	{ "open", GTK_STOCK_OPEN, gettext_noop("_Open..."),
		"<Control>O", gettext_noop("Open a document from local disk"), NULL},
	{ "openurl", NULL, gettext_noop("Open _URL..."),
		"<Control>L", gettext_noop("Open a document from the network"), NULL},
	{ "reload", GTK_STOCK_REFRESH, gettext_noop("_Reload"),
		NULL, gettext_noop("Reload current document"), NULL},
	{ "preferences", GTK_STOCK_PREFERENCES , gettext_noop("_Preferences"),
		NULL, gettext_noop("Change application preferences"), NULL},
	{ "loadsettings", GTK_STOCK_PROPERTIES, gettext_noop("_Load Settings..."),
		NULL, gettext_noop("Open SMIL playback settings document"), NULL},
	{ "quit", GTK_STOCK_QUIT, gettext_noop("_Quit"),
		"<Control>Q", gettext_noop("Quit Ambulant Player"), NULL},

	// Play Menu
	{ "PlayMenu", NULL, gettext_noop("Pla_y")},
	{ "play", GTK_STOCK_MEDIA_PLAY, gettext_noop("Pla_y"),
		"<Control>P", gettext_noop("Start document playback"), NULL},
	{ "pause", GTK_STOCK_MEDIA_PAUSE, gettext_noop("_Pause"),
		"<Control><Shift>P", gettext_noop("Pause document playback"), NULL},
	{ "stop", GTK_STOCK_MEDIA_STOP, gettext_noop("_Stop"),
		"<Control>S", gettext_noop("Stop document playback"), NULL},
	// View Menu
	{ "ViewMenu", NULL, gettext_noop("_View")},
	{ "fullscreen", NULL, gettext_noop("_Full Screen"),
		"<Control>F", gettext_noop("Full Screen"), NULL},
	{ "window", NULL, gettext_noop("_Window"),
		"<Control><Alt>F", gettext_noop("Normal Screen"), NULL},
	{ "logwindow", NULL, gettext_noop("_Log Window..."),
		"<Control>L", gettext_noop("Show status output window"), NULL},
	// Help Menu
	{ "HelpMenu", NULL, gettext_noop("_Help")},
	{ "about", GTK_STOCK_ABOUT, gettext_noop("_About AmbulantPlayer"),
		NULL, gettext_noop("Information about Ambulant"), NULL},
	{ "help", GTK_STOCK_HELP, gettext_noop("AmbulantPlayer _Help..."),
		NULL, gettext_noop("Help in AmbulantPlayer Webpage"), NULL},
	{ "website", NULL, gettext_noop("AmbulantPlayer _Website..."),
		NULL, gettext_noop("Open the Ambulant Webpage"), NULL},
	{ "welcome", GTK_STOCK_HOME, gettext_noop("_Play Welcome Document"),
		"<Control><shift>H", gettext_noop("Plays a simple SMIL file"), NULL}
	};
	int n_entries = G_N_ELEMENTS(entries);
#endif  // GTK_MAJOR_VERSION < 3

	m_programfilename = title;
#ifdef	LOCK_MESSAGE
	pthread_cond_init(&m_cond_message, NULL);
	pthread_mutex_init(&m_lock_message, NULL);
	m_gui_thread = pthread_self();
#endif/*LOCK_MESSAGE*/
	// If the URL starts with "ambulant:" this is the trick-uri-scheme to
	// open URLs in Ambulant from the browser. Remove the trick.
	if (strncmp(initfile, "ambulant:", 9) == 0)
		initfile += 9;
	if (initfile != NULL && initfile != "")
		m_smilfilename = strdup(initfile);

	/*Initialization of the Main Window */
#if GTK_MAJOR_VERSION >= 3
#else // GTK_MAJOR_VERSION < 3
	m_toplevelcontainer = GTK_WINDOW (gtk_window_new (GTK_WINDOW_TOPLEVEL));
	gtk_window_set_title(m_toplevelcontainer, initfile);
	gtk_window_set_resizable(m_toplevelcontainer, true);
//	gtk_widget_set_size_request(GTK_WIDGET (m_toplevelcontainer), 200, 150);
//	gtk_widget_set_uposition(GTK_WIDGET (m_toplevelcontainer), 240, 320);	deprecated
	gtk_window_set_position(GTK_WINDOW (m_toplevelcontainer), GTK_WIN_POS_MOUSE);

	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "delete-event", G_CALLBACK (gtk_C_callback_quit), (void *) this);
	// Callback for the resize events
//	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "draw", G_CALLBACK (gtk_C_callback_resize), (void *) this);
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "expose-event", G_CALLBACK (gtk_C_callback_resize), (void *) this);
#endif  // GTK_MAJOR_VERSION < 3

	/* Initialization of the signals */
#if GTK_MAJOR_VERSION >= 3
	signal_player_done_id = g_signal_new ("signal-player-done", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, 0, G_TYPE_NONE, 0, NULL);

	signal_need_redraw_id = g_signal_new ("signal-need-redraw", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, 0, G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);

	signal_internal_message_id = g_signal_new ("signal-internal-message", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, 0, G_TYPE_NONE, 1, G_TYPE_POINTER);
#else // GTK_MAJOR_VERSION < 3
	signal_player_done_id = g_signal_new ("signal-player-done", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, g_cclosure_marshal_VOID__VOID,GTK_TYPE_NONE, 0, NULL);

	signal_need_redraw_id = g_signal_new ("signal-need-redraw", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, gtk_marshal_NONE__POINTER_POINTER_POINTER,GTK_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);

	signal_internal_message_id = g_signal_new ("signal-internal-message", gtk_window_get_type(), G_SIGNAL_RUN_LAST, 0, 0, 0, 0, G_TYPE_NONE, 1, G_TYPE_POINTER);

	// Signal connections
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-player-done",  G_CALLBACK (gtk_C_callback_do_player_done), (void*)this);

	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-need-redraw",  G_CALLBACK (gtk_C_callback_do_player_done), (void*)this);

	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-internal-message", G_CALLBACK (gtk_C_callback_do_internal_message), (void*)this);

	/* VBox (m_guicontainer) to place the Menu bar in the correct place */
	m_guicontainer = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(m_toplevelcontainer), GTK_WIDGET (m_guicontainer));
#endif // GTK_MAJOR_VERSION < 3

#if GTK_MAJOR_VERSION >= 3
	GtkBuilder* builder = gtk_builder_new ();
	// The layout of the GUI is made using 'glade'
        gtk_builder_add_from_file (builder, AMBULANT_DATADIR "/ambulant-gtk_gui.xml", NULL);
       
	m_toplevelcontainer = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
        gtk_builder_connect_signals (builder, NULL);          
	// The remove window button
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "delete-event", G_CALLBACK (gtk_C_callback_quit), (void *) this);
	// The actual activation calls for selected menu items, as found by name in the processed .xml file
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "open_menu_item")), "activate", G_CALLBACK (gtk_C_callback_open), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "url_menu_item")), "activate", G_CALLBACK (gtk_C_callback_open_url), (void *) this );
	g_signal_connect_swapped ((GObject*)(m_reload = gtk_builder_find_menu_item(builder, "reload_menu_item")), "activate", G_CALLBACK (gtk_C_callback_reload), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "preferences_menu_item")), "activate", G_CALLBACK (gtk_C_callback_settings_select), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "settings_menu_item")), "activate", G_CALLBACK (gtk_C_callback_load_settings), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "quit_menu_item")), "activate", G_CALLBACK (gtk_C_callback_quit), (void *) this );
	g_signal_connect_swapped ((GObject*)(m_play = gtk_builder_find_menu_item(builder, "play_menu_item")), "activate", G_CALLBACK (gtk_C_callback_play), (void *) this );
	g_signal_connect_swapped ((GObject*)(m_pause = gtk_builder_find_menu_item(builder, "pause_menu_item")), "activate", G_CALLBACK (gtk_C_callback_pause), (void *) this );
	g_signal_connect_swapped ((GObject*)(m_stop = gtk_builder_find_menu_item(builder, "stop_menu_item")), "activate", G_CALLBACK (gtk_C_callback_stop), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "fullscreen_menu_item")), "activate", G_CALLBACK (gtk_C_callback_full_screen), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "normalscreen_menu_item")), "activate", G_CALLBACK (gtk_C_callback_normal_screen), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "logger_window_menu_item")), "activate", G_CALLBACK (gtk_C_callback_logger_window), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "about_menu_item")), "activate", G_CALLBACK (gtk_C_callback_about), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "help_menu_item")), "activate", G_CALLBACK (gtk_C_callback_help), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "homepage_menu_item")), "activate", G_CALLBACK (gtk_C_callback_homepage), (void *) this );
	g_signal_connect_swapped (G_OBJECT (gtk_builder_find_menu_item(builder, "play_welcome_menu_item")), "activate", G_CALLBACK (gtk_C_callback_welcome), (void *) this );
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-player-done",  G_CALLBACK (gtk_C_callback_do_player_done), (void*)this);
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-need-redraw",  G_CALLBACK (gtk_C_callback_do_player_done), (void*)this);
	g_signal_connect_swapped (G_OBJECT (m_toplevelcontainer), "signal-internal-message", G_CALLBACK (gtk_C_callback_do_internal_message), (void*)this);
        
        gtk_widget_show (m_toplevelcontainer);       
	/* VBox (m_guicontainer) to place the Menu bar in the correct place */
	m_guicontainer = gtk_builder_find_menu_item (builder, "topbox");
        g_object_unref (G_OBJECT (builder));
	gtk_box_set_homogeneous ((GtkBox*) m_guicontainer, false);
#else // GTK_MAJOR_VERSION < 3
	/* The Action Group that includes the menu bar */
	m_actions = gtk_action_group_new("Actions");
	gtk_action_group_set_translation_domain(m_actions, PACKAGE);
	gtk_action_group_add_actions(m_actions, entries, n_entries, (void*)this);

	/* The Gtk UI Manager */
	GtkUIManager *ui = gtk_ui_manager_new();

	if (!gtk_ui_manager_add_ui_from_string(ui, ui_description, -1, &error))
		g_error("Could not merge UI, error was: %s\n", error->message);
	gtk_ui_manager_insert_action_group(ui, m_actions, 0);
	gtk_window_add_accel_group(m_toplevelcontainer, gtk_ui_manager_get_accel_group(ui));

	// The actual activation calls
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "open"), "activate",	G_CALLBACK (gtk_C_callback_open), (void *) this );
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "openurl"), "activate",  G_CALLBACK (gtk_C_callback_open_url), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "reload"), "activate",  G_CALLBACK (gtk_C_callback_reload), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "preferences"), "activate",  G_CALLBACK (gtk_C_callback_settings_select), (void *) this );
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "loadsettings"), "activate",	G_CALLBACK (gtk_C_callback_load_settings), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "quit"), "activate",	G_CALLBACK (gtk_C_callback_quit), (void*)this);

	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "play"), "activate",	G_CALLBACK (gtk_C_callback_play), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "pause"), "activate",	 G_CALLBACK (gtk_C_callback_pause), (void*)this );
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "stop"), "activate",	G_CALLBACK (gtk_C_callback_stop), (void*)this);

	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "fullscreen"), "activate",  G_CALLBACK (gtk_C_callback_full_screen), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "window"), "activate",  G_CALLBACK (gtk_C_callback_normal_screen), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "logwindow"), "activate",	 G_CALLBACK (gtk_C_callback_logger_window), (void*)this);

	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "about"), "activate",	 G_CALLBACK (gtk_C_callback_about), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "help"), "activate",	G_CALLBACK (gtk_C_callback_help), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "website"), "activate",  G_CALLBACK (gtk_C_callback_homepage), (void*)this);
	g_signal_connect_swapped (gtk_action_group_get_action (m_actions, "welcome"), "activate",  G_CALLBACK (gtk_C_callback_welcome), (void*)this);


	/* Creation of the Menubar and Menu Items */
	menubar = gtk_ui_manager_get_widget (ui, "/MenuBar");
	gtk_box_pack_start (GTK_BOX (m_guicontainer), menubar, FALSE, FALSE, 0);
	gtk_widget_show_all(GTK_WIDGET (m_toplevelcontainer));
#endif // GTK_MAJOR_VERSION < 3

	/* Creation of the document area */
	m_documentcontainer = gtk_drawing_area_new();
	gtk_widget_hide(m_documentcontainer);
	gtk_box_pack_start (GTK_BOX (m_guicontainer), m_documentcontainer, TRUE, TRUE, 0);

#if GTK_MAJOR_VERSION >= 3
	_update_menus();
#else // GTK_MAJOR_VERSION < 3
	// creates the main loop
	main_loop = g_main_loop_new(NULL, FALSE);
	_update_menus();
#endif // GTK_MAJOR_VERSION < 3
}