Browse Source
Conflicts: src/QGCApplication.cc src/QGCFileDialog.cc src/QGCFileDialog.h src/ui/MainWindow.cc src/ui/QGCBaseParamWidget.cc src/ui/WaypointList.cc src/ui/designer/QGCToolWidget.cc src/ui/linechart/LinechartWidget.cc Merging master Applied changes to file open/save dialogs.QGC4.4
36 changed files with 793 additions and 1305 deletions
@ -1,62 +0,0 @@
@@ -1,62 +0,0 @@
|
||||
[MAVCONN%20Control] |
||||
QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=DO: Control Video |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=CAPTURE |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=200 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=2 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=DO: Control Video |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=STOP |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=200 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=PREFLIGHT: Calibration |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=CALIBRATE |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=1 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER |
||||
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Setpoint ON<->OFF |
||||
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID= |
||||
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=0 |
||||
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=1 |
||||
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=0 |
||||
QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER |
||||
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Glob. Loc ON<->OFF |
||||
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID= |
||||
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=0 |
||||
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=1 |
||||
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=0 |
||||
QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER |
||||
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=GPS ENU HL<->ASL |
||||
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID= |
||||
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=0 |
||||
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0 |
||||
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1 |
||||
QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER |
||||
QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Yaw PX<->ASL |
||||
QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID= |
||||
QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=0 |
||||
QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0 |
||||
QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=1 |
||||
QGC_TOOL_WIDGET_ITEMS\size=7 |
@ -1,3 +0,0 @@
@@ -1,3 +0,0 @@
|
||||
EEPROM,variable name,Min,Max,Default,Multiplier,Enabled (0 = no, 1 = yes),Comment |
||||
HDNG2RLL_P, 0, 5, 0.7, 1, 1, NAV_ROLL_P - Navigation control gains. Tuning values for the navigation control PID loops. The P term is the primary tuning value. This determines how the control deflection varies in proportion to the required correction. |
||||
SYS_TYPE, 0, 15, 1, 1, 1, System type (airframe) |
@ -1,38 +0,0 @@
@@ -1,38 +0,0 @@
|
||||
[MAVCONN%20Control] |
||||
QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=START Recording |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=CAPTURE |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=200 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=2 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=STOP Recording |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=STOP |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=200 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=PREFLIGHT: Calibration |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=CALIBRATE |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=1 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 |
||||
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 |
||||
QGC_TOOL_WIDGET_ITEMS\size=3 |
@ -1,11 +0,0 @@
@@ -1,11 +0,0 @@
|
||||
^ Name ^ Min ^ Max ^ Default ^ Multiplier ^ Enabled ^ Comment ^ |
||||
| BAT_V_EMPTY | 0.9 | 100.0 | 3.2 | 1 | 1 | Voltage of an empty battery cell | |
||||
| BAT_V_FULL | 1.0 | 200.0 | 4.05 | 1 | 1 | Voltage of a full battery cell | |
||||
| BAT_N_CELLS | 1 | 100 | 3 | 1 | 1 | Number of SERIAL battery cells. Typically this ranges from 2S to 6S in small-scale UAVs | |
||||
| BAT_V_SCALING | 0.001 | 1.0 | 0.00838 | 1 | 1 | Conversion from ADC ticks to battery voltage. Depends on the connected board, calibrate with a multimeter. | |
||||
| MC_ATTRATE_P | 0.0 | 20.0 | 0.20 | 1 | 1 | Multirotor attitude rate control P gain. This gain controls how much of the motor thrust should be used to control angular velocity. A larger number will increase the control response, but will make the system also more twitchy. | |
||||
| MC_ATTRATE_D | 0.0 | 20.0 | 0.05 | 1 | 1 | Multirotor attitude rate control D gain. A large value will allow to damp oscillations due to a high P gain, but will make the system response suspectible to noise.| |
||||
| MC_ATT_P | 0.0 | 20.0 | 0.20 | 1 | 1 | Multirotor attitude control proportional (P) gain. This defines how strong the response of the system will be to an attitude error| |
||||
| MC_ATT_D | 0.0 | 20.0 | 0.05 | 1 | 1 | Multirotor attitude control D gain. A large value will allow to damp oscillations due to a high P gain, but will make the system response suspectible to noise.| |
||||
| FW_ROLLRATE_P | 0.0 | 20.0 | 0.30 | 1 | 1 | Fixed wing roll rate control P gain. This gain controls how strong the ailerons or rudder should be actuated in order to achieve a certain roll rate. A larger number will increase the control response, but will make the system also more twitchy. | |
||||
| FW_HEADING_P | 0.0 | 20.0 | 4.00 | 1 | 1 | Fixed wing heading error to bank angle gain | |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#include "QGCDockWidget.h" |
||||
|
||||
#include <QCloseEvent> |
||||
|
||||
QGCDockWidget::QGCDockWidget(const QString& title, QWidget *parent, Qt::WindowFlags flags) : |
||||
QDockWidget(title, parent, flags) |
||||
{ |
||||
|
||||
} |
||||
|
||||
// Instead of destroying the widget just hide it
|
||||
void QGCDockWidget::closeEvent(QCloseEvent* event) |
||||
{ |
||||
event->ignore(); |
||||
setVisible(false); |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
QGROUNDCONTROL is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#ifndef QGCDockWidget_h |
||||
#define QGCDockWidget_h |
||||
|
||||
#include <QDockWidget> |
||||
|
||||
/// @file
|
||||
/// @brief Subclass of QDockWidget so we can intercept the closeEvent.
|
||||
///
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
class QGCDockWidget : public QDockWidget { |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
QGCDockWidget(const QString& title, QWidget *parent = 0, Qt::WindowFlags flags = 0); |
||||
|
||||
void closeEvent(QCloseEvent* event); |
||||
}; |
||||
|
||||
|
||||
#endif |
@ -1,178 +0,0 @@
@@ -1,178 +0,0 @@
|
||||
#include "menuactionhelper.h" |
||||
|
||||
MenuActionHelper::MenuActionHelper(QObject *parent) : QObject(parent), |
||||
m_isAdvancedMode(false), |
||||
m_dockWidgetTitleBarsEnabled(true), |
||||
m_addedCustomSeperator(false) |
||||
{ |
||||
} |
||||
|
||||
QAction *MenuActionHelper::createToolAction(const QString &title, const QString &name) |
||||
{ |
||||
QAction *action = m_menuToDockNameMap.key(name); //For sanity, check that the action is not NULL
|
||||
if(action) { |
||||
qWarning() << "createToolAction was called for action" << name << "which already exists in the menu"; |
||||
return action; |
||||
} |
||||
|
||||
action = new QAction(title, NULL); |
||||
action->setCheckable(true); |
||||
connect(action,SIGNAL(triggered(bool)),this,SLOT(showTool(bool))); |
||||
m_menuToDockNameMap[action] = name; |
||||
m_menu->addAction(action); |
||||
return action; |
||||
} |
||||
|
||||
void MenuActionHelper::removeDockWidget() |
||||
{ |
||||
// Do not dynamic cast or de-reference QObject, since object is either in destructor or may have already
|
||||
// been destroyed.
|
||||
|
||||
QObject *dockWidget = QObject::sender(); |
||||
Q_ASSERT(dockWidget); |
||||
|
||||
//qDebug() << "Dockwidget:" << dockWidget->objectName() << "of type" << dockWidget->metaObject()->className();
|
||||
|
||||
QAction *action = m_menuToDockNameMap.key(dockWidget->objectName()); |
||||
if(action) { |
||||
m_menuToDockNameMap.remove(action); |
||||
action->deleteLater(); |
||||
} |
||||
QMap<MainWindow::VIEW_SECTIONS,QMap<QString,QDockWidget*> >::iterator it; |
||||
for (it = m_centralWidgetToDockWidgetsMap.begin(); it != m_centralWidgetToDockWidgetsMap.end(); ++it) { |
||||
QMap<QString,QDockWidget*>::iterator it2 = it.value().begin(); |
||||
while( it2 != it.value().end()) { |
||||
if(it2.value() == dockWidget) |
||||
it2 = it.value().erase(it2); |
||||
else |
||||
++it2; |
||||
} |
||||
} |
||||
//Don't delete the dockWidget because this could have been called from the dockWidget destructor
|
||||
m_dockWidgets.removeAll(static_cast<QDockWidget*>(dockWidget)); |
||||
} |
||||
|
||||
QAction *MenuActionHelper::createToolActionForCustomDockWidget(const QString &title, const QString& name, QDockWidget* dockWidget, MainWindow::VIEW_SECTIONS view) { |
||||
bool found = false; |
||||
QAction *action = NULL; |
||||
foreach(QAction *act, m_menuToDockNameMap.keys()) { |
||||
if(act->text() == title) { |
||||
found = true; |
||||
action = act; |
||||
} |
||||
} |
||||
|
||||
if(!found) |
||||
action = createToolAction(title, name); |
||||
else |
||||
m_menuToDockNameMap[action] = name; |
||||
|
||||
m_centralWidgetToDockWidgetsMap[view][name] = dockWidget; |
||||
connect(dockWidget, SIGNAL(destroyed()), SLOT(removeDockWidget()),Qt::UniqueConnection); //Use UniqueConnection since we might have already created this connection in createDockWidget
|
||||
connect(dockWidget, SIGNAL(visibilityChanged(bool)), action, SLOT(setChecked(bool))); |
||||
action->setChecked(dockWidget->isVisible()); |
||||
return action; |
||||
} |
||||
|
||||
QDockWidget* MenuActionHelper::createDockWidget(const QString& title,const QString& name) |
||||
{ |
||||
QDockWidget *dockWidget = new QDockWidget(title); |
||||
m_dockWidgets.append(dockWidget); |
||||
setDockWidgetTitleBar(dockWidget); |
||||
dockWidget->setObjectName(name); |
||||
connect(dockWidget, SIGNAL(destroyed()), SLOT(removeDockWidget())); |
||||
|
||||
return dockWidget; |
||||
} |
||||
|
||||
bool MenuActionHelper::containsDockWidget(MainWindow::VIEW_SECTIONS view, const QString &name) const { |
||||
|
||||
return m_centralWidgetToDockWidgetsMap.contains(view) && m_centralWidgetToDockWidgetsMap[view].contains(name); |
||||
} |
||||
|
||||
QDockWidget *MenuActionHelper::getDockWidget(MainWindow::VIEW_SECTIONS view, const QString &name) const { |
||||
if(!m_centralWidgetToDockWidgetsMap.contains(view)) |
||||
return NULL; |
||||
return m_centralWidgetToDockWidgetsMap[view].value(name); |
||||
} |
||||
|
||||
void MenuActionHelper::showTool(bool show) { |
||||
//Called when a menu item is clicked on, regardless of view.
|
||||
QAction* act = qobject_cast<QAction *>(sender()); |
||||
Q_ASSERT(act); |
||||
if (m_menuToDockNameMap.contains(act)) { |
||||
QString name = m_menuToDockNameMap[act]; |
||||
emit needToShowDockWidget(name, show); |
||||
} |
||||
} |
||||
|
||||
void MenuActionHelper::setDockWidgetTitleBarsEnabled(bool enabled) |
||||
{ |
||||
m_dockWidgetTitleBarsEnabled = enabled; |
||||
for (int i = 0; i < m_dockWidgets.size(); i++) |
||||
setDockWidgetTitleBar(m_dockWidgets[i]); |
||||
} |
||||
|
||||
|
||||
void MenuActionHelper::setAdvancedMode(bool advancedMode) |
||||
{ |
||||
m_isAdvancedMode = advancedMode; |
||||
for (int i = 0; i < m_dockWidgets.size(); i++) |
||||
setDockWidgetTitleBar(m_dockWidgets[i]); |
||||
} |
||||
|
||||
void MenuActionHelper::setDockWidgetTitleBar(QDockWidget* widget) |
||||
{ |
||||
Q_ASSERT(widget); |
||||
QWidget* oldTitleBar = widget->titleBarWidget(); |
||||
|
||||
// In advanced mode, we use the default titlebar provided by Qt.
|
||||
if (m_isAdvancedMode) |
||||
{ |
||||
widget->setTitleBarWidget(0); |
||||
} |
||||
// Otherwise, if just a textlabel should be shown, make that the titlebar.
|
||||
else if (m_dockWidgetTitleBarsEnabled) |
||||
{ |
||||
QLabel* label = new QLabel(widget); |
||||
label->setText(widget->windowTitle()); |
||||
label->installEventFilter(this); //Ignore mouse clicks
|
||||
widget->installEventFilter(this); //Update label if window title changes. See eventFilter below
|
||||
widget->setTitleBarWidget(label); |
||||
} |
||||
// And if nothing should be shown, use an empty widget.
|
||||
else |
||||
{ |
||||
QWidget* newTitleBar = new QWidget(widget); |
||||
widget->setTitleBarWidget(newTitleBar); |
||||
} |
||||
|
||||
// Be sure to clean up the old titlebar. When using QDockWidget::setTitleBarWidget(),
|
||||
// it doesn't delete the old titlebar object.
|
||||
delete oldTitleBar; |
||||
} |
||||
|
||||
bool MenuActionHelper::eventFilter(QObject *object,QEvent *event) |
||||
{ |
||||
if (event->type() == QEvent::WindowTitleChange) |
||||
{ |
||||
QDockWidget *dock = qobject_cast<QDockWidget *>(object); |
||||
if(dock) { |
||||
// Update the dock title bar label
|
||||
QLabel *label = dynamic_cast<QLabel *>(dock->titleBarWidget()); |
||||
if(label) |
||||
label->setText(dock->windowTitle()); |
||||
// Now update the action label
|
||||
QString oldObjectName = dock->objectName(); |
||||
QAction *action = m_menuToDockNameMap.key(oldObjectName); |
||||
if(action) |
||||
action->setText(dock->windowTitle()); |
||||
//Now modify the object name - it is a strange naming scheme..
|
||||
} |
||||
} else if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease) |
||||
{ |
||||
if(qobject_cast<QLabel *>(object)) |
||||
return true; |
||||
} |
||||
return QObject::eventFilter(object,event); |
||||
} |
@ -1,51 +0,0 @@
@@ -1,51 +0,0 @@
|
||||
#ifndef MENUACTIONHELPER_H |
||||
#define MENUACTIONHELPER_H |
||||
|
||||
#include "MainWindow.h" |
||||
#include <QDockWidget> |
||||
|
||||
class MenuActionHelper : public QObject |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
MenuActionHelper(QObject *parent = NULL); |
||||
~MenuActionHelper() {} |
||||
|
||||
/** @brief Get title bar mode setting */ |
||||
bool dockWidgetTitleBarsEnabled() const { return m_dockWidgetTitleBarsEnabled; } |
||||
void setDockWidgetTitleBarsEnabled(bool enabled); |
||||
bool isAdvancedMode() const { return m_isAdvancedMode; } |
||||
void setAdvancedMode(bool advancedMode); |
||||
QAction *createToolAction(const QString &title, const QString &name = QString()); |
||||
QAction *createToolActionForCustomDockWidget(const QString& title, const QString& name, QDockWidget* dockWidget, MainWindow::VIEW_SECTIONS view); |
||||
QDockWidget *createDockWidget(const QString& title, const QString& name); |
||||
bool containsDockWidget(MainWindow::VIEW_SECTIONS view, const QString &name) const; |
||||
QDockWidget *getDockWidget(MainWindow::VIEW_SECTIONS view, const QString &name) const; |
||||
|
||||
/** QMenu to add QActions to */ |
||||
void setMenu(QMenu *menu) { m_menu = menu; } |
||||
|
||||
protected: |
||||
virtual bool eventFilter(QObject *object,QEvent *event); |
||||
|
||||
private slots: |
||||
void removeDockWidget(); |
||||
/** @brief Shows a Docked Widget based on the action sender */ |
||||
void showTool(bool show); |
||||
|
||||
signals: |
||||
void needToShowDockWidget(const QString& name, bool show); |
||||
private: |
||||
QMap<QAction*,QString > m_menuToDockNameMap; |
||||
QList<QDockWidget*> m_dockWidgets; |
||||
QMap<MainWindow::VIEW_SECTIONS,QMap<QString,QDockWidget*> > m_centralWidgetToDockWidgetsMap; |
||||
bool m_isAdvancedMode; ///< If enabled dock widgets can be moved and floated.
|
||||
bool m_dockWidgetTitleBarsEnabled; ///< If enabled, dock widget titlebars are displayed when NOT in advanced mode.
|
||||
QMenu *m_menu; ///< \see setMenu()
|
||||
bool m_addedCustomSeperator; ///< Whether we have added a seperator between the actions and the custom actions
|
||||
|
||||
void setDockWidgetTitleBar(QDockWidget* widget); |
||||
|
||||
}; |
||||
|
||||
#endif // MENUACTIONHELPER_H
|
@ -1,6 +0,0 @@
@@ -1,6 +0,0 @@
|
||||
#include "submainwindow.h" |
||||
|
||||
SubMainWindow::SubMainWindow(QWidget *parent) : QMainWindow(parent) |
||||
{ |
||||
|
||||
} |
@ -1,17 +0,0 @@
@@ -1,17 +0,0 @@
|
||||
#ifndef SUBMAINWINDOW_H |
||||
#define SUBMAINWINDOW_H |
||||
|
||||
#include <QMainWindow> |
||||
|
||||
class SubMainWindow : public QMainWindow |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
explicit SubMainWindow(QWidget *parent = 0); |
||||
signals: |
||||
|
||||
public slots: |
||||
|
||||
}; |
||||
|
||||
#endif // SUBMAINWINDOW_H
|
Loading…
Reference in new issue