summaryrefslogtreecommitdiffstats
path: root/scribus/styleitem.h
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/styleitem.h
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/styleitem.h')
-rw-r--r--scribus/styleitem.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/scribus/styleitem.h b/scribus/styleitem.h
new file mode 100644
index 0000000..bfbd143
--- /dev/null
+++ b/scribus/styleitem.h
@@ -0,0 +1,200 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+
+#ifndef STYLEITEM_H
+#define STYLEITEM_H
+
+#include <QObject>
+#include <QList>
+#include <QPair>
+
+class QString;
+class QStringList;
+class ScribusDoc;
+class QTabWidget;
+
+/** RemoveItem.first will be the style to remove and RemoveItem.second
+ * will be the one used in place of the deleted style */
+typedef QPair<QString, QString> RemoveItem;
+
+/** StyleName.first is the name of the style and StyleName.second is the
+ * name of the parent style or QString::null if there's no parent for this style */
+typedef QPair<QString, QString> StyleName;
+
+/**
+ * @brief Represents a style type that can be added to the Style Manager
+ * @brief palette.
+ *
+ * This class is ment to be used as a parent class for any style types
+ * that are wanted to be configured using the Style Manager palette.
+ * @author Riku Leino <riku@scribus.info>
+ * @date November 2005
+ */
+class StyleItem : public QObject {
+ Q_OBJECT
+public:
+ StyleItem();
+ virtual ~StyleItem();
+
+ /**
+ * @brief return the QWidget for editing style's properties
+ *
+ * This is the widget where the attributes of style are edited. It
+ * will be placed on the main tab widget's Properties page.
+ * Whenever a selected style is edited StyleItem should emit the
+ * signal selectionDirty() if it is the first time style is edited
+ * after applying previous changes.
+ */
+ virtual QTabWidget* widget() = 0;
+
+ /** @brief name of the style (plural) (Paragraph Styles, Character Styles...) */
+ virtual QString typeNamePlural() = 0;
+
+ /** @brief name of the style (singular) (Paragraph Style, Character Style...) */
+ virtual QString typeNameSingular() = 0;
+
+ /**
+ * @brief Whenever style manager is shown attached StyleItems get the current doc
+ * @brief passed to them with this function.
+ */
+ virtual void setCurrentDoc(ScribusDoc *doc) = 0;
+
+ /**
+ * @brief existing styles in this category
+ *
+ * return the names of cached styles (even if those are changed)
+ * @param reloadFromDoc should the styles be loaded from the document or
+ * should function return currently cached and possibly changed styles
+ * @return Name of the styles and their parent as a QValueList.
+ * StyleName::first is the style name and StyleName::second it's parent's name.
+ * If the StyleItem has no parent StyleName::second should be set to QString::null.
+ */
+ virtual QList<StyleName> styles(bool reloadFromDoc = true) = 0;
+
+ /**
+ * @brief Reload styles and remove all cached (and possibly changed ones).
+ *
+ * This function will be called whenever a user clicks on the reset button.
+ * Resetting styles means loading them from the doc replacing all cached styles
+ * and without applying changes to the previously cached styles.
+ **/
+ virtual void reload() = 0;
+
+ /**
+ * @brief Whenever this function is called StyleItem must update the main
+ * @brief widget with the corresponding data.
+ *
+ * Whenever user selects a style from the style list in the manager
+ * this slot is called from the StyleItem. StyleItem must then update
+ * the main widget with the data related to the selected item and then
+ * just wait for apply() to apply the changes user made (with the
+ * main widget). When implementing this method one should note that
+ * there may be more than a single style selected.
+ * @param styleNames styles selected for editing
+ */
+ virtual void selected(const QStringList &styleNames) = 0;
+
+ /**
+ * @brief Return the name of the style in this category applied to the
+ * @brief selected object(s) in the current document or QString::null
+ * @brief if there is no selection in the document.
+ *
+ * If there are multiple objects selected only return a style name if the same style
+ * is applied on all selected objects. If they doesn't share the same style then
+ * return QString::null.
+ */
+ virtual QString fromSelection() const = 0;
+
+ /**
+ * @brief Apply style called styleName to the documents current selection
+ * @param styleName name of the style to be applied to the documents current selection
+ */
+ virtual void toSelection(const QString &styleName) const = 0;
+
+ /**
+ * @brief Create a new temp. style with default values and return the
+ * @brief name of the newly created style.
+ * @return name of the created style
+ */
+ virtual QString newStyle() = 0;
+
+ /**
+ * @brief Create a new temp. style which is a clone of the style called fromStyle.
+ * @param fromStyle name of the style to clone
+ * @return name of the created style
+ */
+ virtual QString newStyle(const QString &fromStyle) = 0;
+
+ /**
+ * @brief apply changes made to the currently selected style(s)
+ *
+ * When a user has edited a style (s)he can either cancel or apply
+ * changes. On cancel and ok button clicks no action is needed from
+ * the StyleItem but if a user chooses to press button apply StyleItem's
+ * function apply() is called and StyleItem must upgrade the style
+ * and apply it where ever that style is used in the document.
+ * (cancel will be disabled after this)
+ */
+ virtual void apply() = 0;
+
+ /**
+ * @brief When SM switches to or away from edit mode this function is called
+ * @param isOn true if SM is in edit mode false if SM has just closed edit mode
+ */
+ virtual void editMode(bool isOn) {};
+
+ /** @brief returns if the style is a default style */
+ virtual bool isDefaultStyle(const QString &stylename) const = 0;
+
+ /** @brief set if the style is a default style */
+ virtual void setDefaultStyle(bool ids) = 0;
+
+ /** @brief returns the key combination for the style's shortcut */
+ virtual QString shortcut(const QString &stylename) const = 0;
+
+ /** @brief set the key combination for the selected style's shortcut */
+ virtual void setShortcut(const QString &shortcut) = 0;
+
+ /**
+ * @brief User has requested to delete all the selected styles
+ * @param removeList list of styles to be deleted. RemoveItem::first is
+ * the style to be deleted and RemoveItem::second is the style to replace
+ * the deleted style with. If no replacement was requested RemoveItem::second
+ * has been set to QString::null.
+ */
+ virtual void deleteStyles(const QList<RemoveItem> &removeList) = 0;
+
+ /** @brief Called when the currently selected style's name has changed */
+ virtual void nameChanged(const QString &newName) = 0;
+
+ /** @brief Return a unique name for a style using the base in the name */
+ virtual QString getUniqueName(const QString &base) = 0;
+
+ /** @brief reload all the gui strings whenever this method is called */
+ virtual void languageChange() = 0;
+
+ /** @brief document unit has been changed, upgrade widgets */
+ virtual void unitChange() = 0;
+
+ // do not implement this in derived classes
+ QString typeName() { return typeNamePlural(); };
+
+/*
+ Emit this signal when selection has been edited. SM knows to highlight the
+ edited styles based on this signal.
+signals:
+ selectionDirty();
+*/
+
+private:
+ /* hide these two, StyleItem is not ment to be copied */
+ StyleItem(const StyleItem&);
+ void operator=(const StyleItem&);
+
+};
+
+#endif