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_)