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
This commit is contained in:
Peter Kümmel 2006-11-29 10:04:35 +00:00
parent e1771f375b
commit dfb079e778
3 changed files with 82 additions and 12 deletions

View File

@ -107,17 +107,57 @@ struct GuiView::GuiViewPrivate
GuiViewPrivate() : wt(0), posx_offset(0), posy_offset(0) 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) GuiView::GuiView(int id)
: QMainWindow(), LyXView(id), commandbuffer_(0), d(*new GuiViewPrivate) : QMainWindow(), LyXView(id), commandbuffer_(0), d(*new GuiViewPrivate)
{ {
// static var needed by the "New Window", because setGeometry will not be called // hardcode here the platform specific icon size
if (GuiViewPrivate::iconSizeXY_ != -1) d.smallIconSize = 14; // scaling problems
setIconSize(QSize(GuiViewPrivate::iconSizeXY_, GuiViewPrivate::iconSizeXY_)); d.normalIconSize = 20; // ok, default
d.bigIconSize = 26; // better for some math icons
//bufferview_.reset(new BufferView(this, width, height)); //bufferview_.reset(new BufferView(this, width, height));
@ -144,8 +184,7 @@ void GuiView::close()
QMenu* GuiView::createPopupMenu() QMenu* GuiView::createPopupMenu()
{ {
// disable toolbar popup menu return d.toolBarPopup(this);
return 0;
} }
void GuiView::init() void GuiView::init()
@ -206,11 +245,13 @@ void GuiView::setGeometry(unsigned int width,
bool maximize, bool maximize,
unsigned int iconSizeXY) unsigned int iconSizeXY)
{ {
if (iconSizeXY > 8) // use last value (not at startup)
GuiViewPrivate::iconSizeXY_ = iconSizeXY; if (d.lastIconSize != 0)
setIconSize(d.lastIconSize);
else if (iconSizeXY != 0)
setIconSize(iconSizeXY);
else else
GuiViewPrivate::iconSizeXY_ = 28; setIconSize(d.normalIconSize);
setIconSize(QSize(GuiViewPrivate::iconSizeXY_, GuiViewPrivate::iconSizeXY_));
// only true when the -geometry option was NOT used // only true when the -geometry option was NOT used
if (width != 0 && height != 0) { if (width != 0 && height != 0) {
@ -300,6 +341,27 @@ void GuiView::clearMessage()
update_view_state_qt(); 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() void GuiView::focus_command_widget()
{ {

View File

@ -7,6 +7,7 @@
* \author Lars Gullik Bjornes * \author Lars Gullik Bjornes
* \author John Levon * \author John Levon
* \author Abdelrazak Younes * \author Abdelrazak Younes
* \author Peter Kümmel
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
@ -96,6 +97,11 @@ public Q_SLOTS:
void currentTabChanged (int index); void currentTabChanged (int index);
/// slots to change the icon size
void smallSizedIcons();
void normalSizedIcons();
void bigSizedIcons();
protected: protected:
/// make sure we quit cleanly /// make sure we quit cleanly
virtual void closeEvent(QCloseEvent * e); virtual void closeEvent(QCloseEvent * e);
@ -127,6 +133,8 @@ private:
/// ///
QRect floatingGeometry_; QRect floatingGeometry_;
void setIconSize(unsigned int size);
struct GuiViewPrivate; struct GuiViewPrivate;
GuiViewPrivate& d; GuiViewPrivate& d;
}; };

View File

@ -569,7 +569,7 @@ LyXView * LyX::newLyXView()
unsigned int width = 690; unsigned int width = 690;
unsigned int height = 510; unsigned int height = 510;
// default icon size, will be overwritten by stored session value // default icon size, will be overwritten by stored session value
unsigned int iconSizeXY = 26; unsigned int iconSizeXY = 0;
bool maximize = false; bool maximize = false;
// first try lyxrc // first try lyxrc
if (lyxrc.geometry_width != 0 && lyxrc.geometry_height != 0 ) { if (lyxrc.geometry_width != 0 && lyxrc.geometry_height != 0 ) {