Here the next proposal:

 * two sizes: big and small
 * hard coded platform specific sizes in GuiView.C
   (is this a good idea?)
 * session file value is alway possible
 * choosing small/big overwrites session file value

Peter

Index: src/frontends/qt4/GuiView.h
===================================================================
--- src/frontends/qt4/GuiView.h (Revision 16088)
+++ src/frontends/qt4/GuiView.h (Arbeitskopie)
@@ -96,6 +96,10 @@
 
        void currentTabChanged (int index); 
 
+       void smallIcons();
+       void bigIcons();
+
+
 protected:
        /// make sure we quit cleanly
        virtual void closeEvent(QCloseEvent * e);
Index: src/frontends/qt4/GuiView.C
===================================================================
--- src/frontends/qt4/GuiView.C (Revision 16088)
+++ src/frontends/qt4/GuiView.C (Arbeitskopie)
@@ -90,6 +90,8 @@
        }
 };
 
+
+
 struct GuiView::GuiViewPrivate
 {
        typedef std::map<int, FuncRequest> FuncMap;
@@ -107,18 +109,53 @@
        GuiViewPrivate() : wt(0), posx_offset(0), posy_offset(0)
        {}
 
-       static int iconSizeXY_;
+       int smallIconSize;
+       int bigIconSize;
+       static int actualIconSize;
+
+       QMenu* toolBarPopup(GuiView *parent)
+       {
+               QMenu* menu = new QMenu(parent);
+               QActionGroup *iconSizeGroup = new QActionGroup(parent);
+
+               QAction *smallIcons = new QAction(iconSizeGroup);
+               QObject::connect(smallIcons, SIGNAL(triggered()), parent, 
SLOT(smallIcons()));
+               smallIcons->setText("Small Icons");
+               smallIcons->setCheckable(true);
+               menu->addAction(smallIcons);
+
+               QAction *bigIcons = new QAction(iconSizeGroup);
+               QObject::connect(bigIcons, SIGNAL(triggered()), parent, 
SLOT(bigIcons()));
+               bigIcons->setText("Big Icons");
+               bigIcons->setCheckable(true);
+               menu->addAction(bigIcons);
+
+               if (parent->d.actualIconSize == parent->d.smallIconSize)
+                       smallIcons->setChecked(true);
+               else if (parent->d.actualIconSize == parent->d.bigIconSize)
+                       bigIcons->setChecked(true);
+
+               return menu;
+       }
 };
 
-int GuiView::GuiViewPrivate::iconSizeXY_ = -1;
+int GuiView::GuiViewPrivate::actualIconSize = -1;
 
 GuiView::GuiView(int id)
        : QMainWindow(), LyXView(id), commandbuffer_(0), d(*new GuiViewPrivate)
 {
+
+       // hardcode here the platform specific iconsize?
+       d.smallIconSize = 20;
+       d.bigIconSize = 26;
+
        // static var needed by the "New Window", because setGeometry will not 
be called
-       if (GuiViewPrivate::iconSizeXY_ != -1)
-               setIconSize(QSize(GuiViewPrivate::iconSizeXY_, 
GuiViewPrivate::iconSizeXY_));
+       if (GuiViewPrivate::actualIconSize != -1)
+               d.actualIconSize = d.bigIconSize;
+               
+       setIconSize(QSize(GuiViewPrivate::actualIconSize, 
GuiViewPrivate::actualIconSize));
 
+
        //bufferview_.reset(new BufferView(this, width, height));
 
 #ifndef Q_WS_MACX
@@ -144,8 +181,7 @@
 
 QMenu* GuiView::createPopupMenu()
 {
-       // disable toolbar popup menu 
-       return 0;
+       return d.toolBarPopup(this);
 }
 
 void GuiView::init()
@@ -206,11 +242,9 @@
                                                                  bool maximize,
                                                                  unsigned int 
iconSizeXY)
 {
-       if (iconSizeXY > 8)
-               GuiViewPrivate::iconSizeXY_ = iconSizeXY;
-       else
-               GuiViewPrivate::iconSizeXY_ = 28;
-       setIconSize(QSize(GuiViewPrivate::iconSizeXY_, 
GuiViewPrivate::iconSizeXY_));
+       GuiViewPrivate::actualIconSize = iconSizeXY;
+       // allow all values from the sesssion file
+       setIconSize(QSize(GuiViewPrivate::actualIconSize, 
GuiViewPrivate::actualIconSize));
 
        // only true when the -geometry option was NOT used
        if (width != 0 && height != 0) {
@@ -300,7 +334,18 @@
        update_view_state_qt();
 }
 
+void GuiView::smallIcons()
+{
+       d.actualIconSize = d.smallIconSize;
+       setIconSize(QSize(d.actualIconSize, d.actualIconSize));
+}
 
+void GuiView::bigIcons()
+{
+       d.actualIconSize = d.bigIconSize;
+       setIconSize(QSize(d.actualIconSize, d.actualIconSize));
+}
+
 void GuiView::focus_command_widget()
 {
        if (commandbuffer_)

Reply via email to