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)
{}
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()
{

View File

@ -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;
};

View File

@ -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 ) {