summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/text-edit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/text-edit.h')
-rw-r--r--src/ui/dialog/text-edit.h194
1 files changed, 194 insertions, 0 deletions
diff --git a/src/ui/dialog/text-edit.h b/src/ui/dialog/text-edit.h
new file mode 100644
index 0000000..72b8589
--- /dev/null
+++ b/src/ui/dialog/text-edit.h
@@ -0,0 +1,194 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/** @file
+ * @brief Text-edit
+ */
+/* Authors:
+ * Lauris Kaplinski <lauris@ximian.com>
+ * bulia byak <buliabyak@users.sf.net>
+ * Johan Engelen <goejendaagh@zonnet.nl>
+ * John Smith
+ * Kris De Gussem <Kris.DeGussem@gmail.com>
+ * Tavmjong Bah
+ *
+ * Copyright (C) 1999-2013 Authors
+ * Copyright (C) 2000-2001 Ximian, Inc.
+ *
+ * Released under GNU GPL v2+, read the file 'COPYING' for more information.
+ */
+
+#ifndef INKSCAPE_UI_DIALOG_TEXT_EDIT_H
+#define INKSCAPE_UI_DIALOG_TEXT_EDIT_H
+
+#include <glibmm/refptr.h>
+
+#include "ui/dialog/dialog-base.h"
+#include "ui/widget/frame.h"
+
+#include "ui/widget/font-selector.h"
+#include "ui/widget/font-variants.h"
+
+namespace Gtk {
+class Box;
+class Button;
+class ButtonBox;
+class Label;
+class Notebook;
+class TextBuffer;
+class TextView;
+}
+
+class SPItem;
+class font_instance;
+class SPCSSAttr;
+
+namespace Inkscape {
+namespace UI {
+namespace Dialog {
+
+#define VB_MARGIN 4
+/**
+ * The TextEdit class defines the Text and font dialog.
+ *
+ * The Text and font dialog allows you to set the font family, style and size
+ * and shows a preview of the result. The dialogs layout settings include
+ * horizontal and vertical alignment and inter line distance.
+ */
+class TextEdit : public DialogBase
+{
+public:
+ TextEdit();
+ ~TextEdit() override;
+
+ void documentReplaced() override;
+ void selectionChanged(Selection *selection) override;
+ void selectionModified(Selection *selection, guint flags) override;
+
+ /**
+ * Helper function which returns a new instance of the dialog.
+ * getInstance is needed by the dialog manager (Inkscape::UI::Dialog::DialogManager).
+ */
+ static TextEdit &getInstance() { return *new TextEdit(); }
+
+protected:
+
+ /**
+ * Callback for pressing the default button.
+ */
+ void onSetDefault ();
+
+ /**
+ * Callback for pressing the apply button.
+ */
+ void onApply ();
+
+ /**
+ * Called whenever something 'changes' on canvas.
+ *
+ * onReadSelection gets the currently selected item from the canvas and sets all the controls in this dialog to the correct state.
+ *
+ * @param dostyle Indicates whether the modification of the user includes a style change.
+ * @param content Indicates whether the modification of the user includes a style change. Actually refers to the question if we do want to show the content? (Parameter currently not used)
+ */
+ void onReadSelection (gboolean style, gboolean content);
+
+ /**
+ * Callback invoked when the user modifies the text of the selected text object.
+ *
+ * onTextChange is responsible for initiating the commands after the user
+ * modified the text in the selected object. The UI of the dialog is
+ * updated. The subfunction setPreviewText updates the preview label.
+ *
+ * @param self pointer to the current instance of the dialog.
+ */
+ void onChange ();
+ void onFontFeatures (Gtk::Widget * widgt, int pos);
+
+ /**
+ * Callback invoked when the user modifies the font through the dialog or the tools control bar.
+ *
+ * onFontChange updates the dialog UI. The subfunction setPreviewText updates the preview label.
+ *
+ * @param fontspec for the text to be previewed.
+ */
+ void onFontChange (Glib::ustring fontspec);
+
+ /**
+ * Get the selected text off the main canvas.
+ *
+ * @return SPItem pointer to the selected text object
+ */
+ SPItem *getSelectedTextItem ();
+
+ /**
+ * Count the number of text objects in the selection on the canvas.
+ */
+ unsigned getSelectedTextCount ();
+
+ /**
+ * Helper function to create markup from a fontspec and display in the preview label.
+ *
+ * @param fontspec for the text to be previewed.
+ * @param font_features for text to be previewed (in CSS format).
+ * @param phrase text to be shown.
+ */
+ void setPreviewText (Glib::ustring font_spec, Glib::ustring font_features, Glib::ustring phrase);
+
+ void updateObjectText ( SPItem *text );
+ SPCSSAttr *fillTextStyle ();
+
+private:
+
+ /*
+ * All the dialogs widgets
+ */
+
+ // Tab 1: Font ---------------------- //
+ Inkscape::UI::Widget::FontSelector font_selector;
+ Inkscape::UI::Widget::FontVariations font_variations;
+ Gtk::Label *preview_label; // Share with variants tab?
+
+ // Tab 2: Text ---------------------- //
+ Gtk::TextView *text_view;
+ Glib::RefPtr<Gtk::TextBuffer> text_buffer;
+
+ // Tab 3: Features ----------------- //
+ Inkscape::UI::Widget::FontVariants font_features;
+ Gtk::Label *preview_label2; // Could reparent preview_label but having a second label is probably easier.
+
+ // Shared ------- ------------------ //
+ Gtk::Button *setasdefault_button;
+ Gtk::Button *apply_button;
+
+ // Signals
+ sigc::connection selectChangedConn;
+ sigc::connection subselChangedConn;
+ sigc::connection selectModifiedConn;
+ sigc::connection fontChangedConn;
+ sigc::connection fontFeaturesChangedConn;
+
+ // Other
+ double selected_fontsize;
+ bool blocked;
+ const Glib::ustring samplephrase;
+
+
+ TextEdit(TextEdit const &d) = delete;
+ TextEdit operator=(TextEdit const &d) = delete;
+};
+
+} //namespace Dialog
+} //namespace UI
+} //namespace Inkscape
+
+#endif // INKSCAPE_UI_DIALOG_TEXT_EDIT_H
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :