Added 'get-widget' method

master
Yevgen Muntyan 2006-05-27 03:28:58 -05:00
parent e3536bfd7e
commit 30dca15c1a
3 changed files with 53 additions and 11 deletions

View File

@ -28,6 +28,7 @@
#include "mooutils/mooentry.h"
#include "mooutils/moodialogs.h"
#include "mooutils/mooactionfactory.h"
#include "mooutils/moomarshals.h"
#include <string.h>
#include <gmodule.h>
#include <gtk/gtk.h>
@ -37,8 +38,7 @@
#define MOO_VERSION NULL
#endif
#define PLUGIN_ID "FileSelector"
#define DIR_PREFS MOO_PLUGIN_PREFS_ROOT "/" PLUGIN_ID "/last_dir"
#define DIR_PREFS MOO_PLUGIN_PREFS_ROOT "/" MOO_FILE_SELECTOR_PLUGIN_ID "/last_dir"
typedef struct {
@ -324,8 +324,8 @@ moo_file_selector_constructor (GType type,
label = moo_pane_label_new (MOO_STOCK_FILE_SELECTOR,
NULL, NULL/*button*/, "File Selector",
"File Selector");
moo_edit_window_add_pane (filesel->window, PLUGIN_ID, GTK_WIDGET (filesel),
label, MOO_PANE_POS_RIGHT);
moo_edit_window_add_pane (filesel->window, MOO_FILE_SELECTOR_PLUGIN_ID,
GTK_WIDGET (filesel), label, MOO_PANE_POS_RIGHT);
moo_pane_label_free (label);
filesel->button = moo_big_paned_get_button (filesel->window->paned,
@ -1041,7 +1041,7 @@ static void
show_file_selector (MooEditWindow *window)
{
GtkWidget *pane;
pane = moo_edit_window_get_pane (window, PLUGIN_ID);
pane = moo_edit_window_get_pane (window, MOO_FILE_SELECTOR_PLUGIN_ID);
moo_big_paned_present_pane (window->paned, pane);
}
@ -1129,10 +1129,10 @@ static void
file_selector_plugin_detach (Plugin *plugin,
MooEditWindow *window)
{
GtkWidget *filesel = moo_edit_window_get_pane (window, PLUGIN_ID);
GtkWidget *filesel = moo_edit_window_get_pane (window, MOO_FILE_SELECTOR_PLUGIN_ID);
g_return_if_fail (filesel != NULL);
plugin->instances = g_slist_remove (plugin->instances, filesel);
moo_edit_window_remove_pane (window, PLUGIN_ID);
moo_edit_window_remove_pane (window, MOO_FILE_SELECTOR_PLUGIN_ID);
}
@ -1145,8 +1145,8 @@ _moo_file_selector_update_tools (MooPlugin *plugin)
}
MOO_PLUGIN_DEFINE_INFO (file_selector, PLUGIN_ID,
"File Selector", "Selects files",
MOO_PLUGIN_DEFINE_INFO (file_selector, MOO_FILE_SELECTOR_PLUGIN_ID,
"File Selector", "File selector pane for editor window",
"Yevgen Muntyan <muntyan@tamu.edu>",
MOO_VERSION, NULL);
MOO_PLUGIN_DEFINE_FULL (FileSelector, file_selector,
@ -1157,8 +1157,28 @@ MOO_PLUGIN_DEFINE_FULL (FileSelector, file_selector,
0, 0);
static gpointer
get_widget_meth (G_GNUC_UNUSED gpointer plugin,
MooEditWindow *window)
{
gpointer widget = moo_edit_window_get_pane (window, MOO_FILE_SELECTOR_PLUGIN_ID);
return widget ? g_object_ref (widget) : NULL;
}
gboolean
_moo_file_selector_plugin_init (void)
{
return moo_plugin_register (file_selector_plugin_get_type ());
GType ptype = file_selector_plugin_get_type ();
if (!moo_plugin_register (ptype))
return FALSE;
moo_plugin_method_new ("get-widget", ptype,
G_CALLBACK (get_widget_meth),
_moo_marshal_OBJECT__OBJECT,
_moo_file_selector_get_type (),
1, MOO_TYPE_EDIT_WINDOW);
return TRUE;
}

View File

@ -20,6 +20,8 @@
G_BEGIN_DECLS
#define MOO_FILE_SELECTOR_PLUGIN_ID "FileSelector"
#define MOO_TYPE_FILE_SELECTOR (_moo_file_selector_get_type ())
#define MOO_FILE_SELECTOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MOO_TYPE_FILE_SELECTOR, MooFileSelector))
#define MOO_FILE_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOO_TYPE_FILE_SELECTOR, MooFileSelectorClass))
@ -55,6 +57,26 @@ GtkWidget *_moo_file_selector_prefs_page (MooPlugin *plugin);
void _moo_file_selector_update_tools (MooPlugin *plugin);
#define moo_file_selector_plugin_get_widget(window, filesel) \
G_STMT_START { \
gpointer result__ = NULL; \
gpointer plugin__ = moo_plugin_lookup (MOO_FILE_SELECTOR_PLUGIN_ID); \
\
if (plugin__) \
{ \
moo_plugin_call_method (plugin__, "get-widget", window, &result__); \
filesel = result__; \
if (result__) \
g_object_unref (result__); \
} \
else \
{ \
g_critical ("plugin %s is not registered", MOO_FILE_SELECTOR_PLUGIN_ID);\
filesel = NULL; \
} \
} G_STMT_END
G_END_DECLS
#endif /* __MOO_FILE_SELECTOR_H__ */

View File

@ -35,7 +35,7 @@
#include <errno.h>
#include <signal.h>
#define FIND_PLUGIN_ID "find"
#define FIND_PLUGIN_ID "Find"
enum {
CMD_GREP = 1,