1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-01 12:36:42 +00:00

added self-adjusting tooltips to the top-level toolbar buttons

This commit is contained in:
Marc Zinnschlag 2014-07-13 14:21:50 +02:00
parent 26f87f5d23
commit c2ea8f3f0a
6 changed files with 44 additions and 18 deletions

View file

@ -56,7 +56,7 @@ namespace CSVRender
CSVWidget::SceneToolMode *SceneWidget::makeLightingSelector (CSVWidget::SceneToolbar *parent) CSVWidget::SceneToolMode *SceneWidget::makeLightingSelector (CSVWidget::SceneToolbar *parent)
{ {
CSVWidget::SceneToolMode *tool = new CSVWidget::SceneToolMode (parent); CSVWidget::SceneToolMode *tool = new CSVWidget::SceneToolMode (parent, "Lighting Mode");
/// \todo replace icons /// \todo replace icons
tool->addButton (":door.png", "day", tool->addButton (":door.png", "day",

View file

@ -57,7 +57,7 @@ void CSVRender::WorldspaceWidget::selectDefaultNavigationMode()
CSVWidget::SceneToolMode *CSVRender::WorldspaceWidget::makeNavigationSelector ( CSVWidget::SceneToolMode *CSVRender::WorldspaceWidget::makeNavigationSelector (
CSVWidget::SceneToolbar *parent) CSVWidget::SceneToolbar *parent)
{ {
CSVWidget::SceneToolMode *tool = new CSVWidget::SceneToolMode (parent); CSVWidget::SceneToolMode *tool = new CSVWidget::SceneToolMode (parent, "Camera Mode");
/// \todo replace icons /// \todo replace icons
/// \todo consider user-defined button-mapping /// \todo consider user-defined button-mapping

View file

@ -4,11 +4,11 @@
#include <QMouseEvent> #include <QMouseEvent>
#include <QKeyEvent> #include <QKeyEvent>
void CSVWidget::PushButton::setExtendedToolTip (const std::string& text) void CSVWidget::PushButton::setExtendedToolTip (const QString& text)
{ {
std::string tooltip = text; QString tooltip = text;
if (tooltip.empty()) if (tooltip.isEmpty())
tooltip = "(Tool tip not implemented yet)"; tooltip = "(Tool tip not implemented yet)";
switch (mType) switch (mType)
@ -29,7 +29,7 @@ void CSVWidget::PushButton::setExtendedToolTip (const std::string& text)
break; break;
} }
setToolTip (QString::fromUtf8 (tooltip.c_str())); setToolTip (tooltip);
} }
void CSVWidget::PushButton::keyPressEvent (QKeyEvent *event) void CSVWidget::PushButton::keyPressEvent (QKeyEvent *event)
@ -57,16 +57,16 @@ void CSVWidget::PushButton::mouseReleaseEvent (QMouseEvent *event)
QPushButton::mouseReleaseEvent (event); QPushButton::mouseReleaseEvent (event);
} }
CSVWidget::PushButton::PushButton (const QIcon& icon, Type type, const std::string& tooltip, CSVWidget::PushButton::PushButton (const QIcon& icon, Type type, const QString& tooltip,
QWidget *parent) QWidget *parent)
: QPushButton (icon, "", parent), mKeepOpen (false), mType (type) : QPushButton (icon, "", parent), mKeepOpen (false), mType (type), mToolTip (tooltip)
{ {
setCheckable (type==Type_Mode); setCheckable (type==Type_Mode);
setExtendedToolTip (tooltip); setExtendedToolTip (tooltip);
} }
CSVWidget::PushButton::PushButton (Type type, const std::string& tooltip, QWidget *parent) CSVWidget::PushButton::PushButton (Type type, const QString& tooltip, QWidget *parent)
: QPushButton (parent), mKeepOpen (false), mType (type) : QPushButton (parent), mKeepOpen (false), mType (type), mToolTip (tooltip)
{ {
setCheckable (type==Type_Mode); setCheckable (type==Type_Mode);
setExtendedToolTip (tooltip); setExtendedToolTip (tooltip);
@ -75,4 +75,9 @@ CSVWidget::PushButton::PushButton (Type type, const std::string& tooltip, QWidge
bool CSVWidget::PushButton::hasKeepOpen() const bool CSVWidget::PushButton::hasKeepOpen() const
{ {
return mKeepOpen; return mKeepOpen;
}
QString CSVWidget::PushButton::getBaseToolTip() const
{
return mToolTip;
} }

View file

@ -21,10 +21,11 @@ namespace CSVWidget
bool mKeepOpen; bool mKeepOpen;
Type mType; Type mType;
QString mToolTip;
private: private:
void setExtendedToolTip (const std::string& text); void setExtendedToolTip (const QString& text);
protected: protected:
@ -37,14 +38,17 @@ namespace CSVWidget
public: public:
/// \param push Do not maintain a toggle state /// \param push Do not maintain a toggle state
PushButton (const QIcon& icon, Type type, const std::string& tooltip = "", PushButton (const QIcon& icon, Type type, const QString& tooltip = "",
QWidget *parent = 0); QWidget *parent = 0);
/// \param push Do not maintain a toggle state /// \param push Do not maintain a toggle state
PushButton (Type type, const std::string& tooltip = "", PushButton (Type type, const QString& tooltip = "",
QWidget *parent = 0); QWidget *parent = 0);
bool hasKeepOpen() const; bool hasKeepOpen() const;
/// Return tooltip used at construction (without any button-specific modifications)
QString getBaseToolTip() const;
}; };
} }

View file

@ -8,8 +8,20 @@
#include "scenetoolbar.hpp" #include "scenetoolbar.hpp"
#include "pushbutton.hpp" #include "pushbutton.hpp"
CSVWidget::SceneToolMode::SceneToolMode (SceneToolbar *parent) void CSVWidget::SceneToolMode::adjustToolTip (const PushButton *activeMode)
: SceneTool (parent), mButtonSize (parent->getButtonSize()), mIconSize (parent->getIconSize()) {
QString toolTip = mToolTip;
toolTip += "<p>Currently selected: " + activeMode->getBaseToolTip();
toolTip += "<p>(left click to change mode)";
setToolTip (toolTip);
}
CSVWidget::SceneToolMode::SceneToolMode (SceneToolbar *parent, const QString& toolTip)
: SceneTool (parent), mButtonSize (parent->getButtonSize()), mIconSize (parent->getIconSize()),
mToolTip (toolTip)
{ {
mPanel = new QFrame (this, Qt::Popup); mPanel = new QFrame (this, Qt::Popup);
@ -30,7 +42,7 @@ void CSVWidget::SceneToolMode::showPanel (const QPoint& position)
} }
void CSVWidget::SceneToolMode::addButton (const std::string& icon, const std::string& id, void CSVWidget::SceneToolMode::addButton (const std::string& icon, const std::string& id,
const std::string& tooltip) const QString& tooltip)
{ {
PushButton *button = new PushButton (QIcon (QPixmap (icon.c_str())), PushButton::Type_Mode, PushButton *button = new PushButton (QIcon (QPixmap (icon.c_str())), PushButton::Type_Mode,
tooltip, mPanel); tooltip, mPanel);
@ -48,6 +60,7 @@ void CSVWidget::SceneToolMode::addButton (const std::string& icon, const std::st
{ {
setIcon (button->icon()); setIcon (button->icon());
button->setChecked (true); button->setChecked (true);
adjustToolTip (button);
} }
} }
@ -66,6 +79,7 @@ void CSVWidget::SceneToolMode::selected()
iter2->first->setChecked (iter2==iter); iter2->first->setChecked (iter2==iter);
setIcon (iter->first->icon()); setIcon (iter->first->icon());
adjustToolTip (iter->first);
emit modeChanged (iter->second); emit modeChanged (iter->second);
} }
} }

View file

@ -22,15 +22,18 @@ namespace CSVWidget
std::map<PushButton *, std::string> mButtons; // widget, id std::map<PushButton *, std::string> mButtons; // widget, id
int mButtonSize; int mButtonSize;
int mIconSize; int mIconSize;
QString mToolTip;
void adjustToolTip (const PushButton *activeMode);
public: public:
SceneToolMode (SceneToolbar *parent); SceneToolMode (SceneToolbar *parent, const QString& toolTip);
virtual void showPanel (const QPoint& position); virtual void showPanel (const QPoint& position);
void addButton (const std::string& icon, const std::string& id, void addButton (const std::string& icon, const std::string& id,
const std::string& tooltip = ""); const QString& tooltip = "");
signals: signals: