gtkhtml r8718 - branches/mbarnes-composer/components/editor
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: gtkhtml r8718 - branches/mbarnes-composer/components/editor
- Date: Tue, 5 Feb 2008 23:59:05 +0000 (GMT)
Author: mbarnes
Date: Tue Feb 5 23:59:05 2008
New Revision: 8718
URL: http://svn.gnome.org/viewvc/gtkhtml?rev=8718&view=rev
Log:
New public functions:
gtkhtml_editor_get_text_html()
gtkhtml_editor_get_text_plain()
gtkhtml_editor_set_text_html()
Modified:
branches/mbarnes-composer/components/editor/gtkhtml-editor-actions.h
branches/mbarnes-composer/components/editor/gtkhtml-editor.c
branches/mbarnes-composer/components/editor/gtkhtml-editor.h
Modified: branches/mbarnes-composer/components/editor/gtkhtml-editor-actions.h
==============================================================================
--- branches/mbarnes-composer/components/editor/gtkhtml-editor-actions.h (original)
+++ branches/mbarnes-composer/components/editor/gtkhtml-editor-actions.h Tue Feb 5 23:59:05 2008
@@ -22,7 +22,7 @@
#define GTKHTML_EDITOR_ACTIONS_H
#define GTKHTML_EDITOR_ACTION(editor, name) \
- (gtkhtml_editor_get_action ((editor), (name)))
+ (gtkhtml_editor_get_action (GTKHTML_EDITOR (editor), (name)))
#define GTKHTML_EDITOR_ACTION_BOLD(editor) \
GTKHTML_EDITOR_ACTION ((editor), "bold")
Modified: branches/mbarnes-composer/components/editor/gtkhtml-editor.c
==============================================================================
--- branches/mbarnes-composer/components/editor/gtkhtml-editor.c (original)
+++ branches/mbarnes-composer/components/editor/gtkhtml-editor.c Tue Feb 5 23:59:05 2008
@@ -803,7 +803,7 @@
g_object_notify (G_OBJECT (editor), "current-folder");
}
-/* Helper for gtkhtml_editor_save() */
+/* Helper for gtkhtml_editor_get_text_[html/plain]() */
static gboolean
editor_save_receiver (HTMLEngine *engine,
const gchar *data,
@@ -815,28 +815,93 @@
return TRUE;
}
+gchar *
+gtkhtml_editor_get_text_html (GtkhtmlEditor *editor,
+ gsize *length)
+{
+ GString *string;
+
+ g_return_val_if_fail (GTKHTML_IS_EDITOR (editor), NULL);
+
+ string = g_string_sized_new (4096);
+
+ gtk_html_export (
+ gtkhtml_editor_get_html (editor), "text/html",
+ (GtkHTMLSaveReceiverFn) editor_save_receiver, string);
+
+ if (length != NULL)
+ *length = string->len;
+
+ return g_string_free (string, FALSE);
+}
+
+gchar *
+gtkhtml_editor_get_text_plain (GtkhtmlEditor *editor,
+ gsize *length)
+{
+ GString *string;
+
+ g_return_val_if_fail (GTKHTML_IS_EDITOR (editor), NULL);
+
+ string = g_string_sized_new (4096);
+
+ gtk_html_export (
+ gtkhtml_editor_get_html (editor), "text/plain",
+ (GtkHTMLSaveReceiverFn) editor_save_receiver, string);
+
+ if (length != NULL)
+ *length = string->len;
+
+ return g_string_free (string, FALSE);
+}
+
+void
+gtkhtml_editor_set_text_html (GtkhtmlEditor *editor,
+ const gchar *text,
+ gssize length)
+{
+ GtkHTML *html;
+ GtkHTMLStream *stream;
+ gboolean editable;
+
+ g_return_if_fail (GTKHTML_IS_EDITOR (editor));
+ g_return_if_fail (text != NULL);
+
+ /* XXX GtkHTML should really do this. */
+ if (length < 0)
+ length = strlen (text);
+
+ html = gtkhtml_editor_get_html (editor);
+ editable = gtk_html_get_editable (html);
+ gtk_html_set_editable (html, FALSE);
+
+ stream = gtk_html_begin_content (html, "text/html; charset=utf-8");
+ gtk_html_write (html, stream, text, length);
+ gtk_html_end (html, stream, GTK_HTML_STREAM_OK);
+
+ gtk_html_set_editable (html, editable);
+}
+
gboolean
gtkhtml_editor_save (GtkhtmlEditor *editor,
const gchar *filename,
GError **error)
{
- GtkHTML *html;
- GString *contents;
+ gchar *contents;
+ gsize length;
gboolean success;
g_return_val_if_fail (GTKHTML_IS_EDITOR (editor), FALSE);
g_return_val_if_fail (filename != NULL, FALSE);
- html = gtkhtml_editor_get_html (editor);
-
- contents = g_string_sized_new (4096);
- gtk_html_save (
- html, (GtkHTMLSaveReceiverFn) editor_save_receiver, contents);
- success = g_file_set_contents (
- filename, contents->str, contents->len, error);
- g_string_free (contents, TRUE);
+ contents = gtkhtml_editor_get_text_html (editor, &length);
+ success = g_file_set_contents (filename, contents, length, error);
+ g_free (contents);
if (success) {
+ GtkHTML *html;
+
+ html = gtkhtml_editor_get_html (editor);
html->engine->saved_step_count =
html_undo_get_step_count (html->engine->undo);
gtkhtml_editor_run_command (editor, "saved");
Modified: branches/mbarnes-composer/components/editor/gtkhtml-editor.h
==============================================================================
--- branches/mbarnes-composer/components/editor/gtkhtml-editor.h (original)
+++ branches/mbarnes-composer/components/editor/gtkhtml-editor.h Tue Feb 5 23:59:05 2008
@@ -91,6 +91,13 @@
* High-Level Editing Interface
*****************************************************************************/
+gchar * gtkhtml_editor_get_text_html (GtkhtmlEditor *editor,
+ gsize *length);
+gchar * gtkhtml_editor_get_text_plain (GtkhtmlEditor *editor,
+ gsize *length);
+void gtkhtml_editor_set_text_html (GtkhtmlEditor *editor,
+ const gchar *text,
+ gssize length);
gboolean gtkhtml_editor_save (GtkhtmlEditor *editor,
const gchar *filename,
GError **error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]