int main (int argc, char const **argv) { GOErrorInfo *plugin_errs; GOCmdContext *cc; GOptionContext *ocontext; GError *error = NULL; const char *testname; /* No code before here, we need to init threads */ argv = gnm_pre_parse_init (argc, argv); ocontext = g_option_context_new (_("[testname]")); g_option_context_add_main_entries (ocontext, sstest_options, GETTEXT_PACKAGE); g_option_context_add_group (ocontext, gnm_get_option_group ()); g_option_context_parse (ocontext, &argc, (gchar ***)&argv, &error); g_option_context_free (ocontext); if (error) { g_printerr (_("%s\nRun '%s --help' to see a full list of available command line options.\n"), error->message, g_get_prgname ()); g_error_free (error); return 1; } if (sstest_show_version) { g_printerr (_("version '%s'\ndatadir := '%s'\nlibdir := '%s'\n"), GNM_VERSION_FULL, gnm_sys_data_dir (), gnm_sys_lib_dir ()); return 0; } gnm_init (); cc = cmd_context_stderr_new (); gnm_plugins_init (GO_CMD_CONTEXT (cc)); go_plugin_db_activate_plugin_list ( go_plugins_get_available_plugins (), &plugin_errs); if (plugin_errs) { /* FIXME: What do we want to do here? */ go_error_info_free (plugin_errs); } testname = argv[1]; if (!testname) testname = "all"; /* ---------------------------------------- */ MAYBE_DO ("test_insdel_rowcol_names") test_insdel_rowcol_names (); MAYBE_DO ("test_func_help") test_func_help (); MAYBE_DO ("test_go_data_cache_build_cache") test_go_data_cache_build_cache(); MAYBE_DO ("test_go_data_slicer_tuple_compare_to") test_go_data_slicer_tuple_compare_to (); /* ---------------------------------------- */ g_object_unref (cc); gnm_shutdown (); gnm_pre_parse_shutdown (); return 0; }
G_MODULE_EXPORT void go_plugin_init (GOPlugin *p, GOCmdContext *cc) { char *name, *dir; *ret_error = NULL; scm_init_guile (); /* Initialize just in case. */ eval_pos = NULL; init_value_type (); scm_c_define_gsubr ("gnumeric-funcall", 2, 0, 0, scm_gnumeric_funcall); scm_c_define_gsubr ("register-function", 5, 0, 0, scm_register_function); dir = gnm_sys_data_dir ("guile"); name = g_strconcat (dir, "gnumeric_startup.scm", NULL); scm_apply (scm_c_eval_string ("(lambda (filename)" " (if (access? filename R_OK)" " (load filename)" " (display (string-append \"could not read Guile plug-in init file\" filename \"\n\"))))"), scm_cons (scm_makfrom0str (name), SCM_EOL), SCM_EOL); g_free (name); g_free (dir); /* Don't try to deactivate the plugin */ gnm_plugin_use_ref (PLUGIN); }
static gboolean cb_gnm_option_group_post_parse (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error) { if (param_show_version) { g_print (_("gnumeric version '%s'\ndatadir := '%s'\nlibdir := '%s'\n"), GNM_VERSION_FULL, gnm_sys_data_dir (), gnm_sys_lib_dir ()); exit (0); } return TRUE; }
GList * category_group_list_get (void) { GList *category_groups = NULL; GSList *dir_list = NULL, *sl; GList *categories, *l; FormatTemplateCategoryGroup *current_group; add_dir (&dir_list, gnm_conf_get_autoformat_sys_dir (), gnm_sys_data_dir ()); add_dir (&dir_list, gnm_conf_get_autoformat_usr_dir (), gnm_usr_dir (FALSE)); add_dir (&dir_list, gnm_conf_get_autoformat_usr_dir (), gnm_usr_dir (TRUE)); for (sl = gnm_conf_get_autoformat_extra_dirs (); sl; sl = sl->next) { const char *dir = sl->data; add_dir (&dir_list, dir, g_get_home_dir ()); } dir_list = g_slist_reverse (dir_list); categories = category_list_get_from_dir_list (dir_list); go_slist_free_custom (dir_list, g_free); categories = g_list_sort (categories, category_compare_name_and_dir); current_group = NULL; for (l = categories; l != NULL; l = l->next) { FormatTemplateCategory *category = l->data; if (current_group == NULL || strcmp (current_group->name, category->name) != 0) { if (current_group != NULL) { category_groups = g_list_prepend (category_groups, current_group); } current_group = g_new (FormatTemplateCategoryGroup, 1); current_group->categories = g_list_append (NULL, category); current_group->name = g_strdup (category->name); current_group->description = g_strdup (category->description); } else { current_group->categories = g_list_prepend (current_group->categories, category); } } if (current_group != NULL) category_groups = g_list_prepend (category_groups, current_group); g_list_free (categories); return category_groups; }
int main (int argc, char const **argv) { GOErrorInfo *plugin_errs; int res = 0; GOCmdContext *cc; GOptionContext *ocontext; GError *error = NULL; /* No code before here, we need to init threads */ argv = gnm_pre_parse_init (argc, argv); ocontext = g_option_context_new (_("INFILE...")); g_option_context_add_main_entries (ocontext, ssindex_options, GETTEXT_PACKAGE); g_option_context_add_group (ocontext, gnm_get_option_group ()); g_option_context_parse (ocontext, &argc, (gchar ***)&argv, &error); g_option_context_free (ocontext); if (error) { g_printerr (_("%s\nRun '%s --help' to see a full list of available command line options.\n"), error->message, argv[0]); g_error_free (error); return 1; } if (ssindex_show_version) { g_printerr (_("ssindex version '%s'\ndatadir := '%s'\nlibdir := '%s'\n"), GNM_VERSION_FULL, gnm_sys_data_dir (), gnm_sys_lib_dir ()); return 0; } else if (!ssindex_run_indexer && !ssindex_list_mime_types) { g_printerr (_("Usage: %s [OPTION...] %s\n"), g_get_prgname (), _("INFILE...")); return 1; } gnm_init (); cc = gnm_cmd_context_stderr_new (); gnm_plugins_init (GO_CMD_CONTEXT (cc)); go_plugin_db_activate_plugin_list ( go_plugins_get_available_plugins (), &plugin_errs); if (plugin_errs) { /* FIXME: What do we want to do here? */ go_error_info_free (plugin_errs); } go_component_set_default_command_context (cc); if (ssindex_run_indexer) { GOIOContext *ioc = go_io_context_new (cc); int i; go_io_context_set_num_files (ioc, argc - 1); for (i = 1; i < argc; i++) { char const *file = argv[i]; go_io_context_processing_file (ioc, file); res |= ssindex (file, ioc); } g_object_unref (ioc); } else if (ssindex_list_mime_types) { GList *o; for (o = go_get_file_openers (); o != NULL ; o = o->next) { GSList const *mime = go_file_opener_get_mimes (o->data); for (; mime != NULL ; mime = mime->next) g_print ("%s\n", (char const *)mime->data); } } go_component_set_default_command_context (NULL); g_object_unref (cc); gnm_shutdown (); gnm_pre_parse_shutdown (); return res; }
void dialog_search (WBCGtk *wbcg) { GtkBuilder *gui; GtkDialog *dialog; DialogState *dd; GtkTable *table; char *f; g_return_if_fail (wbcg != NULL); #ifdef USE_GURU /* Only one guru per workbook. */ if (wbc_gtk_get_guru (wbcg)) return; #endif f = g_build_filename (gnm_sys_data_dir (), "ui", "search.ui", NULL); gui = go_gtk_builder_new (f, NULL, GO_CMD_CONTEXT (wbcg)); g_free (f); if (gui == NULL) return; dialog = GTK_DIALOG (gtk_builder_get_object (gui, "search_dialog")); dd = g_new (DialogState, 1); dd->wbcg = wbcg; dd->gui = gui; dd->dialog = dialog; dd->matches = g_ptr_array_new (); dd->prev_button = go_gtk_builder_get_widget (gui, "prev_button"); dd->next_button = go_gtk_builder_get_widget (gui, "next_button"); dd->notebook = GTK_NOTEBOOK (gtk_builder_get_object (gui, "notebook")); dd->notebook_matches_page = gtk_notebook_page_num (dd->notebook, go_gtk_builder_get_widget (gui, "matches_tab")); dd->rangetext = gnm_expr_entry_new (wbcg, TRUE); gnm_expr_entry_set_flags (dd->rangetext, 0, GNM_EE_MASK); table = GTK_TABLE (gtk_builder_get_object (gui, "page1-table")); gtk_table_attach (table, GTK_WIDGET (dd->rangetext), 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, 0, 0, 0); { char *selection_text = selection_to_string ( wb_control_cur_sheet_view (WORKBOOK_CONTROL (wbcg)), TRUE); gnm_expr_entry_load_from_text (dd->rangetext, selection_text); g_free (selection_text); } dd->gentry = GTK_ENTRY (gtk_entry_new ()); gtk_table_attach (table, GTK_WIDGET (dd->gentry), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_widget_grab_focus (GTK_WIDGET (dd->gentry)); gnumeric_editable_enters (GTK_WINDOW (dialog), GTK_WIDGET (dd->gentry)); dd->matches_table = make_matches_table (dd); { GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (dd->matches_table)); gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (gui, "matches_vbox")), scrolled_window, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); } /* Set sensitivity of buttons. */ cursor_change (dd->matches_table, dd); g_signal_connect (G_OBJECT (dd->matches_table), "cursor_changed", G_CALLBACK (cursor_change), dd); g_signal_connect (G_OBJECT (dd->matches_table), "select_cursor_row", G_CALLBACK (cb_next), dd); go_gtk_builder_signal_connect (gui, "search_button", "clicked", G_CALLBACK (search_clicked), dd); g_signal_connect (G_OBJECT (dd->prev_button), "clicked", G_CALLBACK (prev_clicked), dd); g_signal_connect (G_OBJECT (dd->next_button), "clicked", G_CALLBACK (next_clicked), dd); go_gtk_builder_signal_connect_swapped (gui, "close_button", "clicked", G_CALLBACK (gtk_widget_destroy), dd->dialog); g_signal_connect (G_OBJECT (gnm_expr_entry_get_entry (dd->rangetext)), "focus-in-event", G_CALLBACK (range_focused), dd); go_gtk_builder_signal_connect (gui, "scope_range", "toggled", G_CALLBACK (cb_focus_on_entry), dd->rangetext); #ifdef USE_GURU wbc_gtk_attach_guru_with_unfocused_rs (wbcg, GTK_WIDGET (dialog), dd->rangetext); #endif g_object_set_data_full (G_OBJECT (dialog), "state", dd, (GDestroyNotify) free_state); gnm_dialog_setup_destroy_handlers (dialog, wbcg, GNM_DIALOG_DESTROY_SHEET_REMOVED); gnumeric_init_help_button ( go_gtk_builder_get_widget (gui, "help_button"), GNUMERIC_HELP_LINK_SEARCH); gnumeric_restore_window_geometry (GTK_WINDOW (dialog), SEARCH_KEY); go_gtk_nonmodal_dialog (wbcg_toplevel (wbcg), GTK_WINDOW (dialog)); gtk_widget_show_all (GTK_WIDGET (dialog)); }