From dfb079e778948614a3ab42ad492a25a476a1f568 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Peter=20K=C3=BCmmel?= Date: Wed, 29 Nov 2006 10:04:35 +0000 Subject: [PATCH] add tool bar popup with three icon sizes: small, normal, big git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16100 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiView.C | 84 ++++++++++++++++++++++++++++++++----- src/frontends/qt4/GuiView.h | 8 ++++ src/lyx_main.C | 2 +- 3 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/frontends/qt4/GuiView.C b/src/frontends/qt4/GuiView.C index d98c527637..3f5b053585 100644 --- a/src/frontends/qt4/GuiView.C +++ b/src/frontends/qt4/GuiView.C @@ -107,17 +107,57 @@ struct GuiView::GuiViewPrivate GuiViewPrivate() : wt(0), posx_offset(0), posy_offset(0) {} - static int iconSizeXY_; + unsigned int smallIconSize; + unsigned int normalIconSize; + unsigned int bigIconSize; + // static needed by "New Window" + static unsigned int lastIconSize; + + QMenu* toolBarPopup(GuiView *parent) + { + QMenu* menu = new QMenu(parent); + QActionGroup *iconSizeGroup = new QActionGroup(parent); + + QAction *smallIcons = new QAction(iconSizeGroup); + smallIcons->setText("Small sized icons"); + smallIcons->setCheckable(true); + QObject::connect(smallIcons, SIGNAL(triggered()), parent, SLOT(smallSizedIcons())); + menu->addAction(smallIcons); + + QAction *normalIcons = new QAction(iconSizeGroup); + normalIcons->setText("Normal sized icons"); + normalIcons->setCheckable(true); + QObject::connect(normalIcons, SIGNAL(triggered()), parent, SLOT(normalSizedIcons())); + menu->addAction(normalIcons); + + + QAction *bigIcons = new QAction(iconSizeGroup); + bigIcons->setText("Big sized icons"); + bigIcons->setCheckable(true); + QObject::connect(bigIcons, SIGNAL(triggered()), parent, SLOT(bigSizedIcons())); + menu->addAction(bigIcons); + + int cur = parent->iconSize().width(); + if ( cur == parent->d.smallIconSize) + smallIcons->setChecked(true); + else if (cur == parent->d.normalIconSize) + normalIcons->setChecked(true); + else if (cur == parent->d.bigIconSize) + bigIcons->setChecked(true); + + return menu; + } }; -int GuiView::GuiViewPrivate::iconSizeXY_ = -1; +unsigned int GuiView::GuiViewPrivate::lastIconSize = 0; GuiView::GuiView(int id) : QMainWindow(), LyXView(id), commandbuffer_(0), d(*new GuiViewPrivate) { - // static var needed by the "New Window", because setGeometry will not be called - if (GuiViewPrivate::iconSizeXY_ != -1) - setIconSize(QSize(GuiViewPrivate::iconSizeXY_, GuiViewPrivate::iconSizeXY_)); + // hardcode here the platform specific icon size + d.smallIconSize = 14; // scaling problems + d.normalIconSize = 20; // ok, default + d.bigIconSize = 26; // better for some math icons //bufferview_.reset(new BufferView(this, width, height)); @@ -144,8 +184,7 @@ void GuiView::close() QMenu* GuiView::createPopupMenu() { - // disable toolbar popup menu - return 0; + return d.toolBarPopup(this); } void GuiView::init() @@ -206,11 +245,13 @@ void GuiView::setGeometry(unsigned int width, bool maximize, unsigned int iconSizeXY) { - if (iconSizeXY > 8) - GuiViewPrivate::iconSizeXY_ = iconSizeXY; + // use last value (not at startup) + if (d.lastIconSize != 0) + setIconSize(d.lastIconSize); + else if (iconSizeXY != 0) + setIconSize(iconSizeXY); else - GuiViewPrivate::iconSizeXY_ = 28; - setIconSize(QSize(GuiViewPrivate::iconSizeXY_, GuiViewPrivate::iconSizeXY_)); + setIconSize(d.normalIconSize); // only true when the -geometry option was NOT used if (width != 0 && height != 0) { @@ -300,6 +341,27 @@ void GuiView::clearMessage() update_view_state_qt(); } +void GuiView::setIconSize(unsigned int size) +{ + d.lastIconSize = size; + QMainWindow::setIconSize(QSize(size, size)); +} + +void GuiView::smallSizedIcons() +{ + setIconSize(d.smallIconSize); +} + +void GuiView::normalSizedIcons() +{ + setIconSize(d.normalIconSize); +} + +void GuiView::bigSizedIcons() +{ + setIconSize(d.bigIconSize); +} + void GuiView::focus_command_widget() { diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h index 43d3e859ff..40adbb420c 100644 --- a/src/frontends/qt4/GuiView.h +++ b/src/frontends/qt4/GuiView.h @@ -7,6 +7,7 @@ * \author Lars Gullik Bjornes * \author John Levon * \author Abdelrazak Younes + * \author Peter Kümmel * * Full author contact details are available in file CREDITS. */ @@ -96,6 +97,11 @@ public Q_SLOTS: void currentTabChanged (int index); + /// slots to change the icon size + void smallSizedIcons(); + void normalSizedIcons(); + void bigSizedIcons(); + protected: /// make sure we quit cleanly virtual void closeEvent(QCloseEvent * e); @@ -127,6 +133,8 @@ private: /// QRect floatingGeometry_; + void setIconSize(unsigned int size); + struct GuiViewPrivate; GuiViewPrivate& d; }; diff --git a/src/lyx_main.C b/src/lyx_main.C index 2a4955abf7..7d97fac6a1 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -569,7 +569,7 @@ LyXView * LyX::newLyXView() unsigned int width = 690; unsigned int height = 510; // default icon size, will be overwritten by stored session value - unsigned int iconSizeXY = 26; + unsigned int iconSizeXY = 0; bool maximize = false; // first try lyxrc if (lyxrc.geometry_width != 0 && lyxrc.geometry_height != 0 ) { -- 2.39.2