static void _load_file(EDITOR *e, const gchar *filename) { char *text = NULL; GtkRecentManager *rm = NULL; rm = gtk_recent_manager_get_default(); gtk_recent_manager_add_item(rm, filename); if (e->filename) g_free(e->filename); e->filename = g_strdup(filename); XI_message(("_load_file filename: %s", filename)); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); text = inhale_text_from_file(!strncmp(filename, "file:", 5) ? filename + 5 : filename); XI_message(("web view load string [%s]", text)); webkit_web_view_load_string(WEBKIT_WEB_VIEW(e->html_widget), text, "text/html", "utf_8", "file://"); g_free(text); e->is_changed = FALSE; }
G_MODULE_EXPORT void action_copy_activate_cb(GtkWidget *widget, EDITOR *e) { if (editor_copy(e)) XI_message(("%s", "copy sucess")); else XI_message(("%s", "copy failed")); }
void gui_display_mod_and_key(const gchar *mod_name, const gchar *key) { gchar *text = NULL; XI_message(("mod_name: %s key: %s", mod_name, key)); text = main_get_rendered_text(mod_name, key); XI_message(("%s", text)); if (text) { main_entry_display(html_widget, (gchar *)mod_name, text, (gchar *)key, TRUE); g_free(text); } }
static gboolean select_book_button_press_callback(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkWidget *menu = NULL; GTimeVal start_time; GTimeVal end_time; #ifdef WIN32 glong time_diff; guint32 time_add; #endif g_get_current_time(&start_time); XI_message(("Start time is: %ld sec %ld mil", start_time.tv_sec, start_time.tv_usec)); menu = main_versekey_drop_down_book_menu(navbar_parallel, NB_PARALLEL, NULL, NULL); g_get_current_time(&end_time); XI_message(("End time is: %ld sec %ld mil", end_time.tv_sec, end_time.tv_usec)); #ifdef WIN32 time_diff = ((end_time.tv_sec - start_time.tv_sec) * 1000000) + (end_time.tv_usec - start_time.tv_usec); time_add = 0; if (time_diff > 10000) time_add = (guint32)(time_diff / 1000); #endif if (!menu) return 0; g_signal_connect(menu, "deactivate", G_CALLBACK(menu_deactivate_callback), widget); if ((event->type == GDK_BUTTON_PRESS) && event->button == 1) { gtk_widget_grab_focus(widget); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, menu_position_under, widget, event->button, #ifdef WIN32 event->time + time_add); #else event->time); #endif return TRUE; }
static void on_edit_prayerlist_activate(GtkMenuItem *menuitem, gpointer user_data) { XI_message(("settings.book_key: %s", (char *)(is_dialog ? dialog->key : settings.book_key))); editor_create_new((gchar *)user_data, (gchar *)(is_dialog ? dialog->key : settings.book_key), BOOK_EDITOR); }
static gboolean lookup_entry_press_callback(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { if (!settings.havebook) return FALSE; /* this does not work on my system - hope I'm not messing things up for others - 104 is the enter key on the number pad switch (event->hardware_keycode) { case 98: gtk_button_clicked(GTK_BUTTON(navbar_book.button_up)); return TRUE; break; case 104: gtk_button_clicked(GTK_BUTTON(navbar_book.button_down)); return TRUE; break; case 100: gtk_button_clicked(GTK_BUTTON(navbar_book.button_left)); return TRUE; break; case 102: gtk_button_clicked(GTK_BUTTON(navbar_book.button_right)); return TRUE; break; } */ XI_message(("lookup_entry_press_callback\nkeycode: %d", event->hardware_keycode)); return FALSE; }
static void _load_file(EDITOR *e, const gchar *filename) { //GtkWidget *choser; if (e->filename) g_free(e->filename); e->filename = g_strdup(filename); XI_message(("_load_file filename: %s", filename)); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); char *contents; char *etag_out; gsize length; GFile *file; file = g_file_new_for_path(filename); gtkhtml_editor_set_filename(GTKHTML_EDITOR(e->window), e->filename); if (g_file_load_contents(file, NULL, &contents, &length, &etag_out, NULL)) gtkhtml_editor_set_text_html(GTKHTML_EDITOR(e->window), contents, length); gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window)); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE); return; }
gint _check_for_distribution_license(gchar *mod_name) { gchar *distributionlicense; gchar *conf_file; conf_file = g_strdup_printf("%s/" DOTSWORD "/mods.d/%s.conf", settings.homedir, g_utf8_strdown(mod_name, -1)); if (g_file_test(conf_file, G_FILE_TEST_EXISTS)) distributionlicense = get_conf_file_item(conf_file, mod_name, "DistributionLicense"); else distributionlicense = main_get_mod_config_entry(mod_name, "DistributionLicense"); g_free(conf_file); XI_message(("DistributionLicense: %s", distributionlicense)); if (!distributionlicense || (distributionlicense && g_strstr_len(distributionlicense, strlen(distributionlicense), "Copyright"))) { if (main_get_one_option(mod_name, OP_NAME) == 0) { gui_generic_warning(_("Please check copyright before exporting!")); main_save_module_options(mod_name, OP_NAME, 1); } return 1; } return 0; }
void set_button_state(BUTTONS_STATE state, EDITOR *e) { #ifdef HAVE_GTK_34 GdkRGBA rgba; #else GdkColor color; #endif gtk_toggle_tool_button_set_active(e->toolitems.bold, state.bold); gtk_toggle_tool_button_set_active(e->toolitems.italic, state.italic); gtk_toggle_tool_button_set_active(e->toolitems.underline, state.underline); gtk_toggle_tool_button_set_active(e->toolitems.strike, state.strike); gtk_combo_box_set_active((GtkComboBox *)e->toolitems.cb, state.style); if (state.color) { XI_message(("state.color: %s", state.color)); #ifdef HAVE_GTK_34 if (gdk_rgba_parse(&rgba, state.color)) gtk_color_chooser_set_rgba((GtkColorChooser *) e->toolitems.color, &rgba); #else if (gdk_color_parse(state.color, &color)) gtk_color_button_set_color((GtkColorButton *) e->toolitems.color, &color); #endif } }
static gboolean on_button_verse_menu_verse_scroll_event(GtkWidget *widget, GdkEvent *event, EDITOR *editor) { XI_message(("%s", "on_button_verse_menu_verse_scroll_event")); main_navbar_versekey_spin_verse(editor->navbar, event->scroll.direction); return FALSE; }
static gchar *get_font_size_from_name(GString *fontname) { gchar buf[80]; gint len, i = 0, j = 0; len = fontname->len; XI_message(("\nlength: %d\n", len)); for (i = 0; (i < 79 && i < len); i++) { if (isdigit(fontname->str[i])) { XI_message(("\n\nfontname->str[i]: %c", fontname->str[i])); buf[j] = fontname->str[i]; buf[j + 1] = '\0'; j++; } } return g_strdup(buf); }
/****************************************************************************** * Name * gui_save_treeview_path_string * * Synopsis * #include "gui/sidebar.h" * * void gui_save_treeview_path_string (const gchar * path_str, const gchar * book_name) * * Description * saves a books's treeview path in .xiphos/book_path.conf * * Return value * void */ void gui_save_treeview_path_string(const gchar *path_str, const gchar *book_name) { gchar *file = g_strdup_printf("%s/book_path.conf", settings.gSwordDir); save_conf_file_item(file, book_name, "PATH", path_str); XI_message(("book %s, path %s, file %s\n", book_name, path_str, file)); g_free(file); }
static GtkWidget *_create_bookmark_dialog(gchar *label, gchar *module, gchar *key) { #ifdef USE_GTKBUILDER GtkBuilder *gxml; #else GladeXML *gxml; #endif gchar *glade_file = gui_general_user_file("bookmarks" UI_SUFFIX, TRUE); g_return_val_if_fail(glade_file != NULL, NULL); XI_message(("%s", glade_file)); /* build the widget */ #ifdef USE_GTKBUILDER gxml = gtk_builder_new(); gtk_builder_add_from_file(gxml, glade_file, NULL); #else gxml = glade_xml_new(glade_file, NULL, NULL); #endif g_free(glade_file); g_return_val_if_fail(gxml != NULL, NULL); /* lookup the root widget */ bookmark_dialog = UI_GET_ITEM(gxml, "dialog"); g_signal_connect(bookmark_dialog, "response", G_CALLBACK(on_dialog_response), NULL); /* treeview */ treeview = UI_GET_ITEM(gxml, "treeview"); setup_treeview(); g_signal_connect(treeview, "button-release-event", G_CALLBACK(on_treeview_button_release_event), NULL); /* entrys */ entry_label = UI_GET_ITEM(gxml, "entry1"); entry_key = UI_GET_ITEM(gxml, "entry2"); entry_module = UI_GET_ITEM(gxml, "entry3"); gtk_entry_set_text(GTK_ENTRY(entry_label), label); gtk_entry_set_text(GTK_ENTRY(entry_key), key); gtk_entry_set_text(GTK_ENTRY(entry_module), module); g_signal_connect(entry_label, "activate", G_CALLBACK(on_dialog_enter), NULL); g_signal_connect(entry_key, "activate", G_CALLBACK(on_dialog_enter), NULL); g_signal_connect(entry_module, "activate", G_CALLBACK(on_dialog_enter), NULL); /* dialog buttons */ button_new_folder = UI_GET_ITEM(gxml, "button1"); button_add_bookmark = UI_GET_ITEM(gxml, "button3"); return bookmark_dialog; }
/* save if needed is done in treeky-editor.c before calling editor_load_book() */ void editor_load_book(EDITOR *e) { gchar *title = NULL, *text = NULL; if (!g_ascii_isdigit(e->key[0])) return; /* make sure is a number (offset) */ XI_message(("book: %s\noffset :%s", e->module, e->key)); if (atol(e->key) != 0) text = main_get_book_raw_text(e->module, e->key); else text = g_strdup(e->module); 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 BOOK [%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://"); } if (text) g_free(text); title = g_strdup_printf("%s", e->module); change_window_title(e->window, title); g_free(title); e->is_changed = FALSE; }
void on_buffer_changed(GtkTextBuffer *textbuffer, gpointer user_data) { GtkTextIter start; GtkTextIter end; gtk_text_buffer_get_start_iter(textbuffer, &start); gtk_text_buffer_get_end_iter(textbuffer, &end); if (note) g_free(note); note = gtk_text_buffer_get_text(textbuffer, &start, &end, FALSE); XI_message(("note: %s", note)); }
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); }
static void _save_file(EDITOR *e) { GtkRecentManager *rm = NULL; GString *data = g_string_new(""); editor_get_document_content(data, e); XI_message(("%s", data->str)); if (!e->filename || (0 == g_strcmp0("Untitled document", e->filename)) || g_strrstr(e->filename, ".spt")) { GtkWidget *dialog = gtk_file_chooser_dialog_new("Save as", //const gchar *title, NULL, //GtkWindow *parent, GTK_FILE_CHOOSER_ACTION_SAVE, //GtkFileChooserAction action, #ifdef HAVE_GTK_310 "_OK", GTK_RESPONSE_OK, "_Cancel", GTK_RESPONSE_CANCEL, #else GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, #endif NULL); gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), settings.studypaddir); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); e->filename = g_strdup(filename); GFile *gfile = g_file_parse_name(filename); g_file_replace_contents(gfile, data->str, data->len, NULL, TRUE, G_FILE_CREATE_NONE, NULL, NULL, NULL); //GError **error } change_window_title(e->window, e->filename); gtk_widget_destroy(dialog); } else { GFile *gfile = g_file_parse_name(e->filename); g_file_replace_contents(gfile, data->str, data->len, NULL, TRUE, G_FILE_CREATE_NONE, NULL, NULL, NULL); //GError **error } rm = gtk_recent_manager_get_default(); gtk_recent_manager_add_item(rm, e->filename); e->is_changed = FALSE; g_string_free(data, TRUE); }
static void _save_note(EDITOR *e) { GString *string; string = g_string_sized_new(4096); gtk_html_export(gtkhtml_editor_get_html(GTKHTML_EDITOR(e->window)), "text/html", (GtkHTMLSaveReceiverFn)_save_receiver, string); XI_message(("\n_save_note: %s\n", string->str)); main_save_note(e->module, e->key, string->str); g_string_free(string, TRUE); gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window)); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE); }
static void recent_item_cb(GtkRecentChooser *chooser, EDITOR *e) { gchar *file_uri = gtk_recent_chooser_get_current_uri(chooser); XI_message(("file_uri: %s", file_uri)); if (e->filename) g_free(e->filename); e->filename = g_strdup(file_uri); //editor_open_recent (file_uri, e); _load_file(e, file_uri); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); }
static void on_edit_percomm_activate(GtkMenuItem *menuitem, gpointer user_data) { gchar *key; if (is_dialog) key = g_strdup(dialog->key); else key = _get_key(menu_mod_name); if (key) { XI_message(("\n\npercomm key: %s\n\n", key)); editor_create_new((gchar *)user_data, (gchar *)key, NOTE_EDITOR); g_free(key); } }
void _get_export_filename(void) { #ifndef USE_GTKBUILDER gchar *glade_file; GladeXML *gxml; #endif GtkWidget *fdialog; filename = NULL; #ifndef USE_GTKBUILDER glade_file = gui_general_user_file("export-dialog" UI_SUFFIX, FALSE); g_return_if_fail(glade_file != NULL); XI_message(("%s", glade_file)); #endif /* build the widget */ #ifdef USE_GTKBUILDER fdialog = gtk_file_chooser_dialog_new("Save Export File", NULL, GTK_FILE_CHOOSER_ACTION_SAVE, #ifdef HAVE_GTK_310 "_Cancel", GTK_RESPONSE_CANCEL, "_Save", GTK_RESPONSE_ACCEPT, #else GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, #endif NULL); #else gxml = glade_xml_new(glade_file, "filechooserdialog1", NULL); fdialog = glade_xml_get_widget(gxml, "filechooserdialog1"); #endif g_signal_connect(fdialog, "response", G_CALLBACK(on_filechooserdialog_response), (GtkFileChooser *)fdialog); #ifdef USE_GTKBUILDER gtk_dialog_run(GTK_DIALOG(fdialog)); #endif }
G_MODULE_EXPORT void action_save_activate_cb(GtkWidget *widget, EDITOR *e) { switch (e->type) { case STUDYPAD_EDITOR: _save_file(e); break; case NOTE_EDITOR: _save_note(e); break; case BOOK_EDITOR: _save_book(e); break; default: XI_message(("\naction_save_cb oops!\n")); break; } }
static void action_save_cb(GtkAction *action, EDITOR *e) { switch (e->type) { case STUDYPAD_EDITOR: _save_file(e); break; case NOTE_EDITOR: _save_note(e); break; case BOOK_EDITOR: _save_book(e); break; default: XI_message(("\naction_save_cb oops!\n")); break; } }
GtkWidget *gui_create_editor_tree(EDITOR *editor) { GtkWidget *treeview; treeview = gtk_tree_view_new(); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); main_add_mod_tree_columns(GTK_TREE_VIEW(treeview)); XI_message(("\ngui_create_editor_tree Mod Name:%s\n", editor->module)); main_load_book_tree_in_editor(GTK_TREE_VIEW(treeview), editor->module); menu = create_edit_tree_menu(editor); g_signal_connect_after((gpointer)treeview, "button_release_event", G_CALLBACK(on_button_release), editor); return treeview; }
static gboolean button_release_handler(GtkWidget *widget, GdkEventButton *event) { if (event->type == GDK_BUTTON_RELEASE && db_click) { XI_message((" button 1 = %s", "double click!\n")); #ifdef USE_WEBKIT2 webkit_web_view_execute_editing_command(WEBKIT_WEB_VIEW(widget), WEBKIT_EDITING_COMMAND_COPY); #else if (webkit_web_view_has_selection(WEBKIT_WEB_VIEW(widget))) { webkit_web_view_copy_clipboard(WEBKIT_WEB_VIEW(widget)); } #endif GtkClipboard *clipboard = gtk_widget_get_clipboard(widget, GDK_SELECTION_CLIPBOARD); gtk_clipboard_request_text(clipboard, gui_get_clipboard_text_for_lookup, NULL); } return FALSE; }
static void sync_with_main(const gchar *key) { gchar *buf = NULL; if (key) buf = (gchar *)main_url_encode(key); else buf = (gchar *) main_url_encode(xml_get_value("keys", "verse")); XI_message(("%s", buf)); if (buf && (strlen(buf) > 3)) { gchar *url = g_strdup_printf("passagestudy.jsp?action=showParallel&" "type=verse&value=%s", buf); main_url_handler(url, TRUE); g_free(url); } }
G_MODULE_EXPORT void action_delete_item_activate_cb(GtkWidget *widget, EDITOR *e) { if (e->studypad) return; gchar *buf = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s %s?</span>", _("Are you sure you want to delete the note for"), e->key); if (gui_yes_no_dialog(buf, #ifdef HAVE_GTK_310 "dialog-warning" #else GTK_STOCK_DIALOG_WARNING #endif )) { main_delete_note(e->module, e->key); /* new empty document from template */ gchar *fname = g_build_filename(settings.gSwordDir, "studypad.spt", NULL); XI_message(("action delete item [%s]", fname)); gchar *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://"); } if (text) g_free(text); } g_free(buf); e->is_changed = FALSE; }
/* this is the link handler for when a link is clicked */ static void link_handler(GtkWidget *widget, #ifdef USE_WEBKIT2 WebKitHitTestResult *hit_test_result, guint modifiers, #else gchar *title, gchar *uri, #endif gpointer user_data) { #ifdef USE_WEBKIT2 const char *uri; uri = webkit_hit_test_result_get_link_uri(hit_test_result); #endif WkHtmlPriv *priv; priv = WK_HTML_GET_PRIVATE(WK_HTML(widget)); XI_message(("html_link_message: uri = %s", (uri ? uri : "-none-"))); if (x_uri) { g_free(x_uri); x_uri = NULL; } if (uri) { x_uri = g_strdup(uri); in_url = 1; } else in_url = 0; g_signal_emit(widget, signals[URI_SELECTED], 0, uri, FALSE); if (uri) { if (priv->is_dialog) main_dialogs_url_handler(priv->dialog, uri, FALSE); else main_url_handler(uri, FALSE); } }
static void _save_file(EDITOR *e) { const gchar *filename; gboolean as_html; GError *error = NULL; if (gtkhtml_editor_get_filename(GTKHTML_EDITOR(e->window)) == NULL) if (save_dialog(GTKHTML_EDITOR(e->window), e) == GTK_RESPONSE_CANCEL) return; filename = gtkhtml_editor_get_filename(GTKHTML_EDITOR(e->window)); as_html = gtkhtml_editor_get_html_mode(GTKHTML_EDITOR(e->window)); XI_message(("\n_save_file filename: %s\n", filename)); gtkhtml_editor_save(GTKHTML_EDITOR(e->window), filename, as_html, &error); handle_error(&error); gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window)); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE); }
/* save if needed is done in treeky-editor.c before calling editor_load_book() */ void editor_load_book(EDITOR *e) { gchar *title = NULL; gchar *text = NULL; if (!g_ascii_isdigit(e->key[0])) return; /* make sure is a number (offset) */ title = g_strdup_printf("%s", e->module); XI_message(("book: %s\noffset :%s", e->module, e->key)); if (atol(e->key) != 0) text = main_get_book_raw_text(e->module, e->key); else text = g_strdup(e->module); 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 (text) g_free(text); if (title) g_free(title); }