glade: bgo #662288 - Fails to execute program when Glade UI file has unsaved changes
[anjuta.git] / src / action-callbacks.c
blob71f1b865b2c159d4c176695a4457f55265b7fd47
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3 * mainmenu_callbacks.c
4 * Copyright (C) 2003 Naba Kumar <naba@gnome.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
24 #include <sys/stat.h>
25 #include <unistd.h>
26 #include <signal.h>
27 #include <string.h>
28 #include <sched.h>
29 #include <sys/wait.h>
30 #include <errno.h>
32 #include <libanjuta/anjuta-utils.h>
33 #include <libanjuta/resources.h>
34 #include <libanjuta/interfaces/ianjuta-preferences.h>
36 #include "anjuta-app.h"
37 #include "about.h"
38 #include "action-callbacks.h"
39 #include "anjuta.h"
41 #define TOOLBAR_VISIBLE "toolbar-visible"
43 void
44 on_exit1_activate (GtkAction * action, AnjutaApp *app)
46 GdkEvent *event = gdk_event_new (GDK_DELETE);
48 event->any.window = g_object_ref (gtk_widget_get_window (GTK_WIDGET(app)));
49 event->any.send_event = TRUE;
51 gtk_main_do_event (event);
52 gdk_event_free (event);
55 void
56 on_fullscreen_toggle (GtkAction *action, AnjutaApp *app)
58 if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
59 gtk_window_fullscreen (GTK_WINDOW(app));
60 else
61 gtk_window_unfullscreen (GTK_WINDOW(app));
64 void
65 on_layout_lock_toggle (GtkAction *action, AnjutaApp *app)
67 if (app->layout_manager)
68 g_object_set (app->layout_manager->master, "locked",
69 gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)),
70 NULL);
73 void
74 on_reset_layout_activate(GtkAction *action, AnjutaApp *app)
76 anjuta_app_layout_reset (app);
79 void
80 on_toolbar_view_toggled (GtkAction *action, AnjutaApp *app)
82 gboolean status = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
83 if (status)
85 gtk_widget_show (app->toolbar);
87 else
89 gtk_widget_hide (app->toolbar);
91 g_settings_set_boolean (app->settings,
92 TOOLBAR_VISIBLE,
93 status);
96 void
97 on_set_preferences1_activate (GtkAction * action, AnjutaApp *app)
100 GtkWidget *preferences_dialog;
102 if (anjuta_preferences_is_dialog_created (app->preferences))
104 gtk_window_present (GTK_WINDOW (anjuta_preferences_get_dialog (app->preferences)));
105 return;
107 preferences_dialog = anjuta_preferences_get_dialog (app->preferences);
109 /* Install main application preferences */
110 anjuta_app_install_preferences (app);
112 g_signal_connect_swapped (G_OBJECT (preferences_dialog),
113 "response",
114 G_CALLBACK (gtk_widget_destroy),
115 preferences_dialog);
117 gtk_window_set_transient_for (GTK_WINDOW (preferences_dialog),
118 GTK_WINDOW (app));
120 gtk_widget_show (preferences_dialog);
123 static void
124 help_activate (GtkWidget *parent, const gchar *doc_id, const gchar *item)
126 anjuta_util_help_display (parent, doc_id, item);
129 void
130 on_help_manual_activate (GtkAction *action, gpointer data)
132 GError* error = NULL;
133 if (!g_spawn_command_line_async ("yelp ghelp:anjuta-manual", &error) &&
134 error)
136 g_warning ("Could open FAQ: %s", error->message);
137 g_error_free (error);
141 void
142 on_help_tutorial_activate (GtkAction *action, gpointer data)
144 help_activate (data, "anjuta-tutorial", "anjuta-tutorial.xml");
147 void
148 on_help_advanced_tutorial_activate (GtkAction *action, gpointer data)
150 help_activate (data, "anjuta-advanced-tutorial", "anjuta-advanced-tutorial.xml");
153 void
154 on_help_faqs_activate (GtkAction *action, gpointer data)
156 GError* error = NULL;
157 if (!g_spawn_command_line_async ("yelp ghelp:anjuta-faqs", &error) &&
158 error)
160 g_warning ("Could open FAQ: %s", error->message);
161 g_error_free (error);
165 void
166 on_url_home_activate (GtkAction * action, gpointer user_data)
168 anjuta_res_url_show("http://www.anjuta.org");
171 void
172 on_url_bugs_activate (GtkAction * action, gpointer user_data)
174 anjuta_res_url_show("https://bugzilla.gnome.org/enter_bug.cgi?product=anjuta");
177 void
178 on_url_faqs_activate (GtkAction * action, gpointer user_data)
180 anjuta_res_url_show("mailto:anjuta-list@lists.sourceforge.net");
183 void
184 on_about_activate (GtkAction * action, AnjutaApp *app)
186 GtkWidget *about_dlg = about_box_new (GTK_WINDOW (app));
188 g_signal_connect_swapped(about_dlg, "response",
189 G_CALLBACK(gtk_widget_destroy), about_dlg);
191 gtk_widget_show (about_dlg);