gboolean gui_verselist_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter selected; gchar *key = NULL; gchar *text = NULL; selection = gtk_tree_view_get_selection((GtkTreeView *) sidebar.results_list); model = gtk_tree_view_get_model(GTK_TREE_VIEW(sidebar.results_list)); if (!gtk_tree_selection_get_selected(selection, NULL, &selected)) return FALSE; gtk_tree_model_get(GTK_TREE_MODEL(model), &selected, 0, &key, -1); if (!key) return FALSE; if (event) { switch (event->button) { case 2: gui_open_passage_in_new_tab(key); /* fall through... */ case 3: /* button 3 is no-op */ return FALSE; default: /* button 1 handled below */ break; } } // UTF-8 workaround (domcox) // main_get_search_results_text (renderText) doesn't render // non-ascii chars saved in numeric character reference format // in personal notes. // Notes are now saved in utf8 encoding (Xiphos > 2.2.2.1) if (main_get_mod_type(settings.sb_search_mod) == PERCOM_TYPE) text = main_get_raw_text(settings.sb_search_mod, key); else text = main_get_search_results_text(settings.sb_search_mod, key); if (text) { settings.displaySearchResults = TRUE; main_entry_display(settings.show_previewer_in_sidebar ? sidebar.html_viewer_widget : widgets.html_previewer_text, //sidebar.html_widget, settings.sb_search_mod, text, key, TRUE); settings.displaySearchResults = FALSE; g_free(text); gtk_widget_grab_focus(sidebar.results_list); } g_free(key); return FALSE; }
void editor_load_note(EDITOR *e, const gchar *module_name, const gchar *key) { gchar *title = NULL, *text = NULL; if (e->is_changed) _save_note(e); if (module_name) { if (e->module) g_free(e->module); e->module = g_strdup(module_name); } if (key) { if (e->key) g_free(e->key); e->key = g_strdup(key); } text = main_get_raw_text((gchar *)e->module, (gchar *)e->key); if ((text == NULL) || strlen(text) == 0) { if (text) g_free(text); /* new empty document from template */ gchar *fname = g_build_filename(settings.gSwordDir, "studypad.spt", NULL); XI_message(("editor load NOTE [%s]", fname)); text = inhale_text_from_file(fname); g_free(fname); } if (text && strlen(text)) { webkit_web_view_load_string((WebKitWebView *) e->html_widget, text, "text/html", "utf_8", "file://"); } e->is_changed = FALSE; if (e->type == NOTE_EDITOR) { e->navbar.valid_key = TRUE; main_navbar_versekey_set(e->navbar, e->key); } if (text) g_free(text); title = g_strdup_printf("%s - %s", e->module, e->key); change_window_title(e->window, title); g_free(title); }
void editor_load_note(EDITOR *e, const gchar *module_name, const gchar *key) { gchar *title; gchar *text; if (editor_is_dirty(e)) _save_note(e); if (module_name) { if (e->module) g_free(e->module); e->module = g_strdup(module_name); } if (key) { if (e->key) g_free(e->key); e->key = g_strdup(key); } title = g_strdup_printf("%s - %s", e->module, e->key); text = main_get_raw_text((gchar *)e->module, (gchar *)e->key); if (strlen(text)) { gtkhtml_editor_set_text_html(GTKHTML_EDITOR(e->window), text, strlen(text)); gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window)); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE); } else { gtkhtml_editor_set_text_html(GTKHTML_EDITOR(e->window), "", strlen("")); gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window)); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE); } change_window_title(e->window, title); if (e->type == NOTE_EDITOR) main_navbar_versekey_set(e->navbar, e->key); if (text) g_free(text); if (title) g_free(title); }