3721.diff
src/app/attributetable/qgsattributetabledialog.cpp (Arbeitskopie) | ||
---|---|---|
90 | 90 |
mZoomMapToSelectedRowsButton->setIcon( getThemeIcon( "/mActionZoomToSelected.png" ) ); |
91 | 91 |
mInvertSelectionButton->setIcon( getThemeIcon( "/mActionInvertSelection.png" ) ); |
92 | 92 |
mToggleEditingButton->setIcon( getThemeIcon( "/mActionToggleEditing.png" ) ); |
93 |
mSaveEditsButton->setIcon( getThemeIcon( "/mActionSaveEdits.png" ) ); |
|
93 | 94 |
mDeleteSelectedButton->setIcon( getThemeIcon( "/mActionDeleteSelected.png" ) ); |
94 | 95 |
mOpenFieldCalculator->setIcon( getThemeIcon( "/mActionCalculateField.png" ) ); |
95 | 96 |
mAddAttribute->setIcon( getThemeIcon( "/mActionNewAttribute.png" ) ); |
... | ... | |
101 | 102 |
bool canAddAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes; |
102 | 103 |
bool canDeleteAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteAttributes; |
103 | 104 |
bool canAddFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures; |
105 | ||
104 | 106 |
mToggleEditingButton->setCheckable( true ); |
105 | 107 |
mToggleEditingButton->setChecked( mLayer->isEditable() ); |
106 | 108 |
mToggleEditingButton->setEnabled( canChangeAttributes && !mLayer->isReadOnly() ); |
109 | ||
110 |
mSaveEditsButton->setEnabled( canChangeAttributes && mLayer->isEditable() ); |
|
107 | 111 |
mOpenFieldCalculator->setEnabled( canChangeAttributes && mLayer->isEditable() ); |
108 | 112 |
mDeleteSelectedButton->setEnabled( canDeleteFeatures && mLayer->isEditable() ); |
109 | 113 |
mAddAttribute->setEnabled( canAddAttributes && mLayer->isEditable() ); |
... | ... | |
113 | 117 | |
114 | 118 |
// info from table to application |
115 | 119 |
connect( this, SIGNAL( editingToggled( QgsMapLayer * ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer * ) ) ); |
120 |
connect( this, SIGNAL( saveEdits( QgsMapLayer * ) ), QgisApp::instance(), SLOT( saveEdits( QgsMapLayer * ) ) ); |
|
121 | ||
116 | 122 |
// info from layer to table |
117 | 123 |
connect( mLayer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) ); |
118 | 124 |
connect( mLayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) ); |
... | ... | |
683 | 689 |
emit editingToggled( mLayer ); |
684 | 690 |
} |
685 | 691 | |
692 |
void QgsAttributeTableDialog::on_mSaveEditsButton_clicked() |
|
693 |
{ |
|
694 |
emit saveEdits( mLayer ); |
|
695 |
} |
|
696 | ||
686 | 697 |
void QgsAttributeTableDialog::editingToggled() |
687 | 698 |
{ |
688 | 699 |
mToggleEditingButton->blockSignals( true ); |
689 | 700 |
mToggleEditingButton->setChecked( mLayer->isEditable() ); |
701 |
mSaveEditsButton->setEnabled( mLayer->isEditable() ); |
|
690 | 702 |
mToggleEditingButton->blockSignals( false ); |
691 | 703 | |
692 | 704 |
bool canChangeAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues; |
src/app/attributetable/qgsattributetabledialog.h (Arbeitskopie) | ||
---|---|---|
114 | 114 |
*/ |
115 | 115 |
void on_mToggleEditingButton_toggled(); |
116 | 116 |
/** |
117 |
* Saves edits |
|
118 |
*/ |
|
119 |
void on_mSaveEditsButton_clicked(); |
|
120 |
/** |
|
117 | 121 |
* Inverts selection |
118 | 122 |
*/ |
119 | 123 |
void on_mInvertSelectionButton_clicked(); |
... | ... | |
160 | 164 | |
161 | 165 |
signals: |
162 | 166 |
/** |
163 |
* Informs that editing mode ha been toggled |
|
167 |
* Informs that editing mode has been toggled
|
|
164 | 168 |
* @param layer layer that has been toggled |
165 | 169 |
*/ |
166 | 170 |
void editingToggled( QgsMapLayer *layer ); |
167 | 171 | |
172 |
/** |
|
173 |
* Informs that edits should be saved |
|
174 |
* @param layer layer whose edits are to be saved |
|
175 |
*/ |
|
176 |
void saveEdits( QgsMapLayer *layer ); |
|
177 | ||
168 | 178 |
protected: |
169 | 179 |
/** |
170 | 180 |
* Handle closing of the window |
src/app/qgisapp.h (Arbeitskopie) | ||
---|---|---|
725 | 725 |
//! starts/stops editing mode of a layer |
726 | 726 |
bool toggleEditing( QgsMapLayer *layer, bool allowCancel = true ); |
727 | 727 | |
728 |
//! save edits of a layer |
|
729 |
void saveEdits( QgsMapLayer *layer ); |
|
730 | ||
728 | 731 |
//! save current vector layer |
729 | 732 |
void saveAsVectorFile(); |
730 | 733 |
void saveSelectionAsVectorFile(); |
src/app/qgisapp.cpp (Arbeitskopie) | ||
---|---|---|
4264 | 4264 |
if ( mMapCanvas && mMapCanvas->isDrawing() ) |
4265 | 4265 |
return; |
4266 | 4266 | |
4267 |
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( activeLayer() ); // FIXME: save edits of all selected layers |
|
4267 |
foreach( QgsMapLayer * layer, mMapLegend->selectedLayers() ) |
|
4268 |
{ |
|
4269 |
saveEdits( layer ); |
|
4270 |
} |
|
4271 |
} |
|
4272 | ||
4273 |
void QgisApp::saveEdits( QgsMapLayer *layer ) |
|
4274 |
{ |
|
4275 |
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer ); |
|
4268 | 4276 |
if ( !vlayer || !vlayer->isEditable() || !vlayer->isModified() ) |
4269 | 4277 |
return; |
4270 | 4278 |
src/ui/qgsattributetabledialog.ui (Arbeitskopie) | ||
---|---|---|
142 | 142 |
<item> |
143 | 143 |
<widget class="QToolButton" name="mInvertSelectionButton"> |
144 | 144 |
<property name="toolTip"> |
145 |
<string>Invert selection (Ctrl+S)</string>
|
|
145 |
<string>Invert selection (Ctrl+R)</string>
|
|
146 | 146 |
</property> |
147 | 147 |
<property name="text"> |
148 | 148 |
<string/> |
... | ... | |
244 | 244 |
</widget> |
245 | 245 |
</item> |
246 | 246 |
<item> |
247 |
<widget class="QToolButton" name="mSaveEditsButton"> |
|
248 |
<property name="toolTip"> |
|
249 |
<string>Save Edits (Ctrl+S)</string> |
|
250 |
</property> |
|
251 |
<property name="whatsThis"> |
|
252 |
<string/> |
|
253 |
</property> |
|
254 |
<property name="text"> |
|
255 |
<string/> |
|
256 |
</property> |
|
257 |
<property name="icon"> |
|
258 |
<iconset> |
|
259 |
<normaloff>../../images/themes/default/mActionSaveEdits.png</normaloff>../../images/themes/default/mActionSaveEdits.png</iconset> |
|
260 |
</property> |
|
261 |
<property name="iconSize"> |
|
262 |
<size> |
|
263 |
<width>18</width> |
|
264 |
<height>18</height> |
|
265 |
</size> |
|
266 |
</property> |
|
267 |
<property name="shortcut"> |
|
268 |
<string>Ctrl+E</string> |
|
269 |
</property> |
|
270 |
<property name="checkable"> |
|
271 |
<bool>true</bool> |
|
272 |
</property> |
|
273 |
</widget> |
|
274 |
</item> |
|
275 |
<item> |
|
247 | 276 |
<widget class="QToolButton" name="mDeleteSelectedButton"> |
248 | 277 |
<property name="toolTip"> |
249 | 278 |
<string>Delete selected features (Ctrl+D)</string> |
... | ... | |
410 | 439 |
<tabstop>mOpenFieldCalculator</tabstop> |
411 | 440 |
</tabstops> |
412 | 441 |
<resources/> |
413 |
<connections/> |
|
442 |
<connections> |
|
443 |
<connection> |
|
444 |
<sender>mToggleEditingButton</sender> |
|
445 |
<signal>toggled(bool)</signal> |
|
446 |
<receiver>mSaveEditsButton</receiver> |
|
447 |
<slot>setEnabled(bool)</slot> |
|
448 |
<hints> |
|
449 |
<hint type="sourcelabel"> |
|
450 |
<x>192</x> |
|
451 |
<y>504</y> |
|
452 |
</hint> |
|
453 |
<hint type="destinationlabel"> |
|
454 |
<x>214</x> |
|
455 |
<y>501</y> |
|
456 |
</hint> |
|
457 |
</hints> |
|
458 |
</connection> |
|
459 |
</connections> |
|
414 | 460 |
</ui> |