| 581 |
581 |
| 582 /****************************************************************************** |
582 /****************************************************************************** |
| 583 * Plugin implementation |
583 * Plugin implementation |
| 584 *****************************************************************************/ |
584 *****************************************************************************/ |
| 585 static void |
585 static void |
| 586 create_console(PurplePluginAction *action) |
586 create_console(G_GNUC_UNUSED GSimpleAction *action, |
| |
587 G_GNUC_UNUSED GVariant *parameter, G_GNUC_UNUSED gpointer data) |
| 587 { |
588 { |
| 588 if (console == NULL) { |
589 if (console == NULL) { |
| 589 console = g_object_new(PIDGIN_TYPE_XMPP_CONSOLE, NULL); |
590 console = g_object_new(PIDGIN_TYPE_XMPP_CONSOLE, NULL); |
| 590 g_object_add_weak_pointer(G_OBJECT(console), (gpointer)&console); |
591 g_object_add_weak_pointer(G_OBJECT(console), (gpointer)&console); |
| 591 } |
592 } |
| 592 |
593 |
| 593 gtk_window_present(GTK_WINDOW(console)); |
594 gtk_window_present(GTK_WINDOW(console)); |
| 594 } |
595 } |
| 595 |
596 |
| 596 static GList * |
|
| 597 actions(PurplePlugin *plugin) |
|
| 598 { |
|
| 599 GList *l = NULL; |
|
| 600 PurplePluginAction *act = NULL; |
|
| 601 |
|
| 602 act = purple_plugin_action_new(_("XMPP Console"), create_console); |
|
| 603 l = g_list_append(l, act); |
|
| 604 |
|
| 605 return l; |
|
| 606 } |
|
| 607 |
|
| 608 static GPluginPluginInfo * |
597 static GPluginPluginInfo * |
| 609 xmpp_console_query(GError **error) |
598 xmpp_console_query(GError **error) |
| 610 { |
599 { |
| |
600 GActionEntry entries[] = { |
| |
601 { |
| |
602 .name = "console", |
| |
603 .activate = create_console, |
| |
604 } |
| |
605 }; |
| |
606 GMenu *menu = NULL; |
| |
607 GSimpleActionGroup *group = NULL; |
| 611 const gchar * const authors[] = { |
608 const gchar * const authors[] = { |
| 612 "Sean Egan <seanegan@gmail.com>", |
609 "Sean Egan <seanegan@gmail.com>", |
| 613 NULL |
610 NULL |
| 614 }; |
611 }; |
| |
612 |
| |
613 group = g_simple_action_group_new(); |
| |
614 g_action_map_add_action_entries(G_ACTION_MAP(group), entries, |
| |
615 G_N_ELEMENTS(entries), NULL); |
| |
616 |
| |
617 menu = g_menu_new(); |
| |
618 g_menu_append(menu, _("XMPP Console"), "console"); |
| 615 |
619 |
| 616 return pidgin_plugin_info_new( |
620 return pidgin_plugin_info_new( |
| 617 "id", PLUGIN_ID, |
621 "id", PLUGIN_ID, |
| 618 "name", N_("XMPP Console"), |
622 "name", N_("XMPP Console"), |
| 619 "version", DISPLAY_VERSION, |
623 "version", DISPLAY_VERSION, |
| 622 "description", N_("This plugin is useful for debugging XMPP servers " |
626 "description", N_("This plugin is useful for debugging XMPP servers " |
| 623 "or clients."), |
627 "or clients."), |
| 624 "authors", authors, |
628 "authors", authors, |
| 625 "website", PURPLE_WEBSITE, |
629 "website", PURPLE_WEBSITE, |
| 626 "abi-version", PURPLE_ABI_VERSION, |
630 "abi-version", PURPLE_ABI_VERSION, |
| 627 "actions-cb", actions, |
631 "action-group", group, |
| |
632 "action-menu", menu, |
| 628 NULL |
633 NULL |
| 629 ); |
634 ); |
| 630 } |
635 } |
| 631 |
636 |
| 632 static gboolean |
637 static gboolean |