17
17
#include " qgsdevtoolwidgetfactory.h"
18
18
#include " qgsdevtoolwidget.h"
19
19
#include " qgspanelwidgetstack.h"
20
+ #include " qgssettingsentryimpl.h"
21
+
22
+ const QgsSettingsEntryString *QgsDevToolsPanelWidget::settingLastActiveTab = new QgsSettingsEntryString( QStringLiteral( " last-active-tab" ), QgsDevToolsPanelWidget::sTreeDevTools , QString(), QStringLiteral( " Last visible tab in developer tools panel" ) );
20
23
21
24
22
25
QgsDevToolsPanelWidget::QgsDevToolsPanelWidget ( const QList<QgsDevToolWidgetFactory *> &factories, QWidget *parent )
@@ -30,7 +33,12 @@ QgsDevToolsPanelWidget::QgsDevToolsPanelWidget( const QList<QgsDevToolWidgetFact
30
33
for ( QgsDevToolWidgetFactory *factory : factories )
31
34
addToolFactory ( factory );
32
35
33
- connect ( mOptionsListWidget , &QListWidget::currentRowChanged, this , &QgsDevToolsPanelWidget::setCurrentTool );
36
+ connect ( mOptionsListWidget , &QListWidget::currentRowChanged, this , [ = ]( int row )
37
+ {
38
+ setCurrentTool ( row );
39
+ settingLastActiveTab->setValue ( mOptionsListWidget ->currentItem ()->data ( Qt::UserRole ).toString () );
40
+ } );
41
+
34
42
}
35
43
36
44
QgsDevToolsPanelWidget::~QgsDevToolsPanelWidget () = default ;
@@ -45,6 +53,8 @@ void QgsDevToolsPanelWidget::addToolFactory( QgsDevToolWidgetFactory *factory )
45
53
46
54
QListWidgetItem *item = new QListWidgetItem ( factory->icon (), QString () );
47
55
item->setToolTip ( factory->title () );
56
+ item->setData ( Qt::UserRole, factory->title () );
57
+
48
58
mOptionsListWidget ->addItem ( item );
49
59
const int row = mOptionsListWidget ->row ( item );
50
60
mFactoryPages [factory] = row;
@@ -73,6 +83,21 @@ void QgsDevToolsPanelWidget::removeToolFactory( QgsDevToolWidgetFactory *factory
73
83
}
74
84
}
75
85
86
+ void QgsDevToolsPanelWidget::setActiveTab ( const QString &title )
87
+ {
88
+ if ( !title.isEmpty () )
89
+ {
90
+ for ( int row = 0 ; row < mOptionsListWidget ->count (); ++row )
91
+ {
92
+ if ( mOptionsListWidget ->item ( row )->data ( Qt::UserRole ).toString () == title )
93
+ {
94
+ setCurrentTool ( row );
95
+ break ;
96
+ }
97
+ }
98
+ }
99
+ }
100
+
76
101
void QgsDevToolsPanelWidget::setCurrentTool ( int row )
77
102
{
78
103
whileBlocking ( mOptionsListWidget )->setCurrentRow ( row );
0 commit comments