summaryrefslogtreecommitdiffstats
path: root/scribus/sctoolbar.cpp
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/sctoolbar.cpp
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/sctoolbar.cpp')
-rw-r--r--scribus/sctoolbar.cpp321
1 files changed, 321 insertions, 0 deletions
diff --git a/scribus/sctoolbar.cpp b/scribus/sctoolbar.cpp
new file mode 100644
index 0000000..425579f
--- /dev/null
+++ b/scribus/sctoolbar.cpp
@@ -0,0 +1,321 @@
+/*
+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.
+*/
+/***************************************************************************
+ * Copyright (C) 2006 by Riku Leino *
+ * riku@scribus.info *
+ * *
+ * 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 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QEvent>
+#include <QMenu>
+#include <QPixmap>
+#include <QString>
+#include <QToolButton>
+
+#include "sctoolbar.h"
+
+#include "prefscontext.h"
+#include "prefsfile.h"
+#include "prefsmanager.h"
+#include "util_icon.h"
+
+ScToolBar::ScToolBar(const QString& name, const QString &prefName, QMainWindow *parent, Qt::Orientation o)
+: QToolBar(name, parent),
+ m_name(QString("ToolBar-%1").arg(prefName)),
+ m_prefs(PrefsManager::instance()->prefsFile->getContext(m_name))
+{
+ setObjectName(name);
+// hide();
+ parentMW=parent;
+
+ setAllowedAreas(Qt::AllToolBarAreas);
+ this->setIconSize(QSize(16,16));
+ /*
+ setCloseMode(Q3DockWindow::Undocked);
+
+ if (m_prefs->contains("IsDocked")) // set docking
+ {
+ if (m_prefs->getBool("IsDocked", true)) {
+ QString dockPlace = m_prefs->get("DockPlace", "top");
+ if (dockPlace == "top")
+ mainWindow()->addDockWindow(this, Qt::DockTop);
+ else if (dockPlace == "bottom")
+ mainWindow()->addDockWindow(this, Qt::DockBottom);
+ else if (dockPlace == "right")
+ mainWindow()->addDockWindow(this, Qt::DockRight);
+ else if (dockPlace == "left")
+ mainWindow()->addDockWindow(this, Qt::DockLeft);
+ } else {
+ undock();
+ move(QPoint(m_prefs->getInt("x", 50), m_prefs->getInt("y", 50)));
+ }
+ }
+
+ if (m_prefs->contains("FloatOrientation")) // set float orientation
+ {
+ floatOrientation = m_prefs->getInt("FloatOrientation", 1) == Hor ?
+ Qt::Horizontal : Qt::Vertical;
+ }
+ else
+ {
+ floatOrientation = o;
+ m_prefs->set("FloatOrientation", o == Qt::Horizontal ? Hor : Vert);
+ }
+
+ if (!m_prefs->contains("PosIndex"))
+ storeDockPosition();
+ else
+ moveDocks();
+
+ dockTop = m_prefs->getBool("DockTop", 1);
+ dockRight = m_prefs->getBool("DockRight", 1);
+ dockBottom = m_prefs->getBool("DockBottom", 1);
+ dockLeft = m_prefs->getBool("DockLeft", 1);
+ mainWindow()->setDockEnabled(this, Qt::DockTop, dockTop);
+ mainWindow()->setDockEnabled(this, Qt::DockRight, dockRight);
+ mainWindow()->setDockEnabled(this, Qt::DockBottom, dockBottom);
+ mainWindow()->setDockEnabled(this, Qt::DockLeft, dockLeft);
+
+ if (place() == InDock)
+ setOrientation(area()->orientation());
+ else
+ setOrientation(floatOrientation);
+
+ initPrefsButton();
+ */
+ languageChange();
+
+// connect(this, SIGNAL(placeChanged(Q3DockWindow::Place)), this, SLOT(slotPlaceChanged(Q3DockWindow::Place)));
+}
+
+void ScToolBar::initVisibility()
+{
+ if (m_prefs->getBool("IsVisible", true))
+ {
+ show();
+/*
+ if (place() == InDock)
+ setOrientation(area()->orientation());
+ else
+ setOrientation(floatOrientation);
+*/
+ }
+ else
+ hide();
+ connectPrefsSlot(true);
+}
+
+void ScToolBar::connectPrefsSlot(bool b)
+{
+ if (b)
+ connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(slotVisibilityChanged(bool)));
+ else
+ disconnect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(slotVisibilityChanged(bool)));
+}
+
+/*
+int ScToolBar::position()
+{
+ if (place() == Q3DockWindow::OutsideDock)
+ return -1;
+
+ int index = -1;
+ area()->hasDockWindow(this, &index);
+
+ return index;
+}
+
+void ScToolBar::storeDockPosition()
+{
+ m_prefs->set("PosIndex", position());
+ m_prefs->set("Offset", offset());
+}
+
+void ScToolBar::storeDockPositions()
+{
+ if (place() == Q3DockWindow::OutsideDock)
+ return; // nothing to store if not docked
+ QList<Q3DockWindow*> tbs = area()->dockWindowList();
+ for (int i = 0; i < tbs.count(); ++i)
+ {
+ if (ScToolBar *sctb = dynamic_cast<ScToolBar*>(tbs.at(i)))
+ sctb->storeDockPosition();
+ }
+}
+
+void ScToolBar::moveDocks()
+{
+ if (place() == Q3DockWindow::OutsideDock)
+ return; // do not move if not docked;
+ QList<Q3DockWindow*> tbs = area()->dockWindowList();
+ for (int i = 0; i < tbs.count(); ++i)
+ {
+ if (ScToolBar *sctb = dynamic_cast<ScToolBar*>(tbs.at(i)))
+ sctb->moveDock();
+ }
+}
+
+void ScToolBar::moveDock()
+{
+ if (place() == Q3DockWindow::OutsideDock)
+ return; // do not move if not docked
+ area()->moveDockWindow(this, m_prefs->getInt("PosIndex", -1));
+ setOffset(m_prefs->getInt("Offset", 0));
+}
+
+void ScToolBar::slotPlaceChanged(Q3DockWindow::Place p)
+{
+ m_prefs->set("IsDocked", p == Q3DockWindow::InDock);
+ m_prefs->set("x", x());
+ m_prefs->set("y", y());
+ if (p == Q3DockWindow::InDock) {
+ setOrientation(area()->orientation());
+ QString dockPlace = "top";
+ if (area() == mainWindow()->leftDock())
+ dockPlace = "left";
+ else if (area() == mainWindow()->rightDock())
+ dockPlace = "right";
+ else if (area() == mainWindow()->bottomDock())
+ dockPlace = "bottom";
+
+ m_prefs->set("DockPlace", dockPlace);
+ storeDockPositions();
+ } else {
+ setOrientation(floatOrientation);
+ }
+}
+*/
+void ScToolBar::slotVisibilityChanged(bool visible)
+{
+ m_prefs->set("IsVisible", visible);
+}
+/*
+void ScToolBar::slotTop()
+{
+ dockTop = !dockTop;
+ mainWindow()->setDockEnabled(this, Qt::DockTop, dockTop);
+ dockMenu->setItemChecked(dockMenu->idAt(0), dockTop);
+ m_prefs->set("DockTop", dockTop);
+ if (place() == InDock && mainWindow()->topDock() == area())
+ undock();
+}
+
+void ScToolBar::slotRight()
+{
+ dockRight = !dockRight;
+ mainWindow()->setDockEnabled(this, Qt::DockRight, dockRight);
+ dockMenu->setItemChecked(dockMenu->idAt(1), dockRight);
+ m_prefs->set("DockRight", dockRight);
+ if (place() == InDock && mainWindow()->rightDock() == area())
+ undock();
+}
+
+void ScToolBar::slotBottom()
+{
+ dockBottom = !dockBottom;
+ mainWindow()->setDockEnabled(this, Qt::DockBottom, dockBottom);
+ dockMenu->setItemChecked(dockMenu->idAt(2), dockBottom);
+ m_prefs->set("DockBottom", dockBottom);
+ if (place() == InDock && mainWindow()->bottomDock() == area())
+ undock();
+}
+
+void ScToolBar::slotLeft()
+{
+ dockLeft = !dockLeft;
+ mainWindow()->setDockEnabled(this, Qt::DockLeft, dockLeft);
+ dockMenu->setItemChecked(dockMenu->idAt(3), dockLeft);
+ m_prefs->set("DockLeft", dockLeft);
+ if (place() == InDock && mainWindow()->leftDock() == area())
+ undock();
+}
+
+void ScToolBar::slotVert()
+{
+ floatOrientation = Qt::Vertical;
+ orientationMenu->setItemChecked(orientationMenu->idAt(0), false);
+ orientationMenu->setItemChecked(orientationMenu->idAt(1), true);
+ m_prefs->set("FloatOrientation", Vert);
+ if (place() != InDock)
+ setOrientation(floatOrientation);
+}
+
+void ScToolBar::slotHor()
+{
+ floatOrientation = Qt::Horizontal;
+ orientationMenu->setItemChecked(orientationMenu->idAt(0), true);
+ orientationMenu->setItemChecked(orientationMenu->idAt(1), false);
+ m_prefs->set("FloatOrientation", Hor);
+ if (place() != InDock)
+ setOrientation(floatOrientation);
+}
+*/
+void ScToolBar::languageChange()
+{
+// popup->clear();
+
+// dockMenu = new QMenu(0);
+// dockMenu->setCheckable(true);
+// dockMenu->insertItem( tr("Top"), this, SLOT(slotTop()));
+// dockMenu->insertItem( tr("Right"), this, SLOT(slotRight()));
+// dockMenu->insertItem( tr("Bottom"), this, SLOT(slotBottom()));
+// dockMenu->insertItem( tr("Left"), this, SLOT(slotLeft()));
+// popup->insertItem( tr("Allow Docking To..."), dockMenu);
+// dockMenu->setItemChecked(dockMenu->idAt(0), dockTop);
+// dockMenu->setItemChecked(dockMenu->idAt(1), dockRight);
+// dockMenu->setItemChecked(dockMenu->idAt(2), dockBottom);
+// dockMenu->setItemChecked(dockMenu->idAt(3), dockLeft);
+//
+// orientationMenu = new QMenu(0);
+// orientationMenu->setCheckable(true);
+// orientationMenu->insertItem( tr("Horizontal"), this, SLOT(slotHor()));
+// orientationMenu->insertItem( tr("Vertical"), this, SLOT(slotVert()));
+// popup->insertItem( tr("Floating Orientation..."), orientationMenu);
+// bool b=(floatOrientation == Qt::Horizontal);
+// orientationMenu->setItemChecked(orientationMenu->idAt(0), b);
+// orientationMenu->setItemChecked(orientationMenu->idAt(1), !b);
+}
+
+// void ScToolBar::initPrefsButton()
+// {
+// prefsButton = new QToolButton(Qt::DownArrow, this, "tbprefsbutton");
+// prefsButton->setAutoRaise(true);
+// popup = new QMenu(0);
+// prefsButton->setPopup(popup);
+// prefsButton->setPopupDelay(1);
+// }
+
+ScToolBar::~ScToolBar()
+{
+
+}
+
+void ScToolBar::hideEvent(QHideEvent * e)
+{
+ emit visibilityChanged(isVisible());
+ QToolBar::hideEvent(e);
+}
+
+void ScToolBar::showEvent(QShowEvent * e)
+{
+ emit visibilityChanged(isVisible());
+ QToolBar::showEvent(e);
+}