[QGIS Commit] r10374 - in trunk/qgis/src: app/attributetable ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Mar 21 14:06:49 EDT 2009
Author: wonder
Date: 2009-03-21 14:06:49 -0400 (Sat, 21 Mar 2009)
New Revision: 10374
Modified:
trunk/qgis/src/app/attributetable/BeataDialog.cpp
trunk/qgis/src/app/attributetable/BeataDialog.h
trunk/qgis/src/ui/BeataGui.ui
Log:
attribute table: docking available again, better switching between all/selected rows, fixed editing toggle
Modified: trunk/qgis/src/app/attributetable/BeataDialog.cpp
===================================================================
--- trunk/qgis/src/app/attributetable/BeataDialog.cpp 2009-03-21 17:34:03 UTC (rev 10373)
+++ trunk/qgis/src/app/attributetable/BeataDialog.cpp 2009-03-21 18:06:49 UTC (rev 10374)
@@ -30,8 +30,25 @@
#include "qgisapp.h"
#include "qgssearchquerybuilder.h"
+
+class QBeataTableDock : public QDockWidget
+{
+ public:
+ QBeataTableDock( const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = 0 )
+ : QDockWidget( title, parent, flags )
+ {
+ setObjectName("AttributeTable"); // set object name so the position can be saved
+ }
+
+ virtual void closeEvent( QCloseEvent * ev )
+ {
+ deleteLater();
+ }
+};
+
+
BeataDialog::BeataDialog(QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags)
- : QDialog(parent, flags)
+ : QDialog(parent, flags), mDock(NULL)
{
mLayer = theLayer;
@@ -50,9 +67,17 @@
mColumnBox = columnBox;
columnBoxInit();
- mShowBox = showBox;
- mShowBox->addItem("Show unselected rows");
- mShowBox->addItem("Hide unselected rows");
+ QSettings mySettings;
+ bool myDockFlag = mySettings.value( "/qgis/dockAttributeTable", false ).toBool();
+ if ( myDockFlag )
+ {
+ mDock = new QBeataTableDock( tr( "Attribute table - %1" ).arg( mLayer->name() ), QgisApp::instance() );
+ mDock->setAllowedAreas( Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea );
+ mDock->setWidget( this );
+ QgisApp::instance()->addDockWidget( Qt::BottomDockWidgetArea, mDock );
+ }
+
+ setWindowTitle( tr( "Attribute table - %1" ).arg( mLayer->name() ) );
mMenuActions = new QMenu();
mMenuActions->addAction(tr("Advanced search"), this, SLOT(advancedSearch()));
@@ -69,12 +94,14 @@
mActionToggleEditing->setCheckable( true );
mActionToggleEditing->setEnabled( mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues );
// info from table to application
- connect( this, SIGNAL( editingToggled( QgsMapLayer * ) ), parentWidget(), SLOT( toggleEditing( QgsMapLayer * ) ) );
+ connect( this, SIGNAL( editingToggled( QgsMapLayer * ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer * ) ) );
// info from layer to table
connect( mLayer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) );
connect( mLayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) );
- connect(mShowBox, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(toggleShowDeselected(const QString &)));
+ connect(btnShowAll, SIGNAL(clicked()), this, SLOT(clickedShowAll()));
+ connect(btnShowSelected, SIGNAL(clicked()), this, SLOT(clickedShowSelected()));
+
connect(searchButton, SIGNAL(clicked()), this, SLOT(search()));
connect(actionsButton, SIGNAL(clicked()), this, SLOT(showAdvanced()));
@@ -82,6 +109,8 @@
connect(mLayer, SIGNAL(layerDeleted()), this, SLOT( close()));
connect(mView->verticalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(updateRowSelection(int)));
connect(mModel, SIGNAL(modelChanged()), this, SLOT(updateSelection()));
+
+ clickedShowAll(); // make sure the show all button is checked
mLastClickedHeaderIndex = 0;
mSelectionModel = new QItemSelectionModel(mFilterModel);
@@ -96,8 +125,11 @@
{
QDialog::closeEvent( event );
- QSettings settings;
- settings.setValue( "/Windows/BetterAttributeTable/geometry", saveGeometry() );
+ if ( mDock == NULL )
+ {
+ QSettings settings;
+ settings.setValue( "/Windows/BetterAttributeTable/geometry", saveGeometry() );
+ }
}
@@ -188,18 +220,30 @@
mLayer->removeSelection();
}
-void BeataDialog::toggleShowDeselected(const QString &text)
+void BeataDialog::clickedShowAll()
{
- if (text == "Show unselected rows")
+ // the button can't be unchecked by clicking it
+ // gets unchecked when show selected is clicked
+ if (!btnShowAll->isChecked())
{
- mFilterModel->mHideUnselected = false;
- //TODO: divne
- //mModel->changeLayout();
- mFilterModel->invalidate();
- return;
+ btnShowAll->setChecked(true);
}
+ btnShowSelected->setChecked(false);
+
+ mFilterModel->mHideUnselected = false;
+ mFilterModel->invalidate();
+ //TODO: weird
+ //mModel->changeLayout();
+}
- // show only selected
+void BeataDialog::clickedShowSelected()
+{
+ if (!btnShowSelected->isChecked())
+ {
+ btnShowSelected->setChecked(true);
+ }
+ btnShowAll->setChecked(false);
+
mFilterModel->mHideUnselected = true;
mFilterModel->invalidate();
//mModel->changeLayout();
Modified: trunk/qgis/src/app/attributetable/BeataDialog.h
===================================================================
--- trunk/qgis/src/app/attributetable/BeataDialog.h 2009-03-21 17:34:03 UTC (rev 10373)
+++ trunk/qgis/src/app/attributetable/BeataDialog.h 2009-03-21 18:06:49 UTC (rev 10374)
@@ -35,6 +35,7 @@
class QLineEdit;
class QComboBox;
class QMenu;
+class QDockWidget;
class BeataModel;
class BeataFilterModel;
@@ -60,8 +61,10 @@
void updateSelectionFromLayer();
void updateRowSelection(int index);
void updateRowSelection(int first, int last, bool startNewSelection);
- void toggleShowDeselected(const QString &text);
+ void clickedShowAll();
+ void clickedShowSelected();
+
void startEditing();
void invertSelection();
void removeSelection();
@@ -98,6 +101,8 @@
QItemSelectionModel* mSelectionModel;
int mLastClickedHeaderIndex;
+
+ QDockWidget *mDock;
};
#endif
Modified: trunk/qgis/src/ui/BeataGui.ui
===================================================================
--- trunk/qgis/src/ui/BeataGui.ui 2009-03-21 17:34:03 UTC (rev 10373)
+++ trunk/qgis/src/ui/BeataGui.ui 2009-03-21 18:06:49 UTC (rev 10374)
@@ -21,7 +21,7 @@
<item>
<widget class="QPushButton" name="searchButton" >
<property name="text" >
- <string>Search</string>
+ <string>&Search</string>
</property>
</widget>
</item>
@@ -46,21 +46,53 @@
<widget class="QComboBox" name="columnBox" />
</item>
<item>
- <widget class="Line" name="line" >
+ <spacer>
<property name="orientation" >
- <enum>Qt::Vertical</enum>
+ <enum>Qt::Horizontal</enum>
</property>
- </widget>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</item>
<item>
- <widget class="QComboBox" name="showBox" />
- </item>
- <item>
- <widget class="Line" name="line_2" >
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
+ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>0</number>
</property>
- </widget>
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="btnShowAll" >
+ <property name="focusPolicy" >
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text" >
+ <string>&All</string>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnShowSelected" >
+ <property name="focusPolicy" >
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text" >
+ <string>S&elected</string>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
<item>
<widget class="QPushButton" name="actionsButton" >
@@ -80,6 +112,15 @@
<header>BeataView.h</header>
</customwidget>
</customwidgets>
+ <tabstops>
+ <tabstop>mView</tabstop>
+ <tabstop>searchButton</tabstop>
+ <tabstop>query</tabstop>
+ <tabstop>columnBox</tabstop>
+ <tabstop>btnShowAll</tabstop>
+ <tabstop>btnShowSelected</tabstop>
+ <tabstop>actionsButton</tabstop>
+ </tabstops>
<resources/>
<connections/>
</ui>
More information about the QGIS-commit
mailing list