summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeus Benschop <teusjannette@gmail.com>2018-11-09 13:05:38 +0100
committerDaniel Glassey <wdg@debian.org>2018-11-13 10:31:54 +0700
commit7553df01e7605c3bd1b658a004e44120a686bd97 (patch)
treecec4cb5c077a2a96298394d6f91de66f7884fbee
parentc36392f21d6c939010b6e6e5e03fc8b03622a5ab (diff)
disable webkit editor
Gbp-Pq: Name 0014-disable-webkit-editor.patch
-rw-r--r--src/editor/editor.c1164
-rw-r--r--src/editor/editor.h60
-rw-r--r--src/editor/link_dialog.c176
-rw-r--r--src/editor/link_dialog.h50
-rw-r--r--src/editor/slib-editor.c1477
-rw-r--r--src/editor/slib-editor.h87
-rw-r--r--src/editor/template.h73
-rw-r--r--src/editor/webkit_editor.c1433
-rw-r--r--src/editor/webkit_editor.h208
9 files changed, 9 insertions, 4719 deletions
diff --git a/src/editor/editor.c b/src/editor/editor.c
index ffcfff5..8b1a393 100644
--- a/src/editor/editor.c
+++ b/src/editor/editor.c
@@ -1,1163 +1 @@
-/*
- * Xiphos Bible Study Tool
- * editor.c - webkit stuff
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef USE_WEBKIT_EDITOR
-
-/* X keyboard #definitions, to handle shortcuts */
-/* we must define the categories of #definitions we need. */
-#define XK_MISCELLANY
-#define XK_LATIN1
-#include <X11/keysymdef.h>
-
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-
-#include "editor/webkit_editor.h"
-#include "editor/editor.h"
-
-#include "main/sword.h"
-#include "main/settings.h"
-
-#include "gui/utilities.h"
-
-#define html_start "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"><html><head>"
-
-BUTTONS_STATE buttons_state;
-
-glong mouse_x;
-glong mouse_y;
-
-//WebKitDOMElement * current_element;
-
-/******************************************************************************
- * Name
- * editor_insert_new_outline_level
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gint editor_insert_new_outline_level (gint level, EDITOR * e)
- *
- * Description
- * use to create an outline:
- * I.
- * A.
- * 1.
- * a.
- *
- * Return value
- * gint
- */
-
-gint editor_insert_new_outline_level(gint level, EDITOR *e)
-{
- WebKitDOMDocument *doc;
- WebKitDOMElement *element_anchor = NULL;
- WebKitDOMElement *element = NULL;
- WebKitDOMElement *parent_ol_element = NULL;
- WebKitDOMDOMWindow *window;
- WebKitDOMDOMSelection *selection = NULL;
- GError *error = NULL;
- gchar *name = NULL;
- gchar *class = NULL;
- gchar *level_str = NULL;
-
- XI_message(("\n%s\n", "editor_insert_new_outline_level"));
-
- doc = webkit_web_view_get_dom_document((WebKitWebView *)
- e->html_widget);
-
- if (!doc)
- return 0;
-
- window = webkit_dom_document_get_default_view(doc);
- selection = webkit_dom_dom_window_get_selection(window);
- if (selection == NULL) {
- XI_message(("\n%s\n", "failed to get selection"));
- return 0;
- }
-
- element_anchor = (WebKitDOMElement *)
- webkit_dom_dom_selection_get_anchor_node(selection);
- if (element_anchor == NULL) {
- XI_message(("\n%s\n", "failed to get anchor"));
- return 0;
- }
-
- name = webkit_dom_element_get_tag_name(element_anchor);
- if (!g_strcmp0("LI", name) || !g_strcmp0("li", name)) {
- XI_message(("current element: %s", name));
- element =
- webkit_dom_node_get_parent_element((WebKitDOMNode *)
- element_anchor);
- } else
- return 1;
-
- parent_ol_element =
- webkit_dom_node_get_parent_element((WebKitDOMNode *)element);
- name = webkit_dom_element_get_tag_name(parent_ol_element);
- class =
- webkit_dom_element_get_attribute(parent_ol_element, "class");
- XI_message(("\nparent_ol_element: %s\nclass: %s\n", name, class));
-
- if (class) {
- if (!g_strcmp0("L1", class))
- level_str = g_strdup("L2");
- if (!g_strcmp0("L2", class))
- level_str = g_strdup("L3");
- if (!g_strcmp0("L3", class))
- level_str = g_strdup("L4");
- if (!g_strcmp0("L4", class))
- level_str = g_strdup("L4");
- if (!level_str) {
- return 0;
- }
- }
-
- webkit_dom_element_set_attribute(element, "class", level_str,
- &error);
- if (error) {
- fprintf(stderr, "Failed to create new attribute: %s\n",
- error->message);
- g_error_free(error);
- error = NULL;
- return 0;
- }
-
- return 1;
-}
-
-/******************************************************************************
- * Name
- * editor_get_document_content
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void editor_get_document_content (GString * data, EDITOR * e)
- *
- * Description
- * fills the GString with the contents of the html document.
- *
- * Return value
- * void
- */
-
-void editor_get_document_content(GString *data, EDITOR *e)
-{
- WebKitDOMHTMLElement *html;
- WebKitDOMHTMLHeadElement *header;
- WebKitDOMDocument *dom_document = NULL;
- gchar *body = NULL;
- gchar *head = NULL;
-
- dom_document = webkit_web_view_get_dom_document((WebKitWebView *)
- e->html_widget);
- if (!dom_document)
- return;
-
- /* get document <head> info */
- header = webkit_dom_document_get_head(dom_document);
- head =
- webkit_dom_html_element_get_inner_html((WebKitDOMHTMLElement *)
- header);
-
- /* get document <body> info */
- html = webkit_dom_document_get_body(dom_document);
- body = webkit_dom_html_element_get_inner_html(html);
-
- g_string_printf(data, "%s%s</head><body>%s</body>\n</html>",
- html_start, head, body);
-}
-
-/******************************************************************************
- * Name
- * editor_get_selected_text
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gchar * editor_get_selected_text (EDITOR * e)
- *
- * Description
- * returns the selected text and must be freed by calling function
- *
- * Return value
- * gchar *
- */
-
-gchar *editor_get_selected_text(EDITOR *e)
-{
- WebKitDOMDocument *dom_document;
- WebKitDOMDOMWindow *window = NULL;
- WebKitDOMDOMSelection *selection = NULL;
- gchar *text = NULL;
- GError *error = NULL;
-
- dom_document = webkit_web_view_get_dom_document((WebKitWebView *)
- e->html_widget);
- if (!dom_document)
- return NULL;
- window = webkit_dom_document_get_default_view(dom_document);
- selection = webkit_dom_dom_window_get_selection(window);
- if (selection) {
- WebKitDOMRange *range =
- webkit_dom_dom_selection_get_range_at(selection, 0,
- &error);
- if (error) {
- fprintf(stderr, "Failed to get range: %s\n",
- error->message);
- g_error_free(error);
- error = NULL;
- //return;
- }
- text = webkit_dom_range_to_string(range, &error);
- if (error) {
- fprintf(stderr, "Failed range text: %s\n",
- error->message);
- g_error_free(error);
- error = NULL;
- return NULL;
- }
- }
- return g_strdup(text);
-}
-
-/******************************************************************************
- * Name
- * editor_find_string
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void editor_find_string (gchar * needle, EDITOR * e)
- *
- * Description
- * search document for needle
- *
- * Return value
- * void
- */
-
-void editor_find_string(gchar *needle, EDITOR *e)
-{
- webkit_web_view_search_text((WebKitWebView *)e->html_widget,
- needle, FALSE, TRUE, TRUE);
-}
-
-/******************************************************************************
- * Name
- * editor_replace_string
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void editor_replace_string (gchar * old_string, gchar * new_string, EDITOR * e)
- *
- * Description
- * search document for old_string and replace with new_string
- * **** needs work ****
- *
- * Return value
- * void
- */
-
-void editor_replace_string(gchar *old_string, gchar *new_string,
- EDITOR *e)
-{
- WebKitWebFrame *frame = NULL;
-
- frame = webkit_web_view_get_main_frame((WebKitWebView *)
- e->html_widget);
- webkit_web_view_search_text((WebKitWebView *)e->html_widget,
- old_string, FALSE, TRUE, FALSE);
- webkit_web_frame_replace_selection(frame, new_string);
-}
-
-/******************************************************************************
- * Name
- * editor_execute_script
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void editor_execute_script(gchar * script, EDITOR * e)
- *
- * Description
- * executes scripts ie "document.execCommand('insertOrderedList', null, \"\");"
- *
- *
- * Return value
- * void
- */
-
-void editor_execute_script(gchar *script, EDITOR *e)
-{
- if (script) {
- webkit_web_view_execute_script(WEBKIT_WEB_VIEW(e->html_widget), script);
- XI_message(("script: %s", script));
- }
-}
-
-/******************************************************************************
- * Name
- * editor_insert_html
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void editor_insert_html(const gchar * html, EDITOR * e)
- *
- * Description
- *
- *
- * Return value
- * void
- */
-
-void editor_insert_html(const gchar *html, EDITOR *e)
-{
- gchar *str = g_strdup_printf("document.execCommand('insertHTML', null, \'%s\');", html);
- XI_message(("script: %s", str));
- editor_execute_script(str, e);
- g_free(str);
-}
-
-/*
-void editor_open_recent (const gchar * uri, EDITOR * e)
-{
- webkit_web_view_load_uri (WEBKIT_WEB_VIEW(e->html_widget),uri);
-
-}
-*/
-
-gboolean editor_cut(EDITOR *e)
-{
- if (webkit_web_view_can_cut_clipboard(WEBKIT_WEB_VIEW(e->html_widget))) {
- webkit_web_view_cut_clipboard(WEBKIT_WEB_VIEW(e->html_widget));
- return 1;
- } else
- return 0;
-}
-
-gboolean editor_copy(EDITOR *e)
-{
- if (webkit_web_view_can_copy_clipboard(WEBKIT_WEB_VIEW(e->html_widget))) {
- webkit_web_view_copy_clipboard(WEBKIT_WEB_VIEW(e->html_widget));
- return 1;
- } else
- return 0;
-}
-
-gboolean editor_paste(EDITOR *e)
-{
- if (webkit_web_view_can_paste_clipboard(WEBKIT_WEB_VIEW(e->html_widget))) {
- webkit_web_view_paste_clipboard(WEBKIT_WEB_VIEW(e->html_widget));
- return 1;
- } else
- return 0;
-}
-
-/*
-GtkWidget * entry_module;
-GtkWidget * entry_verse;
-GtkWidget * entry_text;
-GtkWidget * linkage_verse_list;
-GtkWidget * hbox_sword_link;
-GtkWidget * hbox_rbuttons;
-GtkWidget * uri_entry;
-gboolean sword_link;
-
-void editor_insert_link_ok (void)
-{
- const gchar *mod_str = NULL;
- const gchar *verse_str = NULL;
- const gchar *text_str = NULL;
- const gchar *uri_str = NULL;
- //const gchar *encoded_mod = NULL;
- //const gchar *encoded_verse = NULL;
- gchar *str = NULL;
- //gint type = -1;
- if(sword_link) {
- //XI_message(("%s","sword_link"));
- mod_str = gtk_entry_get_text (GTK_ENTRY (entry_module));
- verse_str = gtk_entry_get_text (GTK_ENTRY (entry_verse));
- text_str = gtk_entry_get_text (GTK_ENTRY (entry_text));
- //type = main_get_mod_type((gchar*)mod_str);
- str = g_strdup_printf(" <a href=\"sword://%s/%s\">%s</a>",
- mod_str ,verse_str,text_str);
- } else {
-
- uri_str = gtk_entry_get_text (GTK_ENTRY (uri_entry));
- str = g_strdup_printf(" <a href=\"%s\">%s</a>",
- uri_str, uri_str);
- }
-
- editor_insert_html(str, e);
- if(str)
- g_free(str);
-}
-
-gboolean editor_insert_sword_link(void)
-{
- GtkBuilder * builder;
- GtkWidget * window;
- GtkWidget * hbox_sword_link;
- GtkWidget * hbox_rbuttons;
- GError *error = NULL;
- sword_link = TRUE;
- builder = gtk_builder_new ();
- gtk_builder_add_from_file (builder, LINK_DIALOG_UI_FILE, &error);
- if (error) {
- fprintf(stderr, "Failed to load ui file: %s\n", error->message);
- g_error_free(error);
- error = NULL;
- }
-
- window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1"));
- gtk_builder_connect_signals (builder,window);
-
- hbox_sword_link = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_sword_link"));
- hbox_rbuttons = GTK_WIDGET (gtk_builder_get_object (builder, "hbox6"));
- gtk_widget_show (hbox_sword_link);
- gtk_widget_show (hbox_rbuttons);
-
- entry_module = GTK_WIDGET (gtk_builder_get_object (builder, "entry2"));
- entry_verse = GTK_WIDGET (gtk_builder_get_object (builder, "entry1"));
- entry_text = GTK_WIDGET (gtk_builder_get_object (builder, "entry3"));
- linkage_verse_list = GTK_WIDGET (gtk_builder_get_object (builder, "radiobutton2"));
-
- g_object_unref (G_OBJECT (builder));
- gtk_widget_show (window);
- return 0;
-}
-
-gboolean editor_insert_link(void)
-{
- GtkBuilder * builder;
- //GtkWidget * entry_module;
- //GtkWidget * entry_verse;
- //GtkWidget * entry_text;
- GtkWidget * window;
- GtkWidget * hbox_url_link;
- sword_link = FALSE;
-
- builder = gtk_builder_new ();
- gtk_builder_add_from_file (builder, LINK_DIALOG_UI_FILE, NULL);
-
- window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1"));
- gtk_builder_connect_signals (builder,window);
- hbox_url_link = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_url_link"));
- gtk_widget_show (hbox_url_link);
-
- uri_entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry4"));
- //entry_verse = GTK_WIDGET (gtk_builder_get_object (builder, "entry1"));
- //entry_text = GTK_WIDGET (gtk_builder_get_object (builder, "entry3"));
- //linkage_verse_list = GTK_WIDGET (gtk_builder_get_object (builder, "radiobutton2"));
-
- g_object_unref (G_OBJECT (builder));
- gtk_widget_show (window);
- return 0;
-}
-
-*/
-
-/******************************************************************************
- * Name
- * user_changed_contents_cb
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void user_changed_contents_cb (WebKitWebView * web_view, EDITOR * e)
- *
- * Description
- * callback - when user makes a change to a document
- *
- * Return value
- * void
- */
-static void user_changed_contents_cb(WebKitWebView *web_view, EDITOR *e)
-{
- XI_message(("%s", "user_changed_contents_cb"));
- e->is_changed = TRUE;
-}
-
-/******************************************************************************
- * Name
- * on_navigation_requested
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * WebKitNavigationResponse on_navigation_requested (WebKitWebView * web_view,
- * WebKitWebFrame * frame,
- * WebKitNetworkRequest * request,
- * EDITOR * e)
- *
- * Description
- * allows only a uri that contains 'file:'
- *
- * Return value
- * WebKitNavigationResponse
- */
-static WebKitNavigationResponse on_navigation_requested(WebKitWebView *web_view,
- WebKitWebFrame *frame,
- WebKitNetworkRequest *
- request,
- EDITOR *e)
-{
- const gchar *uri = NULL;
-
- if (e->is_changed) {
- ask_about_saving(e);
- }
-
- uri = webkit_network_request_get_uri(request);
- XI_message(("on_navigation_requested uri: %s", uri));
- if (g_strstr_len(uri, 6, "file:"))
- return FALSE;
- else
- return TRUE;
-}
-
-/******************************************************************************
- * Name
- * link_handler
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void link_handler (GtkWidget *widget,
- * gchar *title,
- * gchar *uri,
- * EDITOR * e)
- *
- * Description
- * hovering over a link - does nothing at present
- *
- * Return value
- * void
- */
-
-static void link_handler(GtkWidget *widget,
- gchar *title, gchar *uri, EDITOR *e)
-{
- XI_message(("link_handler"));
-}
-
-/******************************************************************************
- * Name
- * _has_element
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gint _has_element(gchar * name, gchar * class, EDITOR * e)
- *
- * Description
- * checks for html element - for button status ie bold on or off
- *
- * Return value
- * gint
- */
-
-static gint _has_element(gchar *name, gchar *class, EDITOR *e)
-{
- if (!name)
- return 0;
- if (!g_strcmp0("BODY", name)) {
- return 0;
- }
- if (!g_strcmp0("B", name)) {
- buttons_state.bold = 1;
- return 1;
- } else if (!g_strcmp0("I", name)) {
- buttons_state.italic = 1;
- return 1;
- } else if (!g_strcmp0("U", name)) {
- buttons_state.underline = 1;
- return 1;
- } else if (!g_strcmp0("STRIKE", name)) {
- buttons_state.strike = 1;
- return 1;
- } else if (!g_strcmp0("DIV", name)) {
- buttons_state.style = 0;
- return 1;
- } else if (!g_strcmp0("H1", name)) {
- buttons_state.style = 1;
- return 1;
- } else if (!g_strcmp0("H2", name)) {
- buttons_state.style = 2;
- return 1;
- } else if (!g_strcmp0("H3", name)) {
- buttons_state.style = 3;
- return 1;
- } else if (!g_strcmp0("H4", name)) {
- buttons_state.style = 4;
- return 1;
- } else if (!g_strcmp0("H5", name)) {
- buttons_state.style = 5;
- return 1;
- } else if (!g_strcmp0("H6", name)) {
- buttons_state.style = 6;
- return 1;
- } else if (!g_strcmp0("ADDRESS", name)) {
- buttons_state.style = 7;
- return 1;
- } else if (!g_strcmp0("PRE", name)) {
- buttons_state.style = 8;
- return 1;
- } else if (!g_strcmp0("UL", name)) {
- buttons_state.style = 9;
- return 1;
- } else if (!g_strcmp0("FONT", name)) {
- //buttons_state.style = 9;
- return 1;
- }
- if (!g_strcmp0("LI", name)) {
- return 1;
- } else if (!g_strcmp0("OL", name)) {
- buttons_state.style = 10;
- if (class) {
- XI_message(("\nclass: %s\n", class));
- if (!g_strcmp0("L1", class)) {
- e->toolitems.outline_level = 1;
- buttons_state.style = 10;
- }
- if (!g_strcmp0("L2", class)) {
- e->toolitems.outline_level = 2;
- buttons_state.style = 12;
- }
- if (!g_strcmp0("L3", class)) {
- e->toolitems.outline_level = 3;
- buttons_state.style = 11;
- }
- if (!g_strcmp0("L4", class)) {
- e->toolitems.outline_level = 4;
- buttons_state.style = 12;
- }
- }
- return 0;
- } else
- return 0;
- return 1;
-}
-
-/******************************************************************************
- * Name
- * key_handler
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gboolean key_handler (GtkWidget *widget,
- * GdkEvent *event,
- * EDITOR * e)
- *
- * Description
- * key release handler - does nothing at present
- *
- * Return value
- * gboolean
- */
-
-static gboolean key_handler(GtkWidget *widget, GdkEventKey *event, EDITOR *e)
-{
- /* these are the mods we actually use for global keys, we always only check for these set */
- guint state =
- event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK |
- GDK_MOD1_MASK | GDK_MOD4_MASK);
-
- switch (event->keyval) {
- case XK_s: // Ctrl-L verse entry
- if (state == GDK_CONTROL_MASK)
- action_save_activate_cb(e->html_widget, e);
- break;
- }
-
- return 0;
-}
-
-/******************************************************************************
- * Name
- * menu_spell_item_activated
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void menu_spell_item_activated (GtkWidget *menuitem, EDITOR * e)
- *
- * Description
- * user clicked on spelling word guess - get word form menu item label
- * and replace misspelled word
- *
- * Return value
- * void
- */
-
-static void menu_spell_item_activated(GtkWidget *menuitem, EDITOR *e)
-{
- WebKitWebFrame *frame;
- const gchar *label;
-
- label = gtk_menu_item_get_label(GTK_MENU_ITEM(menuitem));
- frame = webkit_web_view_get_main_frame((WebKitWebView *)
- e->html_widget);
-
- webkit_web_frame_replace_selection(frame, label);
-}
-
-/******************************************************************************
- * Name
- * menu_spell_add_item_activated
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void menu_spell_add_item_activated (GtkWidget *menuitem, gpointer user_data)
- *
- * Description
- * add word to dictionary
- *
- * Return value
- * void
- */
-
-static void menu_spell_add_item_activated(GtkWidget *menuitem,
- gpointer user_data)
-{
- WebKitSpellChecker *checker = NULL;
- checker = (WebKitSpellChecker *)webkit_get_text_checker();
-
- webkit_spell_checker_learn_word(checker, (gchar *)user_data);
- if ((gchar *)user_data)
- g_free((gchar *)user_data);
-}
-
-/******************************************************************************
- * Name
- * menu_spell_ignore_item_activated
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void menu_spell_ignore_item_activated (GtkWidget *menuitem, gpointer user_data)
- *
- * Description
- * ignore word for this document
- *
- * Return value
- * void
- */
-
-static void menu_spell_ignore_item_activated(GtkWidget *menuitem,
- gpointer user_data)
-{
- WebKitSpellChecker *checker = NULL;
- checker = (WebKitSpellChecker *)webkit_get_text_checker();
-
- webkit_spell_checker_ignore_word(checker, (gchar *)user_data);
- if ((gchar *)user_data)
- g_free((gchar *)user_data);
-}
-
-/******************************************************************************
- * Name
- * _fill_spell_menu
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gint _fill_spell_menu(GtkWidget * menu, gchar * word, EDITOR * e)
- *
- * Description
- * add spelling guesses to context menu - word must be selected in
- * for this to work - it's webkit thing
- *
- * Return value
- * gint
- */
-
-static gint _fill_spell_menu(GtkWidget *menu, gchar *word, EDITOR *e)
-{
- WebKitSpellChecker *checker = NULL;
- int misspelling_location;
- int misspelling_length;
- GtkWidget *item;
- char **word_list = NULL;
-
- XI_message(("\nword: %s\n", word));
- checker = (WebKitSpellChecker *)webkit_get_text_checker();
-
- webkit_spell_checker_check_spelling_of_string(checker,
- word,
- &misspelling_location,
- &misspelling_length);
- if (!misspelling_length)
- return 0;
-
- word_list = webkit_spell_checker_get_guesses_for_word(checker,
- word, NULL);
- /* add guesses to menu */
- if (word_list) {
- int i = 0;
- while (word_list[i]) {
- item = gtk_menu_item_new_with_label(word_list[i]);
- gtk_widget_show(item);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(menu_spell_item_activated), e);
- gtk_menu_shell_append((GtkMenuShell *)menu,
- (GtkWidget *)item);
- i++;
- }
- }
-
- /* separator */
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* add word */
- item = gtk_menu_item_new_with_label("Add word");
- gtk_widget_show(item);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(menu_spell_add_item_activated),
- g_strdup((gchar *)word));
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* ignore word */
- item = gtk_menu_item_new_with_label("Ignore word");
- gtk_widget_show(item);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(menu_spell_ignore_item_activated),
- g_strdup((gchar *)word));
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* separator */
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- if (word_list)
- g_strfreev(word_list);
-
- return misspelling_length;
-}
-
-/******************************************************************************
- * Name
- * _create_context_menu
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void _create_context_menu (WebKitDOMDocument * dom_document, guint32 time, EDITOR * e)
- *
- * Description
- * called when right button is clicked -
- *
- * Return value
- * void
- */
-
-static void _create_context_menu(WebKitDOMDocument *dom_document, guint32 time,
- EDITOR *e)
-{
- WebKitDOMDOMWindow *window = NULL;
- WebKitDOMDOMSelection *selection = NULL;
- GError *error = NULL;
- GtkWidget *menu = NULL;
- GtkWidget *item = NULL;
- gboolean have_selection = FALSE;
-
- menu = gtk_menu_new();
- window = webkit_dom_document_get_default_view(dom_document);
- selection = webkit_dom_dom_window_get_selection(window);
- if (selection) {
- WebKitDOMRange *range =
- webkit_dom_dom_selection_get_range_at(selection, 0,
- &error);
- if (error) {
- fprintf(stderr, "Failed to get range: %s\n",
- error->message);
- g_error_free(error);
- error = NULL;
- }
- gchar *text = webkit_dom_range_to_string(range, &error);
- if (error) {
- fprintf(stderr, "Failed range text: %s\n",
- error->message);
- g_error_free(error);
- error = NULL;
- return;
- }
- if (text && (g_strcmp0(text, "") != 0)) {
- _fill_spell_menu(menu, text, e);
- have_selection = TRUE;
- } else
- have_selection = FALSE;
- }
-
- /* cut */
- item =
-#if GTK_CHECK_VERSION(3, 10, 0)
- gtk_menu_item_new_with_label("_(Cut)");
-#else
- gtk_image_menu_item_new_from_stock(GTK_STOCK_CUT, NULL);
-#endif
- gtk_widget_show(item);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(action_cut_activate_cb), e);
- gtk_widget_set_sensitive(item, have_selection);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* copy */
- item =
-#if GTK_CHECK_VERSION(3, 10, 0)
- gtk_menu_item_new_with_label("_(Copy)");
-#else
- gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY, NULL);
-#endif
- gtk_widget_show(item);
- gtk_widget_set_sensitive(item, have_selection);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(action_copy_activate_cb), e);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* paste */
- item =
-#if GTK_CHECK_VERSION(3, 10, 0)
- gtk_menu_item_new_with_label("_(Paste)");
-#else
- gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE, NULL);
-#endif
- gtk_widget_show(item);
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(action_paste_activate_cb), e);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* separator */
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
- /* select all */
- item =
-#if GTK_CHECK_VERSION(3, 10, 0)
- gtk_menu_item_new_with_label("_(Select All)");
-#else
- gtk_image_menu_item_new_from_stock(GTK_STOCK_SELECT_ALL, NULL);
-
-#endif
- gtk_widget_show(item);
- /*g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (action_paste_activate_cb),
- NULL); */
- gtk_menu_shell_append((GtkMenuShell *)menu, (GtkWidget *)item);
-
-#if GTK_CHECK_VERSION(3, 22, 0)
- gtk_menu_popup_at_pointer((GtkMenu *)menu, NULL);
-#else
- gtk_menu_popup((GtkMenu *)menu, NULL, NULL, NULL, NULL, 3, time);
-#endif
-}
-
-/******************************************************************************
- * Name
- * button_handler
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * gboolean button_handler (GtkWidget *widget,
- * GdkEvent *event,
- * EDITOR * e)
- *
- * Description
- * user pressed a button - set button status
- * if right button call _create_context_menu()
- *
- * Return value
- * gboolean
- */
-
-static gboolean button_handler(GtkWidget *widget, GdkEvent *event, EDITOR *e)
-{
- WebKitDOMDocument *dom_document;
- WebKitDOMElement *element = NULL;
- buttons_state.bold = 0;
- buttons_state.italic = 0;
- buttons_state.underline = 0;
- buttons_state.strike = 0;
- buttons_state.style = 0;
- buttons_state.nochange = 1;
- gchar *name = NULL;
- gchar *class = NULL;
- gchar *color = NULL;
- gint i = 1;
-
- //current_element = NULL;
- e->toolitems.outline_level = 0;
- mouse_x = event->button.x;
- mouse_y = event->button.y;
-
- dom_document = webkit_web_view_get_dom_document((WebKitWebView *)
- e->html_widget);
- if (!dom_document)
- return 0;
-
- if (event->button.button == 3) {
- _create_context_menu(dom_document, event->button.time, e);
- return 1; // return true so we don't get the webkit context menu
- }
-
- element =
- webkit_dom_document_element_from_point(dom_document, mouse_x,
- mouse_y);
- if (!element)
- return 0;
-
- name = webkit_dom_element_get_tag_name(element);
- if (!name)
- return 0;
-
- /* set buttons.color to font color element */
- if (buttons_state.color)
- g_free(buttons_state.color);
- buttons_state.color = g_strdup("#000000"); /* start with black */
-
- /* we have to set it here in case the color element is the only element */
- color = webkit_dom_element_get_attribute(element, "color");
- if (color[0] == '#') {
- if (buttons_state.color)
- g_free(buttons_state.color);
- buttons_state.color = g_strdup(color);
- }
-
- /*
- if(!g_strcmp0 ("LI",name)){
- current_element = element;
- }
- */
- i = _has_element(name, class, e);
- while (i) {
- if (name) {
- XI_message(("\nelement name: %s\nclass: %s\ncolor: %s\n", name, class, color));
- element =
- webkit_dom_node_get_parent_element((WebKitDOMNode *)element);
- if (element) {
- class =
- webkit_dom_element_get_attribute(element, "class");
- color =
- webkit_dom_element_get_attribute(element, "color");
- name =
- webkit_dom_element_get_tag_name(element);
-
- if (color[0] == '#') {
- if (buttons_state.color)
- g_free(buttons_state.color);
- buttons_state.color =
- g_strdup(color);
- }
- }
- }
- i = _has_element(name, class, e);
- }
- set_button_state(buttons_state, e);
- buttons_state.nochange = 0;
- return 0;
-}
-
-/******************************************************************************
- * Name
- * create_editor_window
- *
- * Synopsis
- * #include "editor/editor.h"
- *
- * void create_editor_window (GtkWidget * scrollwindow, EDITOR * e)
- *
- * Description
- * create and setup webkit wigdet for editing
- *
- * Return value
- * void
- */
-
-void create_editor_window(GtkWidget *scrollwindow, EDITOR *e)
-{
- WebKitWebSettings *setting;
- GtkWidget *webview;
- gchar *text = NULL, *fname = NULL;
-
- webview = webkit_web_view_new();
- e->html_widget = webview;
- gtk_widget_show(webview);
-
- /* Turn on editing */
- webkit_web_view_set_editable((WebKitWebView *)webview, TRUE);
-
- /* Create a new websettings and enable spell checking */
- setting = webkit_web_settings_new();
- g_object_set(G_OBJECT(setting), "enable-spell_checking", TRUE,
- NULL);
-
- /* Apply the result */
- webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webview), setting);
-
- /* new empty document from template */
- fname = g_build_filename(settings.gSwordDir, "studypad.spt", NULL);
- XI_message(("action delete item [%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);
-
- e->is_changed = FALSE;
-
- gtk_container_add(GTK_CONTAINER(scrollwindow), webview);
-
- g_signal_connect(G_OBJECT(webview), "navigation-requested",
- G_CALLBACK(on_navigation_requested), e);
- g_signal_connect(G_OBJECT(webview), "hovering-over-link",
- G_CALLBACK(link_handler), e);
- g_signal_connect(G_OBJECT(webview), "user-changed-contents",
- G_CALLBACK(user_changed_contents_cb), e);
- g_signal_connect(G_OBJECT(webview), "button-press-event",
- G_CALLBACK(button_handler), e);
- g_signal_connect(G_OBJECT(webview), "key-press-event",
- G_CALLBACK(key_handler), e);
-}
-
-#endif /* USE_WEBKIT_EDITOR */
+// empty
diff --git a/src/editor/editor.h b/src/editor/editor.h
index aee91e4..8b1a393 100644
--- a/src/editor/editor.h
+++ b/src/editor/editor.h
@@ -1,59 +1 @@
-/*
- * Xiphos Bible Study Tool
- * editor.h - webkit stuff
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _EDITOR_H
-#define _EDITOR_H
-
-#include <config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <gtk/gtk.h>
-
-#ifdef USE_WEBKIT_EDITOR
-
-#include "editor/webkit_editor.h"
-
-gchar *editor_get_selected_text(EDITOR *e);
-void editor_find_string(gchar *needle, EDITOR *e);
-void editor_replace_string(gchar *old_string, gchar *new_string,
- EDITOR *e);
-gint editor_insert_new_outline_level(gint level, EDITOR *e);
-gboolean editor_cut(EDITOR *e);
-gboolean editor_copy(EDITOR *e);
-gboolean editor_paste(EDITOR *e);
-void editor_get_document_content(GString *data, EDITOR *e);
-//void editor_open_recent (const gchar * uri, EDITOR * e);
-gboolean editor_insert_link(void);
-gboolean editor_insert_sword_link(void);
-void editor_insert_link_ok(void);
-void editor_execute_script(gchar *script, EDITOR *e);
-void editor_insert_html(const gchar *html, EDITOR *e);
-void create_editor_window(GtkWidget *scrollwindow, EDITOR *e);
-
-#endif /* USE_WEBKIT_EDITOR */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _EDITOR_H */
+// empty
diff --git a/src/editor/link_dialog.c b/src/editor/link_dialog.c
index c5042e5..8b1a393 100644
--- a/src/editor/link_dialog.c
+++ b/src/editor/link_dialog.c
@@ -1,175 +1 @@
-/*
- * Xiphos Bible Study Tool
- * link_dialog.c - dialog for inserting a link
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <gtk/gtk.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#ifdef USE_WEBKIT_EDITOR
-#include "editor/webkit_editor.h"
-#include "editor/editor.h"
-#else
-#include <editor/gtkhtml-editor.h>
-#include <gtkhtml/gtkhtml-stream.h>
-#include "editor/slib-editor.h"
-#endif
-
-#include "editor/link_dialog.h"
-
-#include "main/url.hh"
-#include "main/sword.h"
-
-#include "gui/utilities.h"
-#include "gui/debug_glib_null.h"
-/************* begin link dialog ****************/
-static GtkWidget *window;
-static GtkWidget *entry_module;
-static GtkWidget *entry_verse;
-static GtkWidget *entry_text;
-static GtkWidget *linkage_verse_list;
-
-G_MODULE_EXPORT void entry_verse_changed_cb(GObject *object, EDITOR *e)
-{
- const gchar *verse_str = NULL;
-
- verse_str = gtk_entry_get_text(GTK_ENTRY(object));
- gtk_entry_set_text(GTK_ENTRY(entry_text), verse_str);
-}
-
-G_MODULE_EXPORT void button_ok_clicked_cb(GObject *object, EDITOR *e)
-{
- const gchar *mod_str = NULL;
- const gchar *verse_str = NULL;
- const gchar *text_str = NULL;
- const gchar *encoded_mod = NULL;
- const gchar *encoded_verse = NULL;
- GString *str = g_string_new(NULL);
- gint type = 0;
-
- mod_str = gtk_entry_get_text(GTK_ENTRY(entry_module));
- verse_str = gtk_entry_get_text(GTK_ENTRY(entry_verse));
- text_str = gtk_entry_get_text(GTK_ENTRY(entry_text));
-
- type = main_get_mod_type((gchar *)mod_str);
-
- if (mod_str)
- encoded_mod = main_url_encode(mod_str);
- if (verse_str)
- encoded_verse = main_url_encode(verse_str);
-
- g_string_printf(str,
- (((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linkage_verse_list))) && ((type == -1) || (type == TEXT_TYPE) || (type == COMMENTARY_TYPE)))
- ? "<a href=\"passagestudy.jsp?action=showRef&type=scripRef&module=%s&value=%s\">%s</a>"
- : "<a href=\"sword://%s/%s\">%s</a>"),
- (encoded_mod ? encoded_mod : ""),
- (encoded_verse ? encoded_verse : ""),
- (text_str ? text_str : ""));
-
- XI_message(("link: %s", str->str));
-
-#ifdef USE_WEBKIT_EDITOR
- editor_insert_html(str->str, e);
-#else
- gtkhtml_editor_insert_html(GTKHTML_EDITOR(e->window), str->str);
-#endif
- g_string_free(str, TRUE);
- g_free((gchar *)encoded_mod);
- g_free((gchar *)encoded_verse);
-
- gtk_widget_destroy(GTK_WIDGET(window));
-}
-
-G_MODULE_EXPORT
-void button_test_clicked_cb(GObject *object, gpointer user_data)
-{
- const gchar *mod_str = NULL;
- const gchar *verse_str = NULL;
- const gchar *encoded_mod = NULL;
- const gchar *encoded_verse = NULL;
- GString *str = g_string_new(NULL);
-
- mod_str = gtk_entry_get_text(GTK_ENTRY(entry_module));
- verse_str = gtk_entry_get_text(GTK_ENTRY(entry_verse));
-
- if (mod_str)
- encoded_mod = main_url_encode(mod_str);
- if (verse_str)
- encoded_verse = main_url_encode(verse_str);
-
- g_string_printf(str,
- "passagestudy.jsp?action=showRef&type=scripRef&module=%s&value=%s",
- (encoded_mod ? encoded_mod : ""),
- (encoded_verse ? encoded_verse : ""));
- XI_message(("link: %s", str->str));
- main_url_handler(str->str, TRUE);
- g_string_free(str, TRUE);
- g_free((gchar *)encoded_mod);
- g_free((gchar *)encoded_verse);
-}
-
-G_MODULE_EXPORT
-void button_cancel_clicked_cb(GObject *object, gpointer user_data)
-{
- gtk_widget_destroy(GTK_WIDGET(window));
-}
-
-void editor_link_dialog(EDITOR *e)
-{
- GtkBuilder *builder;
- gchar *gbuilder_file;
-
-#ifndef USE_WEBKIT_EDITOR
- GtkHTML *html = gtkhtml_editor_get_html(GTKHTML_EDITOR(e->window));
- if (html->pointer_url) /* are we in a link */
- return; /* if so don't do anything */
-#endif
-
- gbuilder_file =
- gui_general_user_file("editor_link_dialog" UI_SUFFIX, FALSE);
-
-#if GTK_CHECK_VERSION(3, 10, 0)
- builder = gtk_builder_new_from_file(gbuilder_file);
-#else
- builder = gtk_builder_new();
- gtk_builder_add_from_file(builder, gbuilder_file, NULL);
-#endif
-
- window = GTK_WIDGET(gtk_builder_get_object(builder, "dialog1"));
- set_window_icon(GTK_WINDOW(window));
- gtk_builder_connect_signals(builder, (EDITOR *)e);
-
- entry_module =
- GTK_WIDGET(gtk_builder_get_object(builder, "entry_module"));
- entry_verse =
- GTK_WIDGET(gtk_builder_get_object(builder, "entry_verse"));
- entry_text =
- GTK_WIDGET(gtk_builder_get_object(builder, "entry_text"));
- linkage_verse_list =
- GTK_WIDGET(gtk_builder_get_object(builder, "radio_verse_list"));
-
- g_object_unref(G_OBJECT(builder));
- gtk_widget_show(window);
-}
-
-/************* end link dialog ****************/
+// empty
diff --git a/src/editor/link_dialog.h b/src/editor/link_dialog.h
index 9a536f5..8b1a393 100644
--- a/src/editor/link_dialog.h
+++ b/src/editor/link_dialog.h
@@ -1,49 +1 @@
-/*
- * Xiphos Bible Study Tool
- * link_dialog.f - dialog for inserting a link
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _LINK_DIALOG_H
-#define _LINK_DIALOG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <config.h>
-#include <glib.h>
-
-#ifdef USE_WEBKIT_EDITOR
-#include "editor/webkit_editor.h"
-#include "editor/editor.h"
-#else
-#include "editor/slib-editor.h"
-#endif
-
-void editor_link_dialog(EDITOR *e);
-void entry_verse_changed_cb(GObject *object, EDITOR *e);
-void button_ok_clicked_cb(GObject *object, EDITOR *e);
-void button_test_clicked_cb(GObject *object, gpointer user_data);
-void button_cancel_clicked_cb(GObject *object,
- gpointer user_data);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _LINK_DIALOG_H */
+// empty
diff --git a/src/editor/slib-editor.c b/src/editor/slib-editor.c
index c940778..8b1a393 100644
--- a/src/editor/slib-editor.c
+++ b/src/editor/slib-editor.c
@@ -1,1476 +1 @@
-/*
- * Xiphos Bible Study Tool
- * html-editor.c - the html editor
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#ifndef USE_WEBKIT_EDITOR
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include <glib.h>
-
-#include <libintl.h>
-#include <locale.h>
-#include <stdlib.h>
-#include <glib/gi18n.h>
-#include <gio/gio.h>
-#include <editor/gtkhtml-editor.h>
-#include <gtkhtml/gtkhtml-stream.h>
-
-#include "editor/slib-editor.h"
-#include "editor/link_dialog.h"
-
-#include "main/settings.h"
-#include "main/sword_treekey.h"
-#include "main/sword.h"
-#include "main/url.hh"
-#include "main/xml.h"
-
-#include "gui/navbar_versekey_editor.h"
-#include "gui/dialog.h"
-#include "gui/widgets.h"
-#include "gui/xiphos.h"
-#include "gui/treekey-editor.h"
-#include "gui/utilities.h"
-
-#include "gui/debug_glib_null.h"
-
-extern gboolean do_display;
-
-static gboolean editor_is_dirty(EDITOR *e);
-
-static int app_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data);
-
-static void _load_file(EDITOR *e, const gchar *filename);
-
-static void _save_file(EDITOR *e);
-
-static void _save_note(EDITOR *e);
-
-static void _save_book(EDITOR *e);
-
-static gint ask_about_saving(EDITOR *e);
-
-static GList *editors_all = NULL;
-
-static void handle_error(GError **error)
-{
- if (*error != NULL) {
- g_warning("%s", (*error)->message);
- g_clear_error(error);
- }
-}
-
-static void do_exit(EDITOR *e)
-{
- if (e->filename) {
- g_free(e->filename);
- }
- if (e->module) {
- g_free(e->module);
- }
- if (e->key) {
- g_free(e->key);
- }
- if (e->window)
- gtk_widget_destroy(e->window);
- g_free(e);
-}
-
-static void change_window_title(GtkWidget *window, const gchar *window_title)
-{
- gtk_window_set_title(GTK_WINDOW(window), window_title);
-}
-
-#if 0
-static gint
-_calc_header_height(GtkHTML * html, GtkPrintOperation * operation,
- GtkPrintContext * context)
-{
- PangoContext *pango_context;
- PangoFontDescription *desc;
- PangoFontMetrics *metrics;
- gint header_height;
-
- pango_context = gtk_print_context_create_pango_context(context);
- desc = pango_font_description_from_string("Sans Regular 10");
-
- metrics =
- pango_context_get_metrics(pango_context, desc,
- pango_language_get_default());
- header_height =
- pango_font_metrics_get_ascent(metrics) +
- pango_font_metrics_get_descent(metrics);
- pango_font_metrics_unref(metrics);
-
- pango_font_description_free(desc);
- g_object_unref(pango_context);
-
- return header_height;
-}
-
-static gint
-_calc_footer_height(GtkHTML * html, GtkPrintOperation * operation,
- GtkPrintContext * context)
-{
- PangoContext *pango_context;
- PangoFontDescription *desc;
- PangoFontMetrics *metrics;
- gint footer_height;
-
- pango_context = gtk_print_context_create_pango_context(context);
- desc = pango_font_description_from_string("Sans Regular 10");
-
- metrics =
- pango_context_get_metrics(pango_context, desc,
- pango_language_get_default());
- footer_height =
- pango_font_metrics_get_ascent(metrics) +
- pango_font_metrics_get_descent(metrics);
- pango_font_metrics_unref(metrics);
-
- pango_font_description_free(desc);
- g_object_unref(pango_context);
-
- return footer_height;
-}
-
-static void
-_draw_header(GtkHTML * html, GtkPrintOperation * operation,
- GtkPrintContext * context,
- gint page_nr, PangoRectangle * rec, EDITOR * e)
-{
- PangoFontDescription *desc;
- PangoLayout *layout;
- gdouble x, y;
- gchar *text;
- cairo_t *cr;
-
- text = g_strdup(e->filename);
-
- desc = pango_font_description_from_string("Sans Regular 10");
- layout = gtk_print_context_create_pango_layout(context);
- pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER);
- pango_layout_set_font_description(layout, desc);
- pango_layout_set_text(layout, text, -1);
- pango_layout_set_width(layout, rec->width);
-
- x = pango_units_to_double(rec->x);
- y = pango_units_to_double(rec->y);
-
- cr = gtk_print_context_get_cairo_context(context);
-
- cairo_save(cr);
- cairo_set_source_rgb(cr, .0, .0, .0);
- cairo_move_to(cr, x, y);
- pango_cairo_show_layout(cr, layout);
- cairo_restore(cr);
-
- g_object_unref(layout);
- pango_font_description_free(desc);
-
- g_free(text);
-}
-
-
-static void
-_draw_footer(GtkHTML * html, GtkPrintOperation * operation,
- GtkPrintContext * context,
- gint page_nr, PangoRectangle * rec, EDITOR * e)
-{
- PangoFontDescription *desc;
- PangoLayout *layout;
- gdouble x, y;
- gint n_pages;
- gchar *text;
- cairo_t *cr;
-
- g_object_get(operation, "n-pages", &n_pages, NULL);
- text = g_strdup_printf(_("Page %d of %d"), page_nr + 1, n_pages);
-
- desc = pango_font_description_from_string("Sans Regular 10");
- layout = gtk_print_context_create_pango_layout(context);
- pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER);
- pango_layout_set_font_description(layout, desc);
- pango_layout_set_text(layout, text, -1);
- pango_layout_set_width(layout, rec->width);
-
- x = pango_units_to_double(rec->x);
- y = pango_units_to_double(rec->y);
-
- cr = gtk_print_context_get_cairo_context(context);
-
- cairo_save(cr);
- cairo_set_source_rgb(cr, .0, .0, .0);
- cairo_move_to(cr, x, y);
- pango_cairo_show_layout(cr, layout);
- cairo_restore(cr);
-
- g_object_unref(layout);
- pango_font_description_free(desc);
-
- g_free(text);
-}
-
-static GtkPrintOperationResult
-_do_print(EDITOR * e, GtkPrintOperationAction action)
-{
- GtkPrintOperation *operation;
- GtkPrintSettings *psettings;
- GtkPageSetup *setup;
- GtkPrintOperationResult result;
- GError *error = NULL;
-
- operation = gtk_print_operation_new();
- psettings = gtk_print_settings_new();
-
- psettings = gtk_print_operation_get_print_settings(operation);
-
- setup = gtk_page_setup_new();
- gtk_page_setup_set_top_margin(setup, 30, GTK_UNIT_PIXEL);
- gtk_page_setup_set_left_margin(setup, 50, GTK_UNIT_PIXEL);
-
-#ifdef WIN32
- gtk_print_operation_set_unit(operation, GTK_UNIT_POINTS);
-#endif
- gtk_print_operation_set_default_page_setup(operation, setup);
-
- result = gtk_html_print_operation_run(GTK_HTML(e->html_widget), operation, action, GTK_WINDOW(e->window), (GtkHTMLPrintCalcHeight) _calc_header_height, /* GtkHTMLPrintCalcHeight calc_header_height */
- (GtkHTMLPrintCalcHeight) _calc_footer_height, /* GtkHTMLPrintCalcHeight calc_footer_height */
- (GtkHTMLPrintDrawFunc) _draw_header, /* GtkHTMLPrintDrawFunc draw_header */
- (GtkHTMLPrintDrawFunc) _draw_footer, /* GtkHTMLPrintDrawFunc draw_footer */
- e, /* gpointer user_data */
- &error);
-
- g_object_unref(operation);
- handle_error(&error);
-
- return result;
-}
-#endif /* 0 */
-
-static const gchar *file_ui =
- "<ui>\n"
- " <menubar name='main-menu'>\n"
- " <menu action='file-menu'>\n"
- " <menuitem action='open'/>\n"
- " <menuitem action='save'/>\n"
- " <menuitem action='save-as'/>\n"
- " <menuitem action='new'/>\n"
- " <separator/>\n"
- " <menuitem action='print-preview'/>\n"
- " <menuitem action='print'/>\n"
- " <separator/>\n"
- " <menuitem action='quit'/>\n"
- " </menu>\n"
- " </menubar>\n"
- "</ui>";
-
-static const gchar *note_file_ui =
- "<ui>\n"
- " <menubar name='main-menu'>\n"
- " <menu action='file-menu'>\n"
- " <menuitem action='save'/>\n"
- " <menuitem action='save-as'/>\n"
- " <menuitem action='delete'/>\n"
- " <separator/>\n"
- " <menuitem action='print-preview'/>\n"
- " <menuitem action='print'/>\n"
- " <separator/>\n"
- " <menuitem action='quit'/>\n"
- " </menu>\n"
- " </menubar>\n"
- "</ui>";
-
-static const gchar *view_ui =
- "<ui>\n"
- " <menubar name='main-menu'>\n"
- " <menu action='view-menu'>\n"
- " <menuitem action='view-html-output'/>\n"
- " <menuitem action='view-html-source'/>\n"
- " <menuitem action='view-plain-source'/>\n"
- " </menu>\n"
- " </menubar>\n"
- "</ui>";
-
-static const gchar *main_ui_note =
- "<ui>\n"
- " <toolbar name='main-toolbar'> \n"
- " <placeholder name='pre-main-toolbar'> \n"
- " <toolitem action='save'/> \n"
- " <toolitem action='delete'/> \n"
- " <separator/> \n"
- " </placeholder> \n"
- " </toolbar> \n"
- "</ui>";
-
-static const gchar *main_ui_studypad =
- "<ui>\n"
- " <toolbar name='main-toolbar'> \n"
- " <placeholder name='pre-main-toolbar'> \n"
- " <toolitem action='save'/> \n"
- " <toolitem action='new'/> \n"
- " <separator/> \n"
- " </placeholder> \n"
- " </toolbar> \n"
- "</ui>";
-
-static GtkPrintOperationResult
-print(GtkhtmlEditor *editor, GtkPrintOperationAction action)
-{
- GtkPrintOperation *operation;
- GtkPrintOperationResult result;
- GError *error = NULL;
-
- operation = gtk_print_operation_new();
-
- result =
- gtk_html_print_operation_run(gtkhtml_editor_get_html(editor),
- operation, action,
- GTK_WINDOW(editor), NULL, NULL,
- NULL, NULL, NULL, &error);
-
- g_object_unref(operation);
- handle_error(&error);
-
- return result;
-}
-
-static gint open_dialog(EDITOR *e)
-{
- GtkWidget *dialog;
- gint response;
-#if 0
- const gchar *filename;
-#endif
-
- dialog =
- gtk_file_chooser_dialog_new(_("Open"), GTK_WINDOW(e->window),
- GTK_FILE_CHOOSER_ACTION_OPEN,
-#if GTK_CHECK_VERSION(3, 10, 0)
- _("_Cancel"), GTK_RESPONSE_CANCEL,
- _("_Open"), GTK_RESPONSE_ACCEPT,
-#else
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
-#endif
- NULL);
-
-/*gtk_file_chooser_set_do_overwrite_confirmation (
- GTK_FILE_CHOOSER (dialog), TRUE); */
-
-#if 0
- filename = gtkhtml_editor_get_filename(GTKHTML_EDITOR(e->window));
-#endif
-
- gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),
- settings.studypaddir);
-
- 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 (e->window, new_filename);
- _load_file(e, new_filename);
- g_free(new_filename);
- }
-
- gtk_widget_destroy(dialog);
-
- return response;
-}
-
-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,
-#if GTK_CHECK_VERSION(3, 10, 0)
- _("_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;
-}
-
-/* Helper for view_source_dialog() */
-static gboolean
-view_source_dialog_receiver(HTMLEngine *engine,
- const gchar *data,
- guint length, GString *string)
-{
- g_string_append_len(string, data, length);
-
- return TRUE;
-}
-
-static void
-view_source_dialog(GtkhtmlEditor *editor,
- const gchar *title,
- const gchar *content_type, gboolean show_output)
-{
- GtkWidget *dialog;
- GtkWidget *content;
- GtkWidget *scrolled_window;
- GString *string;
-
- dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(editor),
- GTK_DIALOG_DESTROY_WITH_PARENT,
-#if GTK_CHECK_VERSION(3, 10, 0)
- _("_Close"), GTK_RESPONSE_CLOSE,
-#else
- GTK_STOCK_CLOSE,
- GTK_RESPONSE_CLOSE,
-#endif
- NULL);
-
- scrolled_window = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window),
- GTK_SHADOW_IN);
- gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), scrolled_window, TRUE,
- TRUE, 0);
-
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 6);
- gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 6);
- gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 300);
-
- string = g_string_sized_new(4096);
-
- gtk_html_export(gtkhtml_editor_get_html(editor),
- content_type, (GtkHTMLSaveReceiverFn)
- view_source_dialog_receiver,
- string);
-
- if (show_output) {
- GtkHTMLStream *stream;
-
- content = gtk_html_new();
- stream = gtk_html_begin(GTK_HTML(content));
- gtk_html_stream_write(stream, string->str, string->len);
- gtk_html_stream_close(stream, GTK_HTML_STREAM_OK);
- } else {
- GtkTextBuffer *buffer;
-
- content = gtk_text_view_new();
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(content));
- gtk_text_buffer_set_text(buffer, string->str, string->len);
- gtk_text_view_set_editable(GTK_TEXT_VIEW(content), FALSE);
- }
-
- g_string_free(string, TRUE);
-
- gtk_container_add(GTK_CONTAINER(scrolled_window), content);
- gtk_widget_show_all(scrolled_window);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-}
-
-static void action_print_cb(GtkAction *action, EDITOR *e)
-{
- print(GTKHTML_EDITOR(e->window),
- GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG);
-}
-
-static void action_print_preview_cb(GtkAction *action, EDITOR *e)
-{
- print(GTKHTML_EDITOR(e->window),
- GTK_PRINT_OPERATION_ACTION_PREVIEW);
-}
-
-static void action_quit_cb(GtkAction *action, EDITOR *e)
-{
- app_delete_cb(NULL, NULL, e);
-}
-
-static void action_open_cb(GtkAction *action, EDITOR *e)
-{
- open_dialog(e);
-}
-
-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;
- }
-}
-
-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);
-}
-
-static void action_delete_cb(GtkAction *action, EDITOR *e)
-{ /* for note only */
-
- gchar *buf;
-
- if (e->studypad)
- return;
-
- 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,
-#if GTK_CHECK_VERSION(3, 10, 0)
- "dialog-warning"
-#else
- GTK_STOCK_DIALOG_WARNING
-#endif
- )) {
- main_delete_note(e->module, e->key);
- gtkhtml_editor_set_text_html(GTKHTML_EDITOR(e->window),
- "", strlen(""));
- }
- g_free(buf);
-}
-
-static void action_insert_link_cb(GtkAction *action, EDITOR *e)
-{
- editor_link_dialog(e);
-}
-
-static void action_save_as_cb(GtkAction *action, EDITOR *e)
-{
- const gchar *filename;
- gboolean as_html;
- GError *error = 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));
-
- gtkhtml_editor_save(GTKHTML_EDITOR(e->window), filename, as_html,
- &error);
- handle_error(&error);
-}
-
-static void
-action_view_html_output(GtkAction *action, GtkhtmlEditor *editor)
-{
- view_source_dialog(editor, _("HTML Output"), "text/html", TRUE);
-}
-
-static void
-action_view_html_source(GtkAction *action, GtkhtmlEditor *editor)
-{
- view_source_dialog(editor, _("HTML Source"), "text/html", FALSE);
-}
-
-static void
-action_view_plain_source(GtkAction *action, GtkhtmlEditor *editor)
-{
- view_source_dialog(editor, _("Plain Source"), "text/plain", FALSE);
-}
-
-static GtkActionEntry file_entries[] = {
-
- {"print",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Print...",
-#else
- GTK_STOCK_PRINT,
-#endif
- N_("_Print..."),
- NULL,
- NULL,
- G_CALLBACK(action_print_cb)},
-
- {"print-preview",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "Print Pre_view...",
-#else
- GTK_STOCK_PRINT_PREVIEW,
-#endif
- N_("Print Pre_view"),
- NULL,
- NULL,
- G_CALLBACK(action_print_preview_cb)},
-
- {"quit",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Quit...",
-#else
- GTK_STOCK_QUIT,
-#endif
- N_("_Quit"),
- NULL,
- NULL,
- G_CALLBACK(action_quit_cb)},
-
- {"open",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Open",
-#else
- GTK_STOCK_OPEN,
-#endif
- N_("_Open"),
- NULL,
- NULL,
- G_CALLBACK(action_open_cb)},
-
- {"save",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Save",
-#else
- GTK_STOCK_SAVE,
-#endif
- N_("_Save"),
- NULL,
- NULL,
- G_CALLBACK(action_save_cb)},
-
- {"save-as",
-#if GTK_CHECK_VERSION(3, 10, 0)
- "Save _As...",
-#else
- GTK_STOCK_SAVE_AS,
-#endif
- N_("Save _As..."),
- NULL,
- NULL,
- G_CALLBACK(action_save_as_cb)},
- {"new",
- "gtk-new",
- N_("New"),
- NULL,
- N_("Open new document"),
- G_CALLBACK(action_new_cb)},
- {"delete",
- "gtk-delete",
- N_("Delete"),
- NULL,
- N_("Delete current note"),
- G_CALLBACK(action_delete_cb)},
-
- {"file-menu",
- NULL,
- N_("_File"),
- NULL,
- NULL,
- NULL}};
-
-/*
-static GtkActionEntry note_file_entries[] = {
-
- { "print",
- GTK_STOCK_PRINT,
- N_("_Print..."),
- NULL,
- NULL,
- G_CALLBACK (action_print_cb) },
-
- { "print-preview",
- GTK_STOCK_PRINT_PREVIEW,
- N_("Print Pre_view"),
- NULL,
- NULL,
- G_CALLBACK (action_print_preview_cb) },
-
- { "quit",
- GTK_STOCK_QUIT,
- N_("_Quit"),
- NULL,
- NULL,
- G_CALLBACK (action_quit_cb) },
-
- { "save",
- GTK_STOCK_SAVE,
- N_("_Save"),
- NULL,
- NULL,
- G_CALLBACK (action_save_cb) },
-
- { "save-as",
- GTK_STOCK_SAVE_AS,
- N_("Save _As..."),
- NULL,
- NULL,
- G_CALLBACK (action_save_as_cb) },
-
- { "file-menu",
- NULL,
- N_("_File"),
- NULL,
- NULL,
- NULL }
-};
-*/
-static GtkActionEntry view_entries[] = {
-
- {"view-html-output",
- NULL,
- N_("HTML _Output"),
- NULL,
- NULL,
- G_CALLBACK(action_view_html_output)},
-
- {"view-html-source",
- NULL,
- N_("_HTML Source"),
- NULL,
- NULL,
- G_CALLBACK(action_view_html_source)},
-
- {"view-plain-source",
- NULL,
- N_("_Plain Source"),
- NULL,
- NULL,
- G_CALLBACK(action_view_plain_source)},
-
- {"view-menu",
- NULL,
- N_("_View"),
- NULL,
- NULL,
- NULL}};
-
-static GtkActionEntry main_entries[] = {
-
- {"save",
- "gtk-save",
- N_("Save"),
- NULL,
- NULL,
- G_CALLBACK(action_save_cb)}};
-
-static GtkActionEntry test_entries[] = {
-
- {"context-insert-link",
- "insert-link",
- N_("Insert Link"),
- NULL,
- NULL,
- G_CALLBACK(action_insert_link_cb)},
-
- {"insert-link",
- "insert-link",
- N_("Insert Link"),
- NULL,
- NULL,
- G_CALLBACK(action_insert_link_cb)}};
-
-GtkWidget *editor_new(const gchar *title, EDITOR *e)
-{
- GtkActionGroup *action_group;
- GtkUIManager *manager;
- GtkWidget *editor;
- GError *error = NULL;
-
- editor = gtkhtml_editor_new();
- e->window = editor;
- e->html_widget =
- GTK_WIDGET(gtkhtml_editor_get_html(GTKHTML_EDITOR(editor)));
- gtk_window_set_title(GTK_WINDOW(editor), title);
-
- set_window_icon(GTK_WINDOW(editor));
-
- manager = gtkhtml_editor_get_ui_manager(GTKHTML_EDITOR(editor));
- if (e->type == STUDYPAD_EDITOR)
- gtk_ui_manager_add_ui_from_string(manager, file_ui, -1,
- &error);
- else
- gtk_ui_manager_add_ui_from_string(manager, note_file_ui,
- -1, &error);
-
- handle_error(&error);
-
- gtk_ui_manager_add_ui_from_string(manager, view_ui, -1, &error);
- handle_error(&error);
-
- if (e->type == STUDYPAD_EDITOR)
- gtk_ui_manager_add_ui_from_string(manager,
- main_ui_studypad, -1,
- &error);
- else
- gtk_ui_manager_add_ui_from_string(manager, main_ui_note,
- -1, &error);
-
- handle_error(&error);
-
- action_group = gtk_action_group_new("file");
- gtk_action_group_set_translation_domain(action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions(action_group, file_entries,
- G_N_ELEMENTS(file_entries), e);
- gtk_ui_manager_insert_action_group(manager, action_group, 0);
-
- action_group = gtk_action_group_new("view");
- gtk_action_group_set_translation_domain(action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions(action_group, view_entries,
- G_N_ELEMENTS(view_entries), editor);
- gtk_ui_manager_insert_action_group(manager, action_group, 0);
-
- action_group = gtk_action_group_new("main");
- gtk_action_group_set_translation_domain(action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions(action_group, main_entries,
- G_N_ELEMENTS(main_entries), e);
- gtk_ui_manager_insert_action_group(manager, action_group, 0);
-
- action_group = gtk_action_group_new("context-menu");
- gtk_action_group_set_translation_domain(action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions(action_group, test_entries,
- G_N_ELEMENTS(test_entries), e);
- gtk_ui_manager_insert_action_group(manager, action_group, 0);
-
- gtk_ui_manager_ensure_update(manager);
- gtk_widget_show(editor);
-
- gtkhtml_editor_drop_undo(GTKHTML_EDITOR(e->window));
- gtkhtml_editor_set_changed(GTKHTML_EDITOR(e->window), FALSE);
-
- g_signal_connect(editor, "delete-event",
- G_CALLBACK(app_delete_cb), (EDITOR *)e);
- return editor;
-}
-
-/* Helper for _save_note() and _save_book()*/
-static gboolean
-_save_receiver(HTMLEngine *engine,
- const gchar *data, guint length, GString *string)
-{
- g_string_append_len(string, data, length);
-
- return 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 _save_book(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);
-
- main_treekey_save_book_text(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 _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);
-}
-
-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;
-}
-
-gboolean editor_is_dirty(EDITOR *e)
-{
- return gtkhtml_editor_get_changed(GTKHTML_EDITOR(e->window));
-}
-
-void editor_save_book(EDITOR *e)
-{
- if (editor_is_dirty(e)) {
- _save_book(e);
- }
-}
-
-/* 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);
-}
-
-/******************************************************************************
- * Name
- * sync_toggled
- *
- * Synopsis
- * #include "/.h"
- *
- * void sync_toggled(GtkToggleButton * button, DIALOG_DATA * vc)
- *
- * Description
- *
- *
- * Return value
- * void
- */
-
-void editor_sync_with_main(void)
-{
- GList *tmp = NULL;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- EDITOR *e = (EDITOR *)tmp->data;
-
- switch (e->type) {
- case STUDYPAD_EDITOR:
- case BOOK_EDITOR:
- break;
- case NOTE_EDITOR:
- if (e->sync)
- editor_load_note(e, NULL,
- settings.currentverse);
- break;
- }
- tmp = g_list_next(tmp);
- }
-}
-
-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);
-}
-
-static int
-app_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- if (editor_is_dirty((EDITOR *)data)) {
- switch (ask_about_saving((EDITOR *)data)) {
- case GS_YES: /* exit saving */
-
- break;
- case GS_NO: /* exit without saving */
-
- break;
- case GS_CANCEL:
- return TRUE;
- break;
- }
- }
- editors_all = g_list_remove(editors_all, (EDITOR *)data);
- do_exit((EDITOR *)data);
- return FALSE;
-}
-
-static gint ask_about_saving(EDITOR *e)
-{
- gint test;
- GS_DIALOG *info;
- gchar *buf = NULL;
- gchar *buf1 = NULL;
- gchar *buf2 = NULL;
- gchar *buf3 = NULL;
- gint retval = FALSE;
-
- switch (e->type) {
- case BOOK_EDITOR:
- case NOTE_EDITOR:
- info = gui_new_dialog();
- info->stock_icon = GTK_STOCK_DIALOG_WARNING;
-
- buf = g_strdup_printf("%s: %s", e->module, e->key);
- buf1 = _("Save the changes to document");
- buf2 = _("before closing?");
- buf3 =
- g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s %s %s</span>",
- buf1, buf, buf2);
- info->label_top = buf3;
- info->label2 = _("If you don't save, changes will be permanently lost.");
- info->save = TRUE;
- info->cancel = TRUE;
- info->no_save = TRUE;
-
- test = gui_alert_dialog(info);
- retval = test;
-
- if (test == GS_YES) {
- if (e->type == NOTE_EDITOR) {
- /* save notes and prayer lists */
- _save_note(e);
-
- } else {
- /* save notes and prayer lists */
- _save_book(e);
- }
- }
- g_free(info);
- g_free(buf);
- g_free(buf3);
- break;
-
- case STUDYPAD_EDITOR:
- info = gui_new_dialog();
- info->stock_icon =
-#if GTK_CHECK_VERSION(3, 10, 0)
- "dialog-warning";
-#else
- GTK_STOCK_DIALOG_WARNING;
-#endif
- if (settings.studypadfilename)
- buf = settings.studypadfilename;
- else
- buf = N_("File");
- buf1 = _("Save the changes to document");
- buf2 = _("before closing?");
- buf3 =
- g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s %s %s</span>",
- buf1, buf, buf2);
- info->label_top = buf3;
- info->label2 = _("If you don't save, changes will be permanently lost.");
- info->save = TRUE;
- info->cancel = TRUE;
- info->no_save = TRUE;
-
- test = gui_alert_dialog(info);
- retval = test;
- if (test == GS_YES) {
- if (e->filename)
- gtkhtml_editor_save(GTKHTML_EDITOR(e->window),
- e->filename, TRUE,
- NULL);
- /*else
- open_or_save_as_dialog(e,
- OP_SAVE_THROUGH_PERSIST_FILE); */
- }
- g_free(info);
- g_free(buf3);
- break;
- }
- sync_windows();
- return retval;
-}
-
-static gint _create_new(const gchar *filename, const gchar *key,
- gint editor_type)
-{
- EDITOR *editor;
- GtkWidget *vbox = NULL;
- GtkWidget *toolbar_nav = NULL;
-
- editor = g_new(EDITOR, 1);
- editor->html_widget = NULL;
- editor->sync = FALSE;
- editor->type = editor_type;
-
- switch (editor_type) {
- case STUDYPAD_EDITOR:
- editor->studypad = TRUE;
- editor->bookeditor = FALSE;
- editor->noteeditor = FALSE;
- editor->module = NULL;
- editor->key = NULL;
- editor->filename = NULL;
- widgets.studypad_dialog =
- editor_new(_("StudyPad"), editor);
-
- if (filename) {
- editor->filename = g_strdup(filename);
- _load_file(editor, g_strdup(filename));
- }
- break;
- case NOTE_EDITOR:
- editor->noteeditor = TRUE;
- editor->bookeditor = FALSE;
- editor->studypad = FALSE;
- editor->filename = NULL;
- editor->module = g_strdup(filename);
- editor->key = g_strdup(key);
- editor->navbar.key = NULL;
- editor_new(_("Note Editor"), editor);
- vbox = GTKHTML_EDITOR(editor->window)->vbox;
- toolbar_nav = gui_navbar_versekey_editor_new(editor);
- gtk_widget_show(toolbar_nav);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(toolbar_nav),
- FALSE, TRUE, 0);
- gtk_box_reorder_child(GTK_BOX(vbox),
- GTK_WIDGET(toolbar_nav), 1);
-
- editor_load_note(editor, NULL, NULL);
- break;
- case BOOK_EDITOR:
- editor->bookeditor = TRUE;
- editor->noteeditor = FALSE;
- editor->studypad = FALSE;
- editor->filename = NULL;
- editor->module = g_strdup(filename);
- editor->key = g_strdup(key);
- editor_new(_("Prayer List/Journal Editor"), editor);
-
- GtkWidget *box;
- UI_VBOX(box, TRUE, 0);
- gtk_widget_show(box);
- GtkWidget *hpaned1 = UI_HPANE();
- gtk_widget_show(hpaned1);
- gtk_paned_pack2(GTK_PANED(hpaned1), box, TRUE, TRUE);
-
- GtkWidget *scrollbar = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrollbar);
- gtk_paned_pack1(GTK_PANED(hpaned1), GTK_WIDGET(scrollbar),
- TRUE, TRUE);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollbar),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type((GtkScrolledWindow *)
- scrollbar,
- settings.shadow_type);
-
- editor->treeview = gui_create_editor_tree(editor);
- gtk_widget_show(editor->treeview);
- gtk_container_add(GTK_CONTAINER(scrollbar),
- editor->treeview);
- gtk_paned_set_position(GTK_PANED(hpaned1), 125);
- gtk_tree_view_collapse_all((GtkTreeView *)
- editor->treeview);
- // then we should expand on the item to which we've opened for edit.
- vbox = GTKHTML_EDITOR(editor->window)->vbox;
-
- gtk_widget_reparent(vbox, box);
-
- gtk_container_add(GTK_CONTAINER(editor->window), hpaned1);
-
- editor_load_book(editor);
-
- break;
- }
- editor->is_changed = FALSE;
- editors_all = g_list_append(editors_all, (EDITOR *)editor);
- return 1;
-}
-
-/******************************************************************************
- * Name
- * editor_create_new
- *
- * Synopsis
- * #include "editor/html-editor.h"
- *
- * gint editor_create_new(const gchar * filename, const gchar * key, gint note)
- *
- * Description
- * limits editors to one note editor and one studypad open at a time
- *
- * Return value
- * gint
- */
-
-gint editor_create_new(const gchar *filename, const gchar *key,
- gint editor_type)
-{
- GList *tmp = NULL;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- EDITOR *e = (EDITOR *)tmp->data;
- switch (editor_type) {
- case STUDYPAD_EDITOR:
- if (e->studypad) {
- if (editor_is_dirty(e))
- _save_file(e);
- if (e->filename)
- g_free(e->filename);
- e->filename = g_strdup(filename);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
-
- _load_file(e, g_strdup(filename));
- return 1;
- }
- break;
- case NOTE_EDITOR:
- if (!e->noteeditor)
- break;
- if (editor_is_dirty(e))
- _save_note(e);
- if (e->module)
- g_free(e->module);
- e->module = g_strdup(filename);
- if (e->key)
- g_free(e->key);
- e->key = g_strdup(key);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
-
- editor_load_note(e, NULL, NULL);
-
- return 1;
- break;
- case BOOK_EDITOR:
- if (!e->bookeditor)
- break;
- if (editor_is_dirty(e))
- _save_book(e);
- if (e->module)
- g_free(e->module);
- e->module = g_strdup(filename);
- if (e->key)
- g_free(e->key);
- e->key = g_strdup(key);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
- main_load_book_tree_in_editor(GTK_TREE_VIEW(e->treeview),
- e->module);
- editor_load_book(e);
-
- return 1;
- break;
- }
- tmp = g_list_next(tmp);
- }
- XI_message(("filename %s, key %s",
- (filename ? filename : "-null-"),
- (key ? key : "-null-")));
- return _create_new(filename, key, editor_type);
-}
-
-void editor_maybe_save_all(void)
-{
- GList *tmp, *tmp2;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- /* 2ndary list chaser:
- elements will be removed by the saver. */
- tmp2 = g_list_next(tmp);
-
- app_delete_cb(NULL, NULL, (EDITOR *)tmp->data);
- tmp = tmp2;
- }
-}
-
-#endif /* !USE_WEBKIT_EDITOR */
+// empty
diff --git a/src/editor/slib-editor.h b/src/editor/slib-editor.h
index 4cc1615..8b1a393 100644
--- a/src/editor/slib-editor.h
+++ b/src/editor/slib-editor.h
@@ -1,86 +1 @@
-/*
- * Xiphos Bible Study Tool
- * slib-editor.h - the html editor using gtkhtml-editor (slib)
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _SLIB_EDITOR_H
-#define _SLIB_EDITOR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <config.h>
-
-#ifndef USE_WEBKIT_EDITOR
-
-#include <gtk/gtk.h>
-
-#include "main/navbar_versekey.h"
-
-typedef struct _editor EDITOR;
-struct _editor
-{
- GtkWidget *window;
- GtkWidget *toolbar;
- GtkWidget *treeview;
- GtkWidget *sync_button;
- GtkWidget *html_widget;
- GtkWidget *statusbar;
-
- NAVBAR_VERSEKEY navbar;
-
- gint type;
-
- gboolean studypad;
- gboolean noteeditor;
- gboolean bookeditor;
- gboolean is_changed;
- gboolean sync;
-
- gchar *filename;
- gchar *module;
- gchar *key;
-};
-
-enum {
- STUDYPAD_EDITOR,
- NOTE_EDITOR,
- BOOK_EDITOR
-};
-
-/*
-void button_test_clicked_cb(GtkObject *object, gpointer user_data);
-void button_ok_clicked_cb(GtkObject *object, gpointer user_data);
-void button_cancel_clicked_cb(GtkObject *object, gpointer user_data);*/
-void editor_sync_with_main(void);
-void editor_load_note(EDITOR *e, const gchar *module_name,
- const gchar *key);
-void editor_load_book(EDITOR *e);
-gint editor_create_new(const gchar *filename, const gchar *key,
- gint note);
-void editor_save_book(EDITOR *e);
-void editor_maybe_save_all(void);
-GtkWidget *editor_new(const gchar *title, EDITOR *e);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !USE_WEBKIT_EDITOR */
-#endif /* _SLIB_EDITOR_H */
+// empty
diff --git a/src/editor/template.h b/src/editor/template.h
index 3afdf7d..8b1a393 100644
--- a/src/editor/template.h
+++ b/src/editor/template.h
@@ -1,72 +1 @@
-/*
- * Xiphos Bible Study Tool
- * template.h - data for studypad template (webkit editor)
- *
- * ** this is used by settings only if studypad.spt does not exist **
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#define studypad_template \
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\
-<html>\n\
-<head>\n\
-<title>studypad template</title>\n\
-<meta name=\"generator\" content=\"Studypad\">\n\
-<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n\
-<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\">\n\
-<meta http-equiv=\"content-style-type\" content=\"text/css\">\n\
-<meta http-equiv=\"expires\" content=\"0\">\n\
-<style content=\"text/css\">\n\
- a { text-decoration:none; } \n\
- span.M1 { \n\
- font-family:Droid Sans,sans-serif; \n\
- font-size: 14px; \n\
- font-weight: normal; \n\
- } \n\
- span.acrostic { text-align: center; } \n\
- span.divineName { font-variant: small-caps; } \n\
- span.selah { text-align: right; width: 50%; margin: 0; padding: 0; } \n\
- span.small-caps { font-variant: small-caps; } \n\
- span.transChangeSupplied { font-style: italic; } \n\
- span.wordsOfJesus { color: red; } \n\
-ol.L1 { \n\
- list-style-type: upper-roman; \n\
- font-weight: normal; \n\
- margin-left: -10px; \n\
-} \n\
-ol.L2 { \n\
- list-style-type: upper-alpha; \n\
- font-weight: normal; \n\
- margin-left: -6px; \n\
-} \n\
-ol.L3 { \n\
- list-style-type: decimal; \n\
- font-weight: normal; \n\
- margin-left: 5px; \n\
-} \n\
-ol.L4 { \n\
- list-style-type: lower-alpha; \n\
- font-weight: normal; \n\
- margin-left: 10px; \n\
-} \n\
-</style>\n\
-</head>\n\
-<body>\n\
-\n\
-</body>\n\
-</html>\n"
+// empty
diff --git a/src/editor/webkit_editor.c b/src/editor/webkit_editor.c
index 576efee..8b1a393 100644
--- a/src/editor/webkit_editor.c
+++ b/src/editor/webkit_editor.c
@@ -1,1432 +1 @@
-/*
- * Xiphos Bible Study Tool
- * webkit_editor.c - html editor using webkit
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#ifdef USE_WEBKIT_EDITOR
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <ctype.h>
-
-#include <glib.h>
-#include <webkit/webkit.h>
-
-#include <libintl.h>
-#include <locale.h>
-#include <stdlib.h>
-#include <glib/gi18n.h>
-#include <gio/gio.h>
-
-#include "editor/webkit_editor.h"
-#include "editor/editor.h"
-#include "editor/link_dialog.h"
-
-#include "main/settings.h"
-#include "main/sword.h"
-#include "main/sword_treekey.h"
-#include "main/url.hh"
-#include "main/xml.h"
-
-#include "gui/navbar_versekey_editor.h"
-#include "gui/dialog.h"
-#include "gui/widgets.h"
-#include "gui/xiphos.h"
-#include "gui/treekey-editor.h"
-#include "gui/utilities.h"
-
-#include "gui/debug_glib_null.h"
-//TOOL_ITEMS toolitems;
-MENU popup;
-FIND_DIALOG find_dialog;
-
-extern gboolean do_display;
-extern BUTTONS_STATE buttons_state;
-
-static void change_window_title(GtkWidget *window, const gchar *window_title);
-
-static gboolean editor_is_dirty(EDITOR *e);
-
-static void _load_file(EDITOR *e, const gchar *filename);
-static void _save_file(EDITOR *e);
-static void _save_note(EDITOR *e);
-static void _save_book(EDITOR *e);
-
-static GList *editors_all = NULL;
-
-/******************************************************************************
- * Name
- * on_about_dialog_response
- *
- * Synopsis
- * #include "gui/.h"
- *
- * void on_about_dialog_response(GtkDialog * dialog, gint response_id,
- * gpointer user_data)
- *
- * Description
- *
- * Return value
- * void
- */
-
-static void
-on_about_dialog_response(GtkDialog *dialog,
- gint response_id, gpointer user_data)
-{
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-
-/******************************************************************************
- * Name
- * action_about_activate_cb
- *
- * Synopsis
- * #include "gui/about_sword.h"
- *
- * void action_about_activate_cb(GtkWidget *widget, EDITOR *e);
- *
- * Description
- * Create brief dialog for webkit editor.
- *
- * Return value
- * void
- */
-
-G_MODULE_EXPORT void
-action_about_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- GtkWidget *about;
- GdkPixbuf *about_logo;
-
- about_logo = pixbuf_finder("xiphos-button-125.png", 0, NULL);
- about = gtk_about_dialog_new();
-
- g_signal_connect(about, "response",
- G_CALLBACK(on_about_dialog_response), NULL);
- gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), "WebKit editor, Xiphos");
- gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), (gchar *)VERSION);
- gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), "Replacement for gtkhtml editor");
- gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), about_logo);
- set_window_icon(GTK_WINDOW(about));
- gtk_widget_show(about);
-}
-
-G_MODULE_EXPORT void
-action_increase_indent_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('Indent', false, false);", e);
- editor_insert_new_outline_level(e->toolitems.outline_level, e);
-}
-
-G_MODULE_EXPORT void
-action_decrease_indent_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('Outdent', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_insert_rule_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_insert_html("<hr>", e);
-}
-
-G_MODULE_EXPORT void
-action_insert_table_activate_cb(GtkWidget *widget, EDITOR *e)
-{
-}
-
-G_MODULE_EXPORT void
-action_insert_emoticon_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- // This is stupid, if we don't have emoticons working, then we sould
- // remove the button users see.
-
- //script = g_strdup ("document.execCommand('', null, \"\");");
-}
-
-G_MODULE_EXPORT void
-action_insert_image_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- gchar *filename = NULL;
-
- GtkWidget *dialog = gtk_file_chooser_dialog_new("Select an image file",
- NULL,
- GTK_FILE_CHOOSER_ACTION_OPEN,
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Cancel", GTK_RESPONSE_CANCEL,
- "_OK", GTK_RESPONSE_ACCEPT,
-#else
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
-#endif
- NULL);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
- filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- gchar *script = g_strdup_printf("document.execCommand('insertImage', null, '%s');", filename);
- editor_execute_script(script, e);
- g_free(script);
- }
-
- if (filename)
- g_free(filename);
- gtk_widget_destroy(dialog);
-}
-
-G_MODULE_EXPORT void
-action_insert_outline_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('insertHTML', null, \"<OL CLASS=L1><LI> </LI></OL> \");", e);
-}
-
-G_MODULE_EXPORT void
-action_justify_right_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('justifyright', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_justify_left_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('justifyleft', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_justify_center_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('justifycenter', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_justify_full_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('justifyfull', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_bold_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- if (buttons_state.nochange)
- return;
-
- editor_execute_script("document.execCommand('bold',false,false);", e);
-}
-
-G_MODULE_EXPORT void
-action_italic_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- //extern BUTTONS_STATE buttons_state;
- if (buttons_state.nochange)
- return;
-
- editor_execute_script("document.execCommand('italic',false,false);", e);
-}
-
-G_MODULE_EXPORT void
-action_undo_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('undo',false,false);", e);
-}
-
-G_MODULE_EXPORT void
-action_redo_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_execute_script("document.execCommand('redo',false,false);", e);
-}
-
-G_MODULE_EXPORT void
-action_underline_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- //extern BUTTONS_STATE buttons_state;
- if (buttons_state.nochange)
- return;
-
- editor_execute_script("document.execCommand('underline', false, false);", e);
-}
-
-G_MODULE_EXPORT void
-action_strikethrough_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- //extern BUTTONS_STATE buttons_state;
- if (buttons_state.nochange)
- return;
-
- editor_execute_script("document.execCommand('strikethrough', false, false);", e);
-}
-
-G_MODULE_EXPORT void action_cut_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_cut(e);
-}
-
-G_MODULE_EXPORT void
-action_copy_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- if (editor_copy(e))
- XI_message(("%s", "copy success"));
- else
- XI_message(("%s", "copy failed"));
-}
-
-G_MODULE_EXPORT void
-action_paste_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_paste(e);
-}
-
-G_MODULE_EXPORT void
-action_delete_activate_cb(GtkWidget *widget, EDITOR *e)
-{
-}
-
-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,
-#if GTK_CHECK_VERSION(3, 10, 0)
- "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;
-}
-
-void set_button_state(BUTTONS_STATE state, EDITOR *e)
-{
-#if GTK_CHECK_VERSION(3, 4, 0)
- 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));
-#if GTK_CHECK_VERSION(3, 4, 0)
- 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
- }
-}
-
-G_MODULE_EXPORT void
-colorbutton1_color_set_cb(GtkColorButton *widget, EDITOR *e)
-{
-#if GTK_CHECK_VERSION(3, 4, 0)
- GdkRGBA color;
-#else
- GdkColor color;
-#endif
- gchar *color_str;
- gchar *forecolor = NULL;
-
-#if GTK_CHECK_VERSION(3, 4, 0)
- gtk_color_chooser_get_rgba((GtkColorChooser *)widget, &color);
- color_str = gdk_rgba_to_string(&color);
-#else
- gtk_color_button_get_color((GtkColorButton *)widget, &color);
- /* FIXME: ugly need something better */
- color_str = g_strdup_printf("rgb(%u,%u,%u)", color.red >> 8, color.green >> 8, color.blue >> 8);
-#endif
- forecolor = g_strdup_printf("document.execCommand('forecolor', null, '%s');", color_str);
- editor_execute_script(forecolor, e);
- g_free(forecolor);
- g_free(color_str);
-}
-
-G_MODULE_EXPORT void
-colorbutton_highlight_color_set_cb(GtkColorButton *widget, EDITOR *e)
-{
-
-#if GTK_CHECK_VERSION(3, 4, 0)
- GdkRGBA color;
-#else
- GdkColor color;
-#endif
- gchar *color_str;
- gchar *highlightcolor = NULL;
-
-#if GTK_CHECK_VERSION(3, 4, 0)
- gtk_color_chooser_get_rgba((GtkColorChooser *)widget, &color);
- color_str = gdk_rgba_to_string(&color);
-#else
- gtk_color_button_get_color((GtkColorButton *)widget, &color);
- /* FIXME: ugly need something better */
- color_str = g_strdup_printf("rgb(%u,%u,%u)", color.red >> 8, color.green >> 8, color.blue >> 8);
-#endif
- highlightcolor = g_strdup_printf("document.execCommand('backColor', null, '%s');", color_str);
- editor_execute_script(highlightcolor, e);
- g_free(highlightcolor);
- g_free(color_str);
-}
-
-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);
-}
-
-G_MODULE_EXPORT void
-action_font_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- GtkWidget *dialog;
- gchar *selected_text = NULL;
- gchar *size = NULL;
-#if GTK_CHECK_VERSION(3, 2, 0)
- dialog = gtk_font_chooser_dialog_new("Select font", NULL);
- gtk_font_chooser_set_font((GtkFontChooser *)dialog,
-#else
- dialog = gtk_font_selection_dialog_new("Select font");
- gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)
- dialog,
-#endif
- "Droid Sans 14");
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
-#if GTK_CHECK_VERSION(3, 2, 0)
- const gchar *fontname = gtk_font_chooser_get_font((GtkFontChooser *)dialog);
-#else
- const gchar *fontname = gtk_font_selection_dialog_get_font_name((GtkFontSelectionDialog *)dialog);
-#endif
- GString *name = g_string_new(fontname);
- size = get_font_size_from_name(name);
- g_string_free(name, TRUE);
-
- selected_text = editor_get_selected_text(e);
-#if GTK_CHECK_VERSION(3, 2, 0)
- PangoFontDescription *font_description =
- gtk_font_chooser_get_font_desc((GtkFontChooser *)
- dialog);
- fontname = pango_font_description_get_family(font_description);
-#else
- PangoFontDescription *font_description =
- pango_font_description_from_string(fontname);
- fontname = pango_font_description_get_family(font_description);
-#endif
-
- gchar *script = g_strdup_printf("<SPAN STYLE=\"font-family:%s;font-size:%spx;\">%s</SPAN>",
- fontname, size, selected_text);
-
- editor_insert_html(script, e);
- g_free(script);
- }
- if (size)
- g_free(size);
- if (selected_text)
- g_free(selected_text);
- gtk_widget_destroy(dialog);
-}
-
-G_MODULE_EXPORT void
-find_replace_response_cb(GtkDialog *dialog, gint response_id, EDITOR *e)
-{
- switch (response_id) {
- case GTK_RESPONSE_CANCEL:
- gtk_widget_hide(find_dialog.window);
- break;
- case 1:
- editor_find_string((gchar *)
- gtk_entry_get_text(GTK_ENTRY(find_dialog.find_entry)),
- e);
- break;
- case 2:
- editor_replace_string((gchar *)
- gtk_entry_get_text(GTK_ENTRY(find_dialog.find_entry)),
- (gchar *)
- gtk_entry_get_text(GTK_ENTRY(find_dialog.replace_entry)),
- e);
- break;
- default:
- gtk_widget_hide(find_dialog.window);
- break;
- }
-}
-
-G_MODULE_EXPORT void
-action_find_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- gtk_widget_show(find_dialog.window);
- gtk_widget_hide(find_dialog.box_replace);
- gtk_widget_hide(find_dialog.button_replace);
-}
-
-G_MODULE_EXPORT void
-action_replace_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- gtk_widget_show(find_dialog.window);
- gtk_widget_show(find_dialog.box_replace);
- gtk_widget_show(find_dialog.button_replace);
-}
-
-static void handle_error(GError **error)
-{
- if (*error != NULL) {
- g_warning("%s", (*error)->message);
- g_clear_error(error);
- }
-}
-
-static void do_exit(EDITOR *e)
-{
- if (e->filename) {
- g_free(e->filename);
- }
- if (e->module) {
- g_free(e->module);
- }
- if (e->key) {
- g_free(e->key);
- }
- if (e->window)
- gtk_widget_destroy(e->window);
- g_free(e);
-}
-
-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 change_window_title(GtkWidget *window, const gchar *window_title)
-{
- gtk_window_set_title(GTK_WINDOW(window), window_title);
-}
-
-static GtkPrintOperationResult
-print(WebKitWebView *html, GtkPrintOperationAction action)
-{
- GtkPrintOperation *operation;
- GtkPrintOperationResult result;
- GError *error = NULL;
- WebKitWebFrame *frame;
-
- frame = webkit_web_view_get_main_frame(html);
- operation = gtk_print_operation_new();
-
- result = webkit_web_frame_print_full(frame, operation, action, &error);
-
- g_object_unref(operation);
- handle_error(&error);
-
- return result;
-}
-
-static gint open_dialog(EDITOR *e)
-{
- GtkWidget *dialog;
- gint response;
-
- dialog = gtk_file_chooser_dialog_new(_("Open"), GTK_WINDOW(e->window),
- GTK_FILE_CHOOSER_ACTION_OPEN,
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_Cancel", GTK_RESPONSE_CANCEL,
- "_Open", GTK_RESPONSE_ACCEPT,
-#else
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
-#endif
- NULL);
-
- gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), settings.studypaddir);
-
- 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));
- _load_file(e, new_filename);
- g_free(new_filename);
- }
-
- gtk_widget_destroy(dialog);
-
- return response;
-}
-
-G_MODULE_EXPORT void action_print_cb(GtkAction *action, EDITOR *e)
-{
- print(WEBKIT_WEB_VIEW(e->html_widget),
- GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG);
-}
-
-G_MODULE_EXPORT void action_print_preview_cb(GtkAction *action, EDITOR *e)
-{
- print(WEBKIT_WEB_VIEW(e->html_widget),
- GTK_PRINT_OPERATION_ACTION_PREVIEW);
-}
-
-G_MODULE_EXPORT void action_quit_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- delete_event(NULL, NULL, e);
-}
-
-G_MODULE_EXPORT void action_open_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- open_dialog(e);
-}
-
-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;
- }
-}
-
-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;
-}
-
-G_MODULE_EXPORT void
-action_insert_sword_link_activate_cb(GtkWidget *widget, gpointer data)
-{
- editor_link_dialog(data); //editor_insert_sword_link();
-}
-
-G_MODULE_EXPORT void
-action_insert_link_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- editor_link_dialog(e);
-}
-
-G_MODULE_EXPORT void
-action_save_as_activate_cb(GtkWidget *widget, EDITOR *e)
-{
- if (e->filename)
- g_free(e->filename);
- e->filename = NULL;
- _save_file(e);
-}
-
-G_MODULE_EXPORT void combo_box_changed_cb(GtkComboBox *widget, EDITOR *e)
-{
- gchar *script = NULL;
- gint choice = gtk_combo_box_get_active(widget);
- /* we need the line of text where the cursor is */
- //extern BUTTONS_STATE buttons_state;
-
- if (buttons_state.nochange)
- return;
-
- switch (choice) {
- case 0: /* Normal */
- script = "document.execCommand('formatBlock', false, \"div\");";
- break;
-
- case 1: /* H1 */
- script = "document.execCommand('formatBlock', null, \"H1\");";
- break;
-
- case 2: /* H2 */
- script = "document.execCommand('formatBlock', null, \"H2\");";
- break;
-
- case 3: /* H3 */
- script = "document.execCommand('formatBlock', null, \"H3\");";
- break;
-
- case 4: /* H4 */
- script = "document.execCommand('formatBlock', null, \"H4\");";
- break;
-
- case 5: /* H5 */
- script = "document.execCommand('formatBlock', null, \"H5\");";
- break;
-
- case 6: /* H6 */
- script = "document.execCommand('formatBlock', null, \"H6\");";
- break;
-
- case 7: /* Address */
- script = "document.execCommand('formatBlock', null, \"ADDRESS\");";
- break;
-
- case 8: /* Preformatted */
- script = "document.execCommand('formatBlock', null, \"PRE\");";
- break;
-
- case 9: /* Bulleted List insertUnorderedList */
- script = "document.execCommand('insertUnorderedList', null, \"\");";
- break;
-
- case 10: /* Roman Numeral List */
- script = "document.execCommand('insertHTML', null, \"<OL type=I><LI> </LI></OL> \");";
- break;
-
- case 11: /* Numbered List insertOrderedList */
- script = "document.execCommand('insertOrderedList', null, \"\");";
- break;
-
- case 12: /* Alphabetical List */
- script = "document.execCommand('insertHTML', null, \"<OL type=A><LI> </LI></OL> \");";
- break;
-
- default:
- break;
- }
-
- if (script) {
- XI_message(("%s", script));
- editor_execute_script(script, e);
- }
-}
-
-/* need note toolbars when type is note */
-static GtkWidget *editor_new(const gchar *title, EDITOR *e)
-{
- GtkWidget *window;
- GtkWidget *scrollwindow;
- GtkWidget *statusbar;
- GtkBuilder *builder;
- gchar *gbuilder_file;
- GError *error = NULL;
- GtkMenuItem *item;
- GtkWidget *recent_item;
-
- buttons_state.nochange = 1;
-
- gbuilder_file = gui_general_user_file(
-#ifdef USE_GTK_3
- "gtk_webedit.ui"
-#else
- "gtk2_webedit.ui"
-#endif
- ,
- FALSE);
- builder = gtk_builder_new();
-
- if (!gtk_builder_add_from_file(builder, gbuilder_file, &error)) {
- g_warning("Couldn't load builder file: %s",
- error->message);
- g_error_free(error);
- }
-
- window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
- e->window = window;
- gtk_window_set_title(GTK_WINDOW(window), title);
-
- statusbar = GTK_WIDGET(gtk_builder_get_object(builder, "statusbar1"));
- gtk_widget_hide(statusbar);
-
- e->toolitems.outline_level = 0;
- e->toolitems.bold = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_bold"));
- e->toolitems.italic = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_italic"));
- e->toolitems.underline = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbuttonunderline"));
- e->toolitems.strike = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_strikethrough"));
- e->toolitems.open = GTK_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_open"));
- e->toolitems.newdoc = GTK_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_new"));
- e->toolitems.deletedoc = GTK_TOOL_BUTTON(gtk_builder_get_object(builder, "toolbutton_delete"));
- e->toolitems.color = GTK_COLOR_BUTTON(gtk_builder_get_object(builder, "colorbutton1"));
- e->toolitems.cb = GTK_COMBO_BOX_TEXT(gtk_builder_get_object(builder, "comboboxtext1"));
-
- gtk_combo_box_set_active((GtkComboBox *)e->toolitems.cb, 0);
-
- item = GTK_MENU_ITEM(gtk_builder_get_object(builder, "menuitem_recent"));
-
- switch (e->type) {
- case STUDYPAD_EDITOR:
- gtk_widget_hide(GTK_WIDGET(e->toolitems.deletedoc));
-
- recent_item = gtk_recent_chooser_menu_new();
- g_signal_connect(G_OBJECT(recent_item), "item-activated",
- G_CALLBACK(recent_item_cb), e);
- gtk_menu_item_set_submenu(item, recent_item);
- break;
- case NOTE_EDITOR:
- gtk_widget_hide(GTK_WIDGET(e->toolitems.open));
- gtk_widget_hide(GTK_WIDGET(e->toolitems.newdoc));
- gtk_widget_hide(GTK_WIDGET(item));
- break;
- case BOOK_EDITOR:
- gtk_widget_hide(GTK_WIDGET(e->toolitems.open));
- gtk_widget_hide(GTK_WIDGET(e->toolitems.newdoc));
- gtk_widget_hide(GTK_WIDGET(item));
- break;
- }
-
- e->navbar_box = GTK_WIDGET(gtk_builder_get_object(builder, "box_navbar"));
- e->box = GTK_WIDGET(gtk_builder_get_object(builder, "vbox1"));
-
- scrollwindow = GTK_WIDGET(gtk_builder_get_object(builder, "scrolledwindow1"));
- create_editor_window(scrollwindow, e);
- e->is_changed = FALSE;
-
- /* This is important */
- gtk_builder_connect_signals(builder, (EDITOR *)e);
-
- find_dialog.window = GTK_WIDGET(gtk_builder_get_object(builder, "dialog_find_replace"));
- find_dialog.find_entry = GTK_WIDGET(gtk_builder_get_object(builder, "entry1"));
- find_dialog.replace_entry = GTK_WIDGET(gtk_builder_get_object(builder, "entry2"));
- find_dialog.box_replace = GTK_WIDGET(gtk_builder_get_object(builder, "box4"));
- find_dialog.button_replace = GTK_WIDGET(gtk_builder_get_object(builder, "button_replace"));
-
- g_object_unref(builder);
-
- return window;
-}
-
-static void _save_note(EDITOR *e)
-{
- GString *data = g_string_new("");
-
- editor_get_document_content(data, e);
- main_save_note(e->module, e->key, data->str);
- e->is_changed = FALSE;
- g_string_free(data, TRUE);
-}
-
-static void _save_book(EDITOR *e)
-{
- GString *data = g_string_new("");
-
- editor_get_document_content(data, e);
- main_treekey_save_book_text(e->module, e->key, data->str);
- e->is_changed = FALSE;
- g_string_free(data, TRUE);
-}
-
-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,
-#if GTK_CHECK_VERSION(3, 10, 0)
- "_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 _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;
-}
-
-gboolean editor_is_dirty(EDITOR *e)
-{
- return e->is_changed;
-}
-
-void editor_save_book(EDITOR *e)
-{
- if (editor_is_dirty(e))
- _save_book(e);
-}
-
-/* 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;
-}
-
-/******************************************************************************
- * Name
- * editor_sync_with_main
- *
- * Synopsis
- * #include "editor/webkit_editor.h"
- *
- * void editor_sync_with_main(void)
- *
- * Description
- *
- *
- * Return value
- * void
- */
-
-void editor_sync_with_main(void)
-{
- GList *tmp = NULL;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- EDITOR *e = (EDITOR *)tmp->data;
-
- switch (e->type) {
- case STUDYPAD_EDITOR:
- case BOOK_EDITOR:
- break;
- case NOTE_EDITOR:
- if (e->sync)
- editor_load_note(e, NULL,
- settings.currentverse);
- break;
- }
- tmp = g_list_next(tmp);
- }
-}
-
-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);
-}
-
-G_MODULE_EXPORT int
-delete_event(GtkWidget *widget, GdkEvent *event, EDITOR *e)
-{
- if (e->is_changed) {
- switch (ask_about_saving(e)) {
- case GS_YES: /* exit saving */
- break;
-
- case GS_NO: /* exit without saving */
- break;
-
- case GS_CANCEL:
- return TRUE;
- }
- }
- editors_all = g_list_remove(editors_all, e);
- do_exit(e);
- return FALSE;
-}
-
-gint ask_about_saving(EDITOR *e)
-{
- gint test;
- GS_DIALOG *info;
- gchar *buf = NULL;
- gchar *buf1 = NULL;
- gchar *buf2 = NULL;
- gchar *buf3 = NULL;
- gint retval = FALSE;
-
- switch (e->type) {
- case BOOK_EDITOR:
- case NOTE_EDITOR:
- info = gui_new_dialog();
- info->stock_icon =
-#if GTK_CHECK_VERSION(3, 10, 0)
- "dialog-warning";
-#else
- GTK_STOCK_DIALOG_WARNING;
-#endif
-
- buf = g_strdup_printf("%s: %s", e->module, e->key);
- buf1 = _("Save the changes to document");
- buf2 = _("before closing?");
- buf3 = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s %s %s</span>",
- buf1, buf, buf2);
- info->label_top = buf3;
- info->label2 = _("If you don't save, changes will be permanently lost.");
- info->save = TRUE;
- info->cancel = TRUE;
- info->no_save = TRUE;
-
- test = gui_alert_dialog(info);
- retval = test;
-
- if (test == GS_YES) {
- if (e->type == NOTE_EDITOR) {
- /* save notes and prayer lists */
- _save_note(e);
-
- } else {
- /* save notes and prayer lists */
- _save_book(e);
- }
- }
- g_free(info);
- g_free(buf);
- g_free(buf3);
- break;
-
- case STUDYPAD_EDITOR:
- info = gui_new_dialog();
- info->stock_icon =
-#if GTK_CHECK_VERSION(3, 10, 0)
- "dialog-warning";
-#else
- GTK_STOCK_DIALOG_WARNING;
-#endif
- if (settings.studypadfilename)
- buf = settings.studypadfilename;
- else
- buf = N_("File");
- buf1 = _("Save the changes to document");
- buf2 = _("before closing?");
- buf3 = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s %s %s</span>",
- buf1, buf, buf2);
- info->label_top = buf3;
- info->label2 = _("If you don't save, changes will be permanently lost.");
- info->save = TRUE;
- info->cancel = TRUE;
- info->no_save = TRUE;
-
- test = gui_alert_dialog(info);
- retval = test;
- if (test == GS_YES) {
- _save_file(e);
- }
- g_free(info);
- g_free(buf3);
- break;
- }
- sync_windows();
- return retval;
-}
-
-static gint _create_new(const gchar *filename, const gchar *key,
- gint editor_type)
-{
- EDITOR *editor;
- GtkWidget *toolbar_nav = NULL;
-
- editor = g_new(EDITOR, 1);
- editor->html_widget = NULL;
- editor->sync = FALSE;
- editor->type = editor_type;
-
- switch (editor_type) {
- case STUDYPAD_EDITOR:
- editor->studypad = TRUE;
- editor->bookeditor = FALSE;
- editor->noteeditor = FALSE;
- editor->module = NULL;
- editor->key = NULL;
- editor->filename = NULL;
- widgets.studypad_dialog = editor_new(_("StudyPad"), editor);
-
- if (filename) {
- editor->filename = g_strdup(filename);
- _load_file(editor, g_strdup(filename));
- }
- break;
- case NOTE_EDITOR:
- editor->noteeditor = TRUE;
- editor->bookeditor = FALSE;
- editor->studypad = FALSE;
- editor->filename = NULL;
- editor->module = g_strdup(filename);
- editor->key = g_strdup(key);
- editor->navbar.key = NULL;
- editor_new(_("Note Editor"), editor);
-
- toolbar_nav = gui_navbar_versekey_editor_new(editor);
- gtk_widget_show(toolbar_nav);
- gtk_box_pack_start(GTK_BOX(editor->navbar_box),
- GTK_WIDGET(toolbar_nav), FALSE, TRUE,
- 0);
-
- editor_load_note(editor, NULL, NULL);
- break;
- case BOOK_EDITOR:
- editor->bookeditor = TRUE;
- editor->noteeditor = FALSE;
- editor->studypad = FALSE;
- editor->filename = NULL;
- editor->module = g_strdup(filename);
- editor->key = g_strdup(key);
- editor_new(_("Prayer List/Journal Editor"), editor);
-
- GtkWidget *box;
- UI_VBOX(box, FALSE, 0);
- gtk_widget_show(box);
- GtkWidget *hpaned1 = UI_HPANE();
- gtk_widget_show(hpaned1);
- gtk_paned_pack2(GTK_PANED(hpaned1), box, TRUE, TRUE);
-
- GtkWidget *scrollbar = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrollbar);
- gtk_paned_pack1(GTK_PANED(hpaned1), GTK_WIDGET(scrollbar),
- TRUE, TRUE);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollbar),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type((GtkScrolledWindow *)
- scrollbar,
- settings.shadow_type);
-
- editor->treeview = gui_create_editor_tree(editor);
- gtk_widget_show(editor->treeview);
- gtk_container_add(GTK_CONTAINER(scrollbar),
- editor->treeview);
- gtk_paned_set_position(GTK_PANED(hpaned1), 125);
- gtk_tree_view_expand_all((GtkTreeView *)editor->treeview);
-// then we should expand on the item to which we've opened for edit.
-
-#if GTK_CHECK_VERSION(3, 10, 0)
- gtk_container_add(GTK_CONTAINER(box), editor->box);
-#else
- gtk_widget_reparent(editor->box, box);
-#endif
-
- gtk_container_add(GTK_CONTAINER(editor->window), hpaned1);
-
- editor_load_book(editor);
-
- break;
- }
- editor->is_changed = FALSE;
- editors_all = g_list_append(editors_all, (EDITOR *)editor);
- return 1;
-}
-
-/******************************************************************************
- * Name
- * editor_create_new
- *
- * Synopsis
- * #include "editor/html-editor.h"
- *
- * gint editor_create_new(const gchar * filename, const gchar * key, gint note)
- *
- * Description
- * limits editors to one note editor and one studypad open at a time
- *
- * Return value
- * gint
- */
-
-gint editor_create_new(const gchar *filename, const gchar *key,
- gint editor_type)
-{
- GList *tmp = NULL;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- EDITOR *e = (EDITOR *)tmp->data;
- switch (editor_type) {
- case STUDYPAD_EDITOR:
- if (e->studypad) {
- if (editor_is_dirty(e))
- _save_file(e);
- if (e->filename)
- g_free(e->filename);
- e->filename = g_strdup(filename);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
-
- _load_file(e, g_strdup(filename));
- return 1;
- }
- break;
- case NOTE_EDITOR:
- if (!e->noteeditor)
- break;
- if (editor_is_dirty(e))
- _save_note(e);
- if (e->module)
- g_free(e->module);
- e->module = g_strdup(filename);
- if (e->key)
- g_free(e->key);
- e->key = g_strdup(key);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
-
- editor_load_note(e, NULL, NULL);
-
- return 1;
- break;
- case BOOK_EDITOR:
- if (!e->bookeditor)
- break;
- if (editor_is_dirty(e))
- _save_book(e);
- if (e->module)
- g_free(e->module);
- e->module = g_strdup(filename);
- if (e->key)
- g_free(e->key);
- e->key = g_strdup(key);
- gtk_widget_show(e->window);
- gdk_window_raise(gtk_widget_get_parent_window(GTK_WIDGET(e->window)));
- main_load_book_tree_in_editor(GTK_TREE_VIEW(e->treeview),
- e->module);
- editor_load_book(e);
-
- return 1;
- break;
- }
- tmp = g_list_next(tmp);
- }
- XI_message(("filename %s, key %s",
- (filename ? filename : "-null-"),
- (key ? key : "-null-")));
- return _create_new(filename, key, editor_type);
-}
-
-void editor_maybe_save_all(void)
-{
- GList *tmp, *tmp2;
-
- tmp = g_list_first(editors_all);
- while (tmp != NULL) {
- /* 2ndary list chaser:
- elements will be removed by the saver. */
- tmp2 = g_list_next(tmp);
-
- delete_event(NULL, NULL, (EDITOR *)tmp->data);
- tmp = tmp2;
- }
-}
-
-#endif /* USE_WEBKIT_EDITOR */
+// empty
diff --git a/src/editor/webkit_editor.h b/src/editor/webkit_editor.h
index 5980c91..8b1a393 100644
--- a/src/editor/webkit_editor.h
+++ b/src/editor/webkit_editor.h
@@ -1,207 +1 @@
-/*
- * Xiphos Bible Study Tool
- * webkit_editor.h - html editor using webkit
- *
- * Copyright (C) 2005-2017 Xiphos Developer Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _WEBKIT_EDITOR_H
-#define _WEBKIT_EDITOR_H
-
-#include <config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef USE_WEBKIT_EDITOR
-
-#include <gtk/gtk.h>
-
-#include "main/navbar_versekey.h"
-
-struct _tool_items
-{
- GtkToggleToolButton *bold;
- GtkToggleToolButton *italic;
- GtkToggleToolButton *underline;
- GtkToggleToolButton *strike;
- GtkColorButton *color;
- GtkToolButton *newdoc;
- GtkToolButton *open;
- GtkToolButton *deletedoc;
- GtkComboBoxText *cb;
- gint outline_level;
-};
-typedef struct _tool_items TOOL_ITEMS;
-
-typedef struct _editor EDITOR;
-struct _editor
-{
- GtkWidget *window;
- GtkWidget *box;
- GtkWidget *scrollwindow;
- GtkWidget *toolbar;
- GtkWidget *treeview;
- GtkWidget *sync_button;
- GtkWidget *html_widget;
- GtkWidget *statusbar;
- GtkWidget *navbar_box;
- NAVBAR_VERSEKEY navbar;
- TOOL_ITEMS toolitems;
-
- gint type;
-
- gboolean studypad;
- gboolean noteeditor;
- gboolean bookeditor;
- gboolean is_changed;
- gboolean sync;
-
- gchar *filename;
- gchar *module;
- gchar *key;
-};
-
-enum {
- STUDYPAD_EDITOR,
- NOTE_EDITOR,
- BOOK_EDITOR
-};
-
-struct _menu
-{
- GtkWidget *menu;
- GtkWidget *cut;
- GtkWidget *copy;
- GtkWidget *paste;
- //GtkWidget *;
-};
-typedef struct _menu MENU;
-
-extern MENU popup;
-
-struct _find_dialog
-{
- GtkWidget *window;
- GtkWidget *find_entry;
- GtkWidget *replace_entry;
- GtkWidget *box_replace;
- GtkWidget *button_replace;
- //GtkWidget *;
- //GtkWidget *;
-};
-typedef struct _find_dialog FIND_DIALOG;
-
-extern FIND_DIALOG find_dialog;
-
-struct _buttons_state
-{
- gint bold;
- gint italic;
- gint underline;
- gint strike;
- gint style;
- gint nochange;
- gchar *color;
-};
-typedef struct _buttons_state BUTTONS_STATE;
-
-void action_about_activate_cb(GtkWidget *widget, EDITOR *e);
-
-void action_increase_indent_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_decrease_indent_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void action_insert_image_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_insert_rule_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_insert_table_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_insert_emoticon_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_insert_sword_link_activate_cb(GtkWidget *widget,
- gpointer data);
-void action_insert_link_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void action_insert_outline_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void action_justify_right_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_justify_left_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_justify_center_activate_cb(GtkWidget *widget,
- EDITOR *e);
-void action_justify_full_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void action_bold_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_italic_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_underline_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_strikethrough_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void action_undo_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_redo_activate_cb(GtkWidget *widget, EDITOR *e);
-
-void action_cut_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_copy_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_paste_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_delete_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_delete_item_activate_cb(GtkWidget *widget,
- EDITOR *e);
-
-void set_button_state(BUTTONS_STATE state, EDITOR *e);
-void action_fontcolor_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_font_activate_cb(GtkWidget *widget, EDITOR *e);
-void find_replace_response_cb(GtkDialog *dialog, gint response_id,
- EDITOR *e);
-void action_replace_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_find_activate_cb(GtkWidget *widget, EDITOR *e);
-int delete_event(GtkWidget *widget, GdkEvent *event, EDITOR *e);
-void action_quit_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_new_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_open_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_print_cb(GtkAction *action, EDITOR *e);
-void action_print_preview_cb(GtkAction *action, EDITOR *e);
-void action_save_activate_cb(GtkWidget *widget, EDITOR *e);
-void action_save_as_activate_cb(GtkWidget *widget, EDITOR *e);
-
-void editor_sync_with_main(void);
-void editor_load_note(EDITOR *e, const gchar *module_name,
- const gchar *key);
-void editor_load_book(EDITOR *e);
-gint editor_create_new(const gchar *filename, const gchar *key,
- gint note);
-void editor_save_book(EDITOR *e);
-void editor_maybe_save_all(void);
-gint ask_about_saving(EDITOR *e);
-void colorbutton1_color_set_cb(GtkColorButton *widget,
- EDITOR *e);
-void colorbutton_highlight_color_set_cb(GtkColorButton *widget,
- EDITOR *e);
-void combo_box_changed_cb(GtkComboBox *widget, EDITOR *e);
-
-#ifdef __cplusplus
-}
-#endif /* USE_WEBKIT_EDITOR */
-#endif
-#endif /* _WEBKIT_EDITOR_H */
+// empty