static void on_entry_activate(GtkEntry *entry, EDITOR *editor) { const gchar *buf = gtk_entry_get_text(entry); if (buf == NULL) return; /* handle potential subsection anchor */ if ((settings.special_anchor = strchr(buf, '#')) || /* thml */ (settings.special_anchor = strchr(buf, '!'))) /* osisref */ *settings.special_anchor = '\0'; const gchar *gkey = main_get_valid_key(settings.MainWindowModule, (gchar *)buf); // we got a valid key. but was it really a valid key within v11n? // for future use in determining whether to show normal navbar content. editor->navbar.valid_key = main_is_Bible_key(settings.MainWindowModule, gkey); if (settings.special_anchor) *settings.special_anchor = '#'; /* put it back. */ if (gkey == NULL) return; gchar *url = g_strdup_printf("sword:///%s%s", gkey, (settings.special_anchor ? settings.special_anchor : "")); editor->navbar.module_name = g_string_assign(editor->navbar.module_name, settings.MainWindowModule); main_navbar_versekey_set(editor->navbar, gkey); editor_load_note(editor, NULL, gkey); if (url) g_free(url); if (gkey) g_free((gchar *)gkey); }
void gui_verselist_to_bookmarks(GList *verses, gint save_as_single) { gint test; gchar *module_name = NULL; GtkTreeIter parent; GtkTreeIter iter; GS_DIALOG *info; RESULTS *list_item; /*gchar *dlg = g_strdup_printf("<span weight=\"bold\">%s</span>\n%s", _("Save these results as a single bookmark?"), _("(rather than as a series of bookmarks)")); */ if (save_as_single) { GString *name = g_string_new(NULL); GString *verse_string = g_string_new(""); gboolean first_entry = TRUE; g_string_printf(name, _("Search result: %s"), settings.searchText); while (verses) { list_item = (RESULTS *)verses->data; if (main_is_Bible_key(list_item->module, list_item->key)) { if (first_entry) { module_name = g_strdup(list_item->module); first_entry = FALSE; } else { verse_string = g_string_append(verse_string, "; "); } verse_string = g_string_append(verse_string, list_item->key); } verses = g_list_next(verses); } gui_bookmark_dialog(name->str, module_name, verse_string->str); g_string_free(name, TRUE); g_string_free(verse_string, TRUE); g_free(module_name); return; } gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter); info = gui_new_dialog(); #ifdef HAVE_GTK_310 info->stock_icon = "document-open"; #else info->stock_icon = GTK_STOCK_OPEN; #endif info->title = _("Bookmark"); info->label_top = _("Enter Folder Name"); info->text1 = g_strdup(settings.searchText); info->label1 = _("Folder: "); info->ok = TRUE; info->cancel = TRUE; /*** open dialog to get name for root node ***/ test = gui_gs_dialog(info); if (test == GS_OK) { gtk_tree_store_append(GTK_TREE_STORE(model), &parent, &iter); gtk_tree_store_set(GTK_TREE_STORE(model), &parent, COL_OPEN_PIXBUF, bm_pixbufs->pixbuf_opened, COL_CLOSED_PIXBUF, bm_pixbufs->pixbuf_closed, COL_CAPTION, info->text1, COL_KEY, NULL, COL_MODULE, NULL, -1); // set_results_position((char) 1); // TOP GString *str = g_string_new(" "); while (verses) { list_item = (RESULTS *)verses->data; module_name = list_item->module; gchar *tmpbuf = list_item->key; g_string_printf(str, "%s, %s", tmpbuf, module_name); XI_message(("bookmark: %s", str->str)); gtk_tree_store_append(GTK_TREE_STORE(model), &iter, &parent); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, COL_OPEN_PIXBUF, bm_pixbufs->pixbuf_helpdoc, COL_CLOSED_PIXBUF, NULL, COL_CAPTION, str->str, COL_KEY, tmpbuf, COL_MODULE, module_name, -1); verses = g_list_next(verses); } g_string_free(str, TRUE); bookmarks_changed = TRUE; gui_save_bookmarks_treeview(); } g_free(info->text1); g_free(info); }