SF.net SVN: geany:[5235] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Sep 16 15:14:09 UTC 2010


Revision: 5235
          http://geany.svn.sourceforge.net/geany/?rev=5235&view=rev
Author:   ntrel
Date:     2010-09-16 15:14:09 +0000 (Thu, 16 Sep 2010)

Log Message:
-----------
Add plugin signals project-dialog-create and
project-dialog-confirmed so plugins can append a Project Properties
notebook tab (patch by Ji?\197?\153?\195?\173 Techet, thanks).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/doc/pluginsignals.c
    trunk/src/geanyobject.c
    trunk/src/geanyobject.h
    trunk/src/project.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-09-16 14:52:04 UTC (rev 5234)
+++ trunk/ChangeLog	2010-09-16 15:14:09 UTC (rev 5235)
@@ -10,6 +10,11 @@
    Prompt for reloading if the document has an undo stack to avoid
    losing undo ability on accidental reloading (patch by Colomban
    Wendling, thanks).
+ * src/project.c, src/geanyobject.c, src/geanyobject.h,
+   doc/pluginsignals.c:
+   Add plugin signals project-dialog-create and
+   project-dialog-confirmed so plugins can append a Project Properties
+   notebook tab (patch by Jiří Techet, thanks).
 
 
 2010-09-14  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/doc/pluginsignals.c
===================================================================
--- trunk/doc/pluginsignals.c	2010-09-16 14:52:04 UTC (rev 5234)
+++ trunk/doc/pluginsignals.c	2010-09-16 15:14:09 UTC (rev 5235)
@@ -160,6 +160,26 @@
  */
 signal void (*project_close)(GObject *obj, gpointer user_data);
 
+/** Sent after a project dialog is created but before it is displayed. Plugins
+ *  can append their own project settings tabs by using this signal.
+ *  @param obj a GeanyObject instance, should be ignored.
+ *  @param notebook a GtkNotebook instance that can be used by plugins to append their
+ *  settings tabs.
+ *  @param user_data user data.
+ */
+signal void (*project_dialog_create)(GObject *obj, GtkWidget *notebook, gpointer user_data);
+
+/** Sent when the settings dialog is confirmed by the user. Plugins can use
+ *  this signal to read the settings widgets previously added by using the
+ *  @c project-dialog-create signal.
+ *  @warning The dialog will still be running afterwards if the user chose 'Apply'.
+ *  @param obj a GeanyObject instance, should be ignored.
+ *  @param notebook a GtkNotebook instance that can be used by plugins to read their
+ *  settings widgets.
+ *  @param user_data user data.
+ */
+signal void (*project_dialog_confirmed)(GObject *obj, GtkWidget *notebook, gpointer user_data);
+
 /** Sent once Geany has finished all initialization and startup tasks and the GUI has been
  *  realized. This signal is the very last step in the startup process and is sent once
  *  the GTK main event loop has been entered.

Modified: trunk/src/geanyobject.c
===================================================================
--- trunk/src/geanyobject.c	2010-09-16 14:52:04 UTC (rev 5234)
+++ trunk/src/geanyobject.c	2010-09-16 15:14:09 UTC (rev 5235)
@@ -262,6 +262,24 @@
 		NULL, NULL,
 		g_cclosure_marshal_VOID__VOID,
 		G_TYPE_NONE, 0);
+	geany_object_signals[GCB_PROJECT_DIALOG_CREATE] = g_signal_new (
+		"project-dialog-create",
+		G_OBJECT_CLASS_TYPE (g_object_class),
+		G_SIGNAL_RUN_FIRST,
+		G_STRUCT_OFFSET (GeanyObjectClass, project_dialog_create),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__POINTER,
+		G_TYPE_NONE, 1,
+		G_TYPE_POINTER);
+	geany_object_signals[GCB_PROJECT_DIALOG_CONFIRMED] = g_signal_new (
+		"project-dialog-confirmed",
+		G_OBJECT_CLASS_TYPE (g_object_class),
+		G_SIGNAL_RUN_FIRST,
+		G_STRUCT_OFFSET (GeanyObjectClass, project_dialog_confirmed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__POINTER,
+		G_TYPE_NONE, 1,
+		G_TYPE_POINTER);
 
 	/* Editor signals */
 	geany_object_signals[GCB_UPDATE_EDITOR_MENU] = g_signal_new (

Modified: trunk/src/geanyobject.h
===================================================================
--- trunk/src/geanyobject.h	2010-09-16 14:52:04 UTC (rev 5234)
+++ trunk/src/geanyobject.h	2010-09-16 15:14:09 UTC (rev 5235)
@@ -42,6 +42,8 @@
 	GCB_PROJECT_OPEN,
 	GCB_PROJECT_SAVE,
 	GCB_PROJECT_CLOSE,
+	GCB_PROJECT_DIALOG_CREATE,
+	GCB_PROJECT_DIALOG_CONFIRMED,
 	GCB_UPDATE_EDITOR_MENU,
 	GCB_EDITOR_NOTIFY,
 	GCB_GEANY_STARTUP_COMPLETE,
@@ -88,6 +90,8 @@
 	void (*project_open)(GKeyFile *keyfile);
 	void (*project_save)(GKeyFile *keyfile);
 	void (*project_close)(void);
+	void (*project_dialog_create)(GtkWidget *notebook);
+	void (*project_dialog_confirmed)(GtkWidget *notebook);
 	void (*update_editor_menu)(const gchar *word, gint click_pos, GeanyDocument *doc);
 	gboolean (*editor_notify)(GeanyEditor *editor, gpointer scnt);
 	void (*geany_startup_complete)(void);

Modified: trunk/src/project.c
===================================================================
--- trunk/src/project.c	2010-09-16 14:52:04 UTC (rev 5234)
+++ trunk/src/project.c	2010-09-16 15:14:09 UTC (rev 5235)
@@ -191,6 +191,9 @@
 	{
 		if (update_config(e))
 		{
+			write_config(TRUE);
+			ui_set_statusbar(TRUE, _("Project \"%s\" created."), app->project->name);
+
 			ui_add_recent_project_file(app->project->file_name);
 			break;
 		}
@@ -563,6 +566,7 @@
 	}
 #endif
 
+	g_signal_emit_by_name(geany_object, "project-dialog-create", e->notebook);
 	gtk_widget_show_all(e->dialog);
 
 	/* note: notebook page must be shown before setting current page */
@@ -575,6 +579,9 @@
 	{
 		if (update_config(e))
 		{
+			g_signal_emit_by_name(geany_object, "project-dialog-confirmed", e->notebook);
+			write_config(TRUE);
+			ui_set_statusbar(TRUE, _("Project \"%s\" saved."), app->project->name);
 			stash_group_update(indent_group, e->dialog);
 			break;
 		}
@@ -791,11 +798,6 @@
 		g_free(tmp);
 #endif
 	}
-	write_config(TRUE);
-	if (new_project)
-		ui_set_statusbar(TRUE, _("Project \"%s\" created."), p->name);
-	else
-		ui_set_statusbar(TRUE, _("Project \"%s\" saved."), p->name);
 
 	update_ui();
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list