diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/sctoolbar.cpp | |
| download | scribus-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.cpp | 321 |
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); +} |
