anjuta r3958 - in trunk: . libanjuta/interfaces manuals/reference/libanjuta plugins/build-basic-autotools plugins/debug-manager plugins/run-program
- From: sgranjoux svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r3958 - in trunk: . libanjuta/interfaces manuals/reference/libanjuta plugins/build-basic-autotools plugins/debug-manager plugins/run-program
- Date: Mon, 26 May 2008 19:47:24 +0000 (UTC)
Author: sgranjoux
Date: Mon May 26 19:47:23 2008
New Revision: 3958
URL: http://svn.gnome.org/viewvc/anjuta?rev=3958&view=rev
Log:
* plugins/debug-manager/start.c,
plugins/build-basic-autotools/build-basic-autotools.c,
plugins/run-program/plugin.c,
plugins/run-program/execute.c,
plugins/run-program/plugin.h,
libanjuta/interfaces/libanjuta.idl,
libanjuta/interfaces/anjuta-idl-compiler.pl,
manuals/reference/libanjuta/libanjuta-docs.sgml,
manuals/reference/libanjuta/libanjuta-sections.txt:
Change the new IAnjutaBuilder interface to use callbacks
Add the documentation of IAnjutaBuilder
Modified:
trunk/ChangeLog
trunk/libanjuta/interfaces/anjuta-idl-compiler.pl
trunk/libanjuta/interfaces/libanjuta.idl
trunk/manuals/reference/libanjuta/libanjuta-docs.sgml
trunk/manuals/reference/libanjuta/libanjuta-sections.txt
trunk/plugins/build-basic-autotools/build-basic-autotools.c
trunk/plugins/debug-manager/start.c
trunk/plugins/run-program/execute.c
trunk/plugins/run-program/plugin.c
trunk/plugins/run-program/plugin.h
Modified: trunk/libanjuta/interfaces/anjuta-idl-compiler.pl
==============================================================================
--- trunk/libanjuta/interfaces/anjuta-idl-compiler.pl (original)
+++ trunk/libanjuta/interfaces/anjuta-idl-compiler.pl Mon May 26 19:47:23 2008
@@ -1313,7 +1313,7 @@
$answer .= "\t\t/* Signal */";
$answer .="\n\t\tg_signal_new (\"$signal\",
$macro_type,
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+ G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (${class}Iface, $func),
NULL, NULL,
${marshaller});\n\n";
Modified: trunk/libanjuta/interfaces/libanjuta.idl
==============================================================================
--- trunk/libanjuta/interfaces/libanjuta.idl (original)
+++ trunk/libanjuta/interfaces/libanjuta.idl Mon May 26 19:47:23 2008
@@ -556,7 +556,7 @@
interface IAnjutaBuilder
{
#include <libanjuta/anjuta-error.h>
-
+
/* Types */
enum Error
{
@@ -571,58 +571,55 @@
OTHER_ERROR
}
- /**
- * IAnjutaBuilder::command-finished:
- * @obj: Self
- * @err: Error if command fail
- *
- * This signal is emitted when a command with a non null command_id is
- * finished. The command_id is used as detail argument when the signal
- * is emitted so only the caller get the signal.
- */
- void ::command_finished (GError *err);
+ typedef gpointer Handle;
+
+ typedef void (*Callback) (GObject *sender, GError* err, gpointer user_data);
/**
* ianjuta_builder_is_built:
* @obj: Self
* @uri: target uri
- * @command_id: Quark used to identify command, could be 0
+ * @callback: callback called when command is finished
+ * @user_data: data passed to the callback
* @err: Error propagation and reporting.
*
* Check if the corresponding target is up to date or not. This
* command doesn't display anything. If this command cannot be
* implemented, it is possible to return always TRUE.
+ * When the command if finished, the callback function is called
+ * if defined.
*
- * Returns: TRUE if the target is already built.
+ * Returns: non null command handle if succeed
*/
- gboolean is_built (const gchar *uri, GQuark command_id);
+ Handle is_built (const gchar *uri, Callback callback, gpointer user_data);
/**
* ianjuta_builder_build:
* @obj: Self
* @uri: target uri
- * @command_id: Quark used to identify command, could be 0
+ * @callback: callback called when command is finished
+ * @user_data: data passed to the callback
* @err: Error propagation and reporting.
*
- * Build the specified target
+ * Build the specified target.
+ * When the command if finished, the callback function is called
+ * if defined.
*
- * Returns: FALSE if there is an error.
+ * Returns: non null command handle if succeed
*/
- gboolean build (const gchar *uri, GQuark command_id);
+ Handle build (const gchar *uri, Callback callback, gpointer user_data);
/**
* ianjuta_builder_cancel:
* @obj: Self
- * @command_id: Quark used to identify command
+ * @handle: handle of the command to cancel
* @err: Error propagation and reporting.
*
- * Cancel specified command. The command-finished signal is
- * emitted immediatly even if the real command will be
- * cancelled a bit later.
+ * Cancel specified command. The callback function will not
+ * be called.
*
- * Returns: FALSE if there is an error.
*/
- void cancel (GQuark command_id);
+ void cancel (Handle handle);
}
/**
Modified: trunk/manuals/reference/libanjuta/libanjuta-docs.sgml
==============================================================================
--- trunk/manuals/reference/libanjuta/libanjuta-docs.sgml (original)
+++ trunk/manuals/reference/libanjuta/libanjuta-docs.sgml Mon May 26 19:47:23 2008
@@ -85,6 +85,7 @@
<title>Plugin interfaces</title>
<xi:include href="xml/ianjuta-bookmark.xml"/>
<xi:include href="xml/ianjuta-buildable.xml"/>
+ <xi:include href="xml/ianjuta-builder.xml"/>
<xi:include href="xml/ianjuta-debugger.xml"/>
<xi:include href="xml/ianjuta-debugger-breakpoint.xml"/>
<xi:include href="xml/ianjuta-debugger-instruction.xml"/>
Modified: trunk/manuals/reference/libanjuta/libanjuta-sections.txt
==============================================================================
--- trunk/manuals/reference/libanjuta/libanjuta-sections.txt (original)
+++ trunk/manuals/reference/libanjuta/libanjuta-sections.txt Mon May 26 19:47:23 2008
@@ -700,6 +700,28 @@
</SECTION>
<SECTION>
+<FILE>ianjuta-builder</FILE>
+IANJUTA_TYPE_BUILDER_ERROR
+IAnjutaBuilderError
+IANJUTA_BUILDER_ERROR
+IAnjutaBuilderHandle
+IAnjutaBuilderCallback
+IAnjutaBuilder
+IAnjutaBuilderIface
+ianjuta_builder_error_quark
+ianjuta_builder_get_type
+ianjuta_builder_build
+ianjuta_builder_cancel
+ianjuta_builder_is_built
+<SUBSECTION Standard>
+IANJUTA_BUILDER
+IANJUTA_IS_BUILDER
+IANJUTA_TYPE_BUILDER
+ianjuta_builder_error_get_type
+IANJUTA_BUILDER_GET_IFACE
+</SECTION>
+
+<SECTION>
<FILE>ianjuta-debug-manager</FILE>
IANJUTA_DEBUG_MANAGER_ERROR
IAnjutaDebugManager
Modified: trunk/plugins/build-basic-autotools/build-basic-autotools.c
==============================================================================
--- trunk/plugins/build-basic-autotools/build-basic-autotools.c (original)
+++ trunk/plugins/build-basic-autotools/build-basic-autotools.c Mon May 26 19:47:23 2008
@@ -95,8 +95,9 @@
AnjutaPlugin *plugin;
AnjutaLauncher *launcher;
- GQuark id;
gchar *command;
+ IAnjutaBuilderCallback callback;
+ gpointer user_data;
IAnjutaMessageView *message_view;
GHashTable *build_dir_stack;
@@ -268,7 +269,7 @@
static gboolean
build_context_destroy_command (BuildContext *context)
{
- if (context->id)
+ if (context->callback)
{
GError *err;
@@ -276,9 +277,9 @@
err = g_error_new_literal (ianjuta_builder_error_quark (),
IANJUTA_BUILDER_ABORTED,
_("Command aborted"));
- g_signal_emit (context->plugin, g_signal_lookup ("command-finished", IANJUTA_TYPE_BUILDER), context->id, err);
+ context->callback (G_OBJECT (context->plugin), err, context->user_data);
g_error_free (err);
- context->id = 0;
+ context->callback = NULL;
}
if (context->launcher)
@@ -828,7 +829,7 @@
G_CALLBACK (on_build_terminated),
context);
- if (context->id != 0)
+ if (context->callback != NULL)
{
GError *err = NULL;
@@ -867,10 +868,10 @@
err = g_error_new_literal (ianjuta_builder_error_quark (),
IANJUTA_BUILDER_TERMINATED,
_("Command terminated for an unknown reason"));
- }
- /* Emit command-finished signal if a valid quark have been passed */
- g_signal_emit (context->plugin, g_signal_lookup ("command-finished", IANJUTA_TYPE_BUILDER), context->id, err);
- context->id = 0;
+ }
+
+ context->callback (G_OBJECT (context->plugin), err, context->user_data);
+ context->callback = NULL;
}
/* Message view could have been destroyed before */
@@ -1004,8 +1005,8 @@
static BuildContext*
build_get_context (BasicAutotoolsPlugin *plugin, const gchar *dir,
- gboolean with_view,
- const gchar *command, GQuark id)
+ gboolean with_view, const gchar *command,
+ IAnjutaBuilderCallback callback, gpointer user_data)
{
BuildContext *context = NULL;
@@ -1021,7 +1022,8 @@
context->plugin = ANJUTA_PLUGIN(plugin);
}
- context->id = id;
+ context->callback = callback;
+ context->user_data = user_data;
context->command = g_strdup (command);
context->launcher = anjuta_launcher_new ();
g_signal_connect (G_OBJECT (context->launcher), "child-exited",
@@ -1058,23 +1060,24 @@
anjuta_launcher_set_env (launcher, name, env_value);
}
-static gboolean
+static BuildContext*
build_execute_command_full (BasicAutotoolsPlugin* bplugin, const gchar *dir,
- const gchar *command, GQuark id,
- gboolean save_file, gboolean with_view, GHashTable* env,
- GError **err)
+ const gchar *command,
+ gboolean save_file, gboolean with_view, GHashTable* env,
+ IAnjutaBuilderCallback callback, gpointer user_data,
+ GError **err)
{
AnjutaPlugin* plugin = ANJUTA_PLUGIN(bplugin);
AnjutaPreferences* prefs = anjuta_shell_get_preferences (plugin->shell, NULL);
BuildContext *context;
gchar* real_command;
- g_return_val_if_fail (command != NULL, FALSE);
+ g_return_val_if_fail (command != NULL, NULL);
if (save_file)
save_all_files (ANJUTA_PLUGIN (plugin));
- context = build_get_context (bplugin, dir, with_view, command, id);
+ context = build_get_context (bplugin, dir, with_view, command, callback, user_data);
if (anjuta_preferences_get_int (prefs , PREF_USE_SB))
{
@@ -1113,48 +1116,39 @@
}
g_free(real_command);
- return TRUE;
+ return context;
}
static gboolean
build_execute_command (BasicAutotoolsPlugin* bplugin, const gchar *dir,
- const gchar *command, GQuark id,
- gboolean save_file, gboolean with_view, GError **err)
+ const gchar *command, gboolean save_file, GError **err)
{
- return build_execute_command_full (bplugin, dir, command, id,
- save_file, with_view, NULL, NULL);
+ return build_execute_command_full (bplugin, dir, command, save_file, TRUE, NULL, NULL, NULL, NULL) != NULL;
}
static void
-build_cancel_command (BasicAutotoolsPlugin* bplugin, GQuark id,
+build_cancel_command (BasicAutotoolsPlugin* bplugin, BuildContext *context,
GError **err)
{
GList *node;
-
+
+ if (context == NULL) return;
+
for (node = g_list_first (bplugin->contexts_pool); node != NULL; node = g_list_next (node))
{
- BuildContext *context;
- context = node->data;
-
- if ((context->id == id) && (context->launcher != NULL))
- {
- GError *err;
-
- /* emit the cancel signal immediatly, so the quark value can
- * be reused */
- err = g_error_new (ianjuta_builder_error_quark (),
- IANJUTA_BUILDER_CANCELED,
- _("Command canceled by user"));
- g_signal_emit (context->plugin, g_signal_lookup ("command-finished", IANJUTA_TYPE_BUILDER), context->id, err);
- g_error_free (err);
- context->id = 0;
-
- anjuta_launcher_signal (context->launcher, SIGTERM);
- }
+ if (node->data == context)
+ {
+ if (context->launcher != NULL)
+ {
+ anjuta_launcher_signal (context->launcher, SIGTERM);
+ return;
+ }
+ }
}
-
- return;
+
+ /* Invalid handle passed */
+ g_return_if_reached ();
}
static gboolean
@@ -1200,7 +1194,7 @@
*ext_ptr = '\0';
command = g_strconcat (CHOOSE_COMMAND (plugin, COMPILE), " ",
file_basename, new_ext, NULL);
- build_execute_command (plugin, file_dirname, command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, file_dirname, command, TRUE, NULL);
g_free (command);
ret = TRUE;
}
@@ -1209,7 +1203,7 @@
gchar *command;
command = g_strconcat (CHOOSE_COMMAND(plugin, COMPILE), " ",
file_basename, NULL);
- build_execute_command (plugin, file_dirname, command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, file_dirname, command, TRUE, NULL);
g_free (command);
ret = TRUE;
}
@@ -1234,7 +1228,7 @@
build_build_project (GtkAction *action, BasicAutotoolsPlugin *plugin)
{
build_execute_command (plugin, plugin->project_root_dir,
- CHOOSE_COMMAND (plugin, BUILD), 0, TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD), TRUE, NULL);
}
static void
@@ -1245,7 +1239,7 @@
CHOOSE_COMMAND (plugin, INSTALL));
g_free(root);
build_execute_command (plugin, plugin->project_root_dir,
- command, 0, TRUE, TRUE, NULL);
+ command, TRUE, NULL);
g_free(command);
}
@@ -1253,7 +1247,7 @@
build_clean_project (GtkAction *action, BasicAutotoolsPlugin *plugin)
{
build_execute_command (plugin, plugin->project_root_dir,
- CHOOSE_COMMAND (plugin, CLEAN), 0, FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CLEAN), FALSE, NULL);
}
static void
@@ -1285,7 +1279,8 @@
cmd = g_strdup (CHOOSE_COMMAND (plugin, CONFIGURE));
}
build_execute_command_full (plugin, plugin->project_root_dir,
- cmd, 0, TRUE, TRUE, build_options, NULL);
+ cmd, TRUE, TRUE, build_options,
+ NULL, NULL, NULL);
g_free (cmd);
g_hash_table_destroy (build_options);
}
@@ -1328,7 +1323,8 @@
cmd = g_strdup ("autoreconf -i --force");
}
build_execute_command_full (plugin, plugin->project_root_dir,
- cmd, 0, TRUE, TRUE, build_options, NULL);
+ cmd, TRUE, TRUE, build_options,
+ NULL, NULL, NULL);
g_free (cmd);
g_hash_table_destroy (build_options);
}
@@ -1338,8 +1334,8 @@
build_distribution_project (GtkAction *action, BasicAutotoolsPlugin *plugin)
{
build_execute_command (plugin, plugin->project_root_dir,
- CHOOSE_COMMAND (plugin, BUILD_TARBALL), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD_TARBALL),
+ FALSE, NULL);
}
static void
@@ -1347,8 +1343,8 @@
{
gchar *dirname = g_dirname (plugin->current_editor_filename);
build_execute_command (plugin, dirname,
- CHOOSE_COMMAND (plugin, BUILD), 0,
- TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD),
+ TRUE, NULL);
g_free (dirname);
}
@@ -1360,8 +1356,7 @@
gchar* command = g_strdup_printf ("%s %s", root,
CHOOSE_COMMAND (plugin, INSTALL));
g_free(root);
- build_execute_command (plugin, dirname,
- command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, dirname, command, TRUE, NULL);
g_free(command);
g_free (dirname);
}
@@ -1371,8 +1366,8 @@
{
gchar *dirname = g_dirname (plugin->current_editor_filename);
build_execute_command (plugin, dirname,
- CHOOSE_COMMAND (plugin, CLEAN), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CLEAN),
+ FALSE, NULL);
g_free (dirname);
}
@@ -1407,8 +1402,8 @@
else
dir = g_path_get_dirname (plugin->fm_current_filename);
build_execute_command (plugin, dir,
- CHOOSE_COMMAND (plugin, BUILD), 0,
- TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD),
+ TRUE, NULL);
}
static void
@@ -1429,7 +1424,7 @@
command = g_strdup_printf ("%s %s", root,
CHOOSE_COMMAND (plugin, INSTALL));
g_free(root);
- build_execute_command (plugin, dir, command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, dir, command, TRUE, NULL);
}
static void
@@ -1444,8 +1439,8 @@
else
dir = g_path_get_dirname (plugin->fm_current_filename);
build_execute_command (plugin, dir,
- CHOOSE_COMMAND (plugin, CLEAN), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CLEAN),
+ FALSE, NULL);
}
/* Project manager context menu */
@@ -1470,8 +1465,8 @@
else
dir = g_path_get_dirname (plugin->pm_current_filename);
build_execute_command (plugin, dir,
- CHOOSE_COMMAND (plugin, BUILD), 0,
- TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD),
+ TRUE, NULL);
}
static void
@@ -1492,7 +1487,7 @@
dir = g_strdup (plugin->pm_current_filename);
else
dir = g_path_get_dirname (plugin->pm_current_filename);
- build_execute_command (plugin, dir, command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, dir, command, TRUE, NULL);
g_free(command);
}
@@ -1508,8 +1503,8 @@
else
dir = g_path_get_dirname (plugin->pm_current_filename);
build_execute_command (plugin, dir,
- CHOOSE_COMMAND (plugin, CLEAN), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CLEAN),
+ FALSE, NULL);
}
static GtkActionEntry build_actions[] =
@@ -2425,8 +2420,8 @@
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (manager);
build_execute_command (plugin, directory,
- CHOOSE_COMMAND (plugin, BUILD), 0,
- TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, BUILD),
+ TRUE, NULL);
}
static void
@@ -2435,8 +2430,8 @@
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (manager);
build_execute_command (plugin, directory,
- CHOOSE_COMMAND (plugin, CLEAN), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CLEAN),
+ FALSE, NULL);
}
static void
@@ -2448,7 +2443,7 @@
gchar* command = g_strdup_printf ("%s %s", root,
CHOOSE_COMMAND (plugin, INSTALL));
g_free(root);
- build_execute_command (plugin, directory, command, 0, TRUE, TRUE, NULL);
+ build_execute_command (plugin, directory, command, TRUE, NULL);
g_free(command);
}
@@ -2458,8 +2453,8 @@
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (manager);
build_execute_command (plugin, directory,
- CHOOSE_COMMAND (plugin, CONFIGURE), 0,
- TRUE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, CONFIGURE),
+ TRUE, NULL);
}
static void
@@ -2470,15 +2465,15 @@
if (directory_has_file (plugin->project_root_dir, "autogen.sh"))
{
build_execute_command (plugin, directory,
- CHOOSE_COMMAND (plugin, GENERATE), 0,
- FALSE, TRUE, NULL);
+ CHOOSE_COMMAND (plugin, GENERATE),
+ FALSE, NULL);
}
else
{
/* FIXME: get override command for this too */
build_execute_command (plugin, directory,
- "autoreconf -i --force", 0,
- FALSE, TRUE, NULL);
+ "autoreconf -i --force",
+ FALSE, NULL);
}
}
@@ -2533,62 +2528,71 @@
/* IAnjutaBuilder implementation
*---------------------------------------------------------------------------*/
-static gboolean
-ibuilder_is_built (IAnjutaBuilder *builder, const gchar *uri, GQuark command_id, GError **err)
+static IAnjutaBuilderHandle
+ibuilder_is_built (IAnjutaBuilder *builder, const gchar *uri,
+ IAnjutaBuilderCallback callback, gpointer user_data,
+ GError **err)
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (builder);
- gboolean ok;
+ BuildContext *context;
gchar *filename;
gchar *target;
gchar *dirname;
gchar *cmd;
filename = gnome_vfs_get_local_path_from_uri (uri);
- if (filename == NULL) return FALSE;
+ if (filename == NULL) return NULL;
target = g_path_get_basename (filename);
dirname = g_path_get_dirname (filename);
g_free (filename);
cmd = g_strconcat (CHOOSE_COMMAND (plugin, IS_BUILT), " ", target, NULL);
g_free (target);
- ok = build_execute_command (plugin, dirname, cmd, command_id, TRUE, FALSE, err);
+ context = build_execute_command_full (plugin, dirname, cmd,
+ TRUE, FALSE, NULL,
+ callback, user_data, err);
g_free (cmd);
g_free (dirname);
- return ok;
+ return (IAnjutaBuilderHandle)context;
}
-static gboolean
-ibuilder_build (IAnjutaBuilder *builder, const gchar *uri, GQuark command_id, GError **err)
+static IAnjutaBuilderHandle
+ibuilder_build (IAnjutaBuilder *builder, const gchar *uri,
+ IAnjutaBuilderCallback callback, gpointer user_data,
+ GError **err)
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (builder);
- gboolean ok;
+ BuildContext *context;
gchar *filename;
gchar *target;
gchar *dirname;
gchar *cmd;
filename = gnome_vfs_get_local_path_from_uri (uri);
- if (filename == NULL) return FALSE;
+ if (filename == NULL) return NULL;
target = g_path_get_basename (filename);
dirname = g_path_get_dirname (filename);
g_free (filename);
cmd = g_strconcat (CHOOSE_COMMAND (plugin, BUILD), " ", target, NULL);
g_free (target);
- ok = build_execute_command (plugin, dirname, cmd, command_id, TRUE, TRUE, err);
+ context = build_execute_command_full (plugin, dirname, cmd,
+ TRUE, TRUE, NULL,
+ callback, user_data, err);
+
g_free (cmd);
g_free (dirname);
- return ok;
+ return (IAnjutaBuilderHandle)context;
}
static void
-ibuilder_cancel (IAnjutaBuilder *builder, GQuark command_id, GError **err)
+ibuilder_cancel (IAnjutaBuilder *builder, IAnjutaBuilderHandle handle, GError **err)
{
BasicAutotoolsPlugin *plugin = ANJUTA_PLUGIN_BASIC_AUTOTOOLS (builder);
- build_cancel_command (plugin, command_id, err);
+ build_cancel_command (plugin, (BuildContext *)handle, err);
}
static void
Modified: trunk/plugins/debug-manager/start.c
==============================================================================
--- trunk/plugins/debug-manager/start.c (original)
+++ trunk/plugins/debug-manager/start.c Mon May 26 19:47:23 2008
@@ -128,9 +128,8 @@
gboolean stop_at_beginning;
GList *source_dirs;
- GQuark build_id;
gchar *build_target;
- gulong build_handle;
+ IAnjutaBuilderHandle build_handle;
};
/* Widgets found in glade file
@@ -156,8 +155,6 @@
#define RUN_PROGRAM_ACTION_GROUP "ActionGroupRun"
#define RUN_PROGRAM_PARAMETER_ACTION "ActionProgramParameters"
-#define BUILD_TARGET "DMA_BUILD_TARGET"
-
static void attach_process_clear (AttachProcess * ap, gint ClearRequest);
/* Helper functions
@@ -876,12 +873,10 @@
}
static void
-on_build_finished (IAnjutaBuilder *builder, GError *err, gpointer user_data)
+on_build_finished (GObject *builder, GError *err, gpointer user_data)
{
DmaStart *this = (DmaStart *)user_data;
- g_signal_handler_disconnect (builder, this->build_handle);
-
if (err == NULL)
{
/* Up to date, start debugger */
@@ -893,12 +888,10 @@
}
static void
-on_is_built_finished (IAnjutaBuilder *builder, GError *err, gpointer user_data)
+on_is_built_finished (GObject *builder, GError *err, gpointer user_data)
{
DmaStart *this = (DmaStart *)user_data;
- g_signal_handler_disconnect (builder, this->build_handle);
-
if (err == NULL)
{
/* Up to date, start debugger */
@@ -907,10 +900,7 @@
else if (err->code == IANJUTA_BUILDER_FAILED)
{
/* Target is not up to date */
- this->build_handle = g_signal_connect (builder, "command-finished::" BUILD_TARGET, G_CALLBACK (on_build_finished), this);
-
- /* Build target */
- ianjuta_builder_build (builder, this->build_target, this->build_id, NULL);
+ this->build_handle = ianjuta_builder_build (IANJUTA_BUILDER (builder), this->build_target, on_build_finished, this, NULL);
return;
}
@@ -937,18 +927,15 @@
else
{
/* Cancel old operation */
- ianjuta_builder_cancel (builder, this->build_id, NULL);
+ ianjuta_builder_cancel (builder, this->build_handle, NULL);
}
}
this->build_target = g_strdup (target);
- if (this->build_id == 0)
- this->build_id = g_quark_from_static_string(BUILD_TARGET);
-
- this->build_handle = g_signal_connect (builder, "command-finished::" BUILD_TARGET, G_CALLBACK (on_is_built_finished), this);
/* Check if target is up to date */
- return ianjuta_builder_is_built (builder, target, this->build_id, NULL);
+ this->build_handle = ianjuta_builder_is_built (builder, target, on_is_built_finished, this, NULL);
+ return this->build_handle != 0;
}
else
{
@@ -1236,7 +1223,6 @@
self->debugger = dma_debug_manager_get_queue (plugin);
self->source_dirs = NULL;
self->build_target = NULL;
- self->build_id = 0;
g_signal_connect (self->plugin->shell, "save-session",
G_CALLBACK (on_session_save), self);
Modified: trunk/plugins/run-program/execute.c
==============================================================================
--- trunk/plugins/run-program/execute.c (original)
+++ trunk/plugins/run-program/execute.c Mon May 26 19:47:23 2008
@@ -40,8 +40,6 @@
#define PREF_USE_SB "build.use_scratchbox"
#define PREF_SB_PATH "build.scratchbox.path"
-#define RUN_BUILD_TARGET_QUARK_STRING "RUN_PLUGIN_BUILD_TARGET"
-
/*----------------------------------------------------------------------------
* Type definitions
*/
@@ -403,12 +401,10 @@
}
static void
-on_build_finished (IAnjutaBuilder *builder, GError *err, gpointer user_data)
+on_build_finished (GObject *builder, GError *err, gpointer user_data)
{
RunProgramPlugin *plugin = (RunProgramPlugin *)user_data;
- g_signal_handler_disconnect (builder, plugin->build_handle);
-
if (err == NULL)
{
/* Up to date, run program */
@@ -422,12 +418,10 @@
}
static void
-on_is_built_finished (IAnjutaBuilder *builder, GError *err, gpointer user_data)
+on_is_built_finished (GObject *builder, GError *err, gpointer user_data)
{
RunProgramPlugin *plugin = (RunProgramPlugin *)user_data;
- g_signal_handler_disconnect (builder, plugin->build_handle);
-
if (err == NULL)
{
/* Up to date, run program */
@@ -436,10 +430,7 @@
else if (err->code == IANJUTA_BUILDER_FAILED)
{
/* Target is not up to date */
- plugin->build_handle = g_signal_connect (builder, "command-finished::" RUN_BUILD_TARGET_QUARK_STRING, G_CALLBACK (on_build_finished), plugin);
-
- /* Build target */
- ianjuta_builder_build (builder, plugin->build_uri, plugin->build_id, NULL);
+ plugin->build_handle = ianjuta_builder_build (IANJUTA_BUILDER (builder), plugin->build_uri, on_build_finished, plugin, NULL);
}
else
{
@@ -471,18 +462,16 @@
else
{
/* Cancel old operation */
- ianjuta_builder_cancel (builder, plugin->build_id, NULL);
+ ianjuta_builder_cancel (builder, plugin->build_handle, NULL);
}
}
plugin->build_uri = prog_uri;
- if (plugin->build_id == 0)
- plugin->build_id = g_quark_from_static_string(RUN_BUILD_TARGET_QUARK_STRING);
-
- plugin->build_handle = g_signal_connect (builder, "command-finished::" RUN_BUILD_TARGET_QUARK_STRING, G_CALLBACK (on_is_built_finished), plugin);
/* Check if target is up to date */
- return ianjuta_builder_is_built (builder, plugin->build_uri, plugin->build_id, NULL);
+ plugin->build_handle = ianjuta_builder_is_built (builder, plugin->build_uri, on_is_built_finished, plugin, NULL);
+
+ return plugin->build_handle != 0;
}
else
{
Modified: trunk/plugins/run-program/plugin.c
==============================================================================
--- trunk/plugins/run-program/plugin.c (original)
+++ trunk/plugins/run-program/plugin.c Mon May 26 19:47:23 2008
@@ -322,7 +322,6 @@
self->child = NULL;
self->build_uri = NULL;
- self->build_id = 0;
}
/* dispose is used to unref object created with instance_init */
Modified: trunk/plugins/run-program/plugin.h
==============================================================================
--- trunk/plugins/run-program/plugin.h (original)
+++ trunk/plugins/run-program/plugin.h Mon May 26 19:47:23 2008
@@ -64,9 +64,8 @@
guint child_exited_connection;
/* Build data */
- GQuark build_id;
gchar *build_uri;
- gulong build_handle;
+ gpointer build_handle;
};
void run_plugin_update_shell_value (RunProgramPlugin *plugin);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]