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; }
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; }
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 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); }
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); }
/* 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; }
G_MODULE_EXPORT void action_new_activate_cb(GtkWidget *widget, EDITOR *e) { /* for studypad only */ gchar *filename = NULL; if (e->is_changed) ask_about_saving(e); filename = g_strdup_printf("%s/%s", settings.gSwordDir, "studypad.spt"); _load_file(e, filename); if (e->filename) g_free(e->filename); e->filename = g_strdup(_("Untitled document")); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); e->is_changed = TRUE; }
static void action_new_cb(GtkAction *action, EDITOR *e) { /* for studypad only */ if (editor_is_dirty(e)) _save_file(e); _load_file(e, g_strdup_printf("%s/%s", settings.gSwordDir, "template.pad")); if (e->filename) g_free(e->filename); e->filename = g_strdup(_("Untitled document")); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); gtkhtml_editor_set_filename(GTKHTML_EDITOR(e->window), NULL); gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), TRUE); }
/* 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); }
static gint save_dialog(GtkhtmlEditor *editor, EDITOR *e) { GtkWidget *dialog; const gchar *filename; gint response; dialog = gtk_file_chooser_dialog_new(_("Save As"), GTK_WINDOW(editor), GTK_FILE_CHOOSER_ACTION_SAVE, #ifdef HAVE_GTK_310 "_Cancel", GTK_RESPONSE_CANCEL, "_Open", GTK_RESPONSE_ACCEPT, #else GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, #endif NULL); gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); filename = gtkhtml_editor_get_filename(editor); if (filename != NULL) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), filename); else { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), settings.studypaddir); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), _("Untitled document")); } response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_ACCEPT) { gchar *new_filename; new_filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gtkhtml_editor_set_filename(editor, new_filename); if (e->filename) g_free(e->filename); e->filename = g_strdup(new_filename); xml_set_value("Xiphos", "studypad", "lastfile", e->filename); settings.studypadfilename = xml_get_value("studypad", "lastfile"); change_window_title(e->window, e->filename); g_free(new_filename); } gtk_widget_destroy(dialog); return response; }