static gboolean gdict_applet_factory (MatePanelApplet *applet, const gchar *iid, gpointer data) { gboolean retval = FALSE; gchar *ui_path; GdictApplet *dictionary_applet = GDICT_APPLET (applet); GdictAppletPrivate *priv = dictionary_applet->priv; if (((!strcmp (iid, "DictionaryApplet"))) && gdict_create_data_dir ()) { /* Set up the menu */ priv->context_menu_action_group = gtk_action_group_new ("Dictionary Applet Actions"); gtk_action_group_set_translation_domain(priv->context_menu_action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions(priv->context_menu_action_group, gdict_applet_menu_actions, G_N_ELEMENTS (gdict_applet_menu_actions), applet); ui_path = g_build_filename(PKGDATADIR, "dictionary-applet-menu.xml", NULL); mate_panel_applet_setup_menu_from_file (applet, ui_path, priv->context_menu_action_group); g_free (ui_path); gtk_widget_show (GTK_WIDGET (applet)); /* set the menu items insensitive */ gdict_applet_set_menu_items_sensitive (dictionary_applet, FALSE); retval = TRUE; } return retval; }
void gdict_init (int *argc, char ***argv) { GError *err = NULL; GOptionContext *context; gchar *loader_path; gchar **lookup_words = NULL; gchar **match_words = NULL; gchar *database = NULL; gchar *strategy = NULL; gchar *source_name = NULL; gboolean no_window = FALSE; gboolean list_sources = FALSE; const GOptionEntry gdict_app_goptions[] = { { "look-up", 0, 0, G_OPTION_ARG_STRING_ARRAY, &lookup_words, N_("Words to look up"), N_("word") }, { "match", 0, 0, G_OPTION_ARG_STRING_ARRAY, &match_words, N_("Words to match"), N_("word") }, { "source", 's', 0, G_OPTION_ARG_STRING, &source_name, N_("Dictionary source to use"), N_("source") }, { "list-sources", 'l', 0, G_OPTION_ARG_NONE, &list_sources, N_("Show available dictionary sources"), NULL }, { "no-window", 'n', 0, G_OPTION_ARG_NONE, &no_window, N_("Print result to the console"), NULL }, { "database", 'D', 0, G_OPTION_ARG_STRING, &database, N_("Database to use"), N_("db") }, { "strategy", 'S', 0, G_OPTION_ARG_STRING, &strategy, N_("Strategy to use"), N_("strat") }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &lookup_words, N_("Words to look up"), N_("word") }, { NULL }, }; g_assert (singleton == NULL); singleton = GDICT_APP (g_object_new (GDICT_TYPE_APP, NULL)); g_assert (GDICT_IS_APP (singleton)); /* create the new option context */ context = g_option_context_new (_(" - Look up words in dictionaries")); g_option_context_set_translation_domain (context, GETTEXT_PACKAGE); g_option_context_add_main_entries (context, gdict_app_goptions, GETTEXT_PACKAGE); g_option_context_add_group (context, gdict_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, argc, argv, &err); if (err) { g_critical ("Failed to parse argument: %s", err->message); g_error_free (err); g_option_context_free (context); gdict_cleanup (); exit (1); } g_set_application_name (_("Dictionary")); gtk_window_set_default_icon_name ("accessories-dictionary"); if (!gdict_create_data_dir ()) { gdict_cleanup (); exit (1); } singleton->settings = g_settings_new ("org.mate.dictionary"); /* add user's path for fetching dictionary sources */ singleton->loader = gdict_source_loader_new (); loader_path = gdict_get_data_dir (); gdict_source_loader_add_search_path (singleton->loader, loader_path); g_free (loader_path); if (lookup_words) { gsize i; gsize length = g_strv_length (lookup_words); for (i = 0; i < length; i++) singleton->lookup_words = g_slist_prepend (singleton->lookup_words, g_strdup (lookup_words[i])); } if (match_words) { gsize i; gsize length = g_strv_length (match_words); for (i = 0; i < length; i++) singleton->match_words = g_slist_prepend (singleton->match_words, g_strdup (match_words[i])); } if (database) singleton->database = g_strdup (database); if (source_name) singleton->source_name = g_strdup (source_name); if (no_window) singleton->no_window = TRUE; if (list_sources) singleton->list_sources = TRUE; }