Skip to content

Commit d704f6a

Browse files
committed
added import/export buttom events
1 parent 2fee109 commit d704f6a

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

qgist/workbench/ui_manager.py

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from PyQt5.QtWidgets import (
4242
QCheckBox,
4343
QComboBox,
44+
QFileDialog,
4445
QInputDialog,
4546
QListWidgetItem,
4647
QMainWindow,
@@ -53,6 +54,7 @@
5354
from .error import QgistWorkbenchNameError
5455
from .dtype_fsm import dtype_fsm_class
5556
from .ui_manager_base import ui_manager_base_class
57+
from ..config import config_class
5658
from ..error import (
5759
Qgist_ALL_Errors,
5860
QgistTypeError,
@@ -100,7 +102,7 @@ def __init__(self, plugin_root_fld, mainwindow, combobox_workbench, combobox_wor
100102

101103
def _connect_ui(self):
102104

103-
for item in ('new', 'delete', 'save', 'rename'):
105+
for item in ('new', 'delete', 'save', 'rename', 'import', 'export'):
104106
self._ui_dict['toolbutton_{NAME:s}'.format(NAME = item)].clicked.connect(
105107
getattr(self, '_toolbutton_{NAME:s}_clicked'.format(NAME = item))
106108
)
@@ -211,6 +213,50 @@ def _toolbutton_rename_clicked(self):
211213
self.reject()
212214
return
213215

216+
def _toolbutton_import_clicked(self):
217+
218+
fn, user_ok = QFileDialog.getOpenFileName(
219+
self,
220+
translate('global', 'Import workbench from file'),
221+
'',
222+
'JSON files (*.json);;All Files (*)',
223+
options = QFileDialog.Options(),
224+
)
225+
if not user_ok:
226+
return
227+
228+
try:
229+
self._fsm.import_workbench(config_class.import_config(fn), self._mainwindow)
230+
self._update_workbenches()
231+
self._uptdate_items()
232+
except QgistWorkbenchNameError as e:
233+
msg_warning(e, self)
234+
return
235+
except Qgist_ALL_Errors as e:
236+
msg_critical(e, self)
237+
self.reject()
238+
return
239+
240+
def _toolbutton_export_clicked(self):
241+
242+
fn, user_ok = QFileDialog.getSaveFileName(
243+
self,
244+
translate('global', 'Export workbench to file'),
245+
'',
246+
'JSON files (*.json);;All Files (*)',
247+
options = QFileDialog.Options(),
248+
)
249+
if not user_ok:
250+
return
251+
252+
try:
253+
name = self._workbench_index_to_name(self._ui_dict['list_workbenches'].currentRow())
254+
config_class.export_config(fn, self._fsm.export_workbench(name))
255+
except Qgist_ALL_Errors as e:
256+
msg_critical(e, self)
257+
self.reject()
258+
return
259+
214260
def _update_workbenches(self):
215261

216262
self._ui_dict['list_workbenches'].setEnabled(False)

0 commit comments

Comments
 (0)