Skip to content

Commit 9b94470

Browse files
committed
enh: functionalize resource name reset button (#84)
1 parent deb9df5 commit 9b94470

4 files changed

Lines changed: 47 additions & 28 deletions

File tree

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
0.17.2
22
- fix: not all resource name edits were recognized in upload dialog (#84)
33
- fix: check for existence of DC resources before starting uploads (#85)
4+
- enh: functionalize resource name reset button (#84)
45
- enh: sort resources according to internal basin dependencies (#79)
56
- enh: warn user about too many resources in a dataset (#86)
7+
- reg: do not always add directory name to resource name in upload dialog
68
- ref: use more f-strings
79
- ref: add `common.is_dc_file` for consistent resource checks
810
0.17.1

dcoraid/gui/upload/dlg_upload.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ def __init__(self, *args, **kwargs):
115115
# resource-related signals
116116
self.lineEdit_res_filename.textEdited.connect(
117117
self.on_update_resources_model)
118+
self.toolButton_res_filename.clicked.connect(self.on_reset_filename)
118119
self.widget_schema.schema_changed.connect(
119120
self.on_update_resources_model)
120121
self.selModel.selectionChanged.connect(self.on_selection_changed)
@@ -398,6 +399,14 @@ def on_rem_resources(self):
398399
self.rvmodel.rem_resources(sel)
399400
self.listView_resources.clearSelection()
400401

402+
@QtCore.pyqtSlot()
403+
def on_reset_filename(self):
404+
"""Reset the filename of the current resource"""
405+
sel = self.listView_resources.selectedIndexes()
406+
self.rvmodel.reset_filenames(sel)
407+
# update lineEdit_res_filename
408+
self.on_selection_changed()
409+
401410
@QtCore.pyqtSlot()
402411
def on_selection_changed(self):
403412
"""User changed the ListView selection; Refresh side panel"""

dcoraid/gui/upload/dlg_upload.ui

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,10 @@
296296
<bool>false</bool>
297297
</property>
298298
<property name="selectionMode">
299-
<enum>QAbstractItemView::ExtendedSelection</enum>
299+
<enum>QAbstractItemView::SelectionMode::ExtendedSelection</enum>
300300
</property>
301301
<property name="selectionBehavior">
302-
<enum>QAbstractItemView::SelectRows</enum>
302+
<enum>QAbstractItemView::SelectionBehavior::SelectRows</enum>
303303
</property>
304304
</widget>
305305
</item>
@@ -377,10 +377,7 @@
377377
</widget>
378378
</item>
379379
<item>
380-
<widget class="QToolButton" name="toolButton">
381-
<property name="enabled">
382-
<bool>false</bool>
383-
</property>
380+
<widget class="QToolButton" name="toolButton_res_filename">
384381
<property name="acceptDrops">
385382
<bool>false</bool>
386383
</property>
@@ -531,10 +528,10 @@
531528
<string notr="true">color:#888</string>
532529
</property>
533530
<property name="frameShadow">
534-
<enum>QFrame::Plain</enum>
531+
<enum>QFrame::Shadow::Plain</enum>
535532
</property>
536533
<property name="orientation">
537-
<enum>Qt::Horizontal</enum>
534+
<enum>Qt::Orientation::Horizontal</enum>
538535
</property>
539536
</widget>
540537
</item>
@@ -550,10 +547,10 @@
550547
<bool>false</bool>
551548
</property>
552549
<property name="frameShape">
553-
<enum>QFrame::NoFrame</enum>
550+
<enum>QFrame::Shape::NoFrame</enum>
554551
</property>
555552
<property name="frameShadow">
556-
<enum>QFrame::Plain</enum>
553+
<enum>QFrame::Shadow::Plain</enum>
557554
</property>
558555
<property name="lineWidth">
559556
<number>0</number>
@@ -566,8 +563,8 @@
566563
<rect>
567564
<x>0</x>
568565
<y>0</y>
569-
<width>494</width>
570-
<height>575</height>
566+
<width>509</width>
567+
<height>557</height>
571568
</rect>
572569
</property>
573570
<layout class="QVBoxLayout" name="verticalLayout_6">
@@ -616,10 +613,10 @@
616613
<bool>false</bool>
617614
</property>
618615
<property name="orientation">
619-
<enum>Qt::Horizontal</enum>
616+
<enum>Qt::Orientation::Horizontal</enum>
620617
</property>
621618
<property name="standardButtons">
622-
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel</set>
619+
<set>QDialogButtonBox::StandardButton::Apply|QDialogButtonBox::StandardButton::Cancel</set>
623620
</property>
624621
</widget>
625622
</item>

dcoraid/gui/upload/resources_model.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import collections
12
import re
23
from collections import OrderedDict
34
import copy
@@ -29,7 +30,18 @@ def add_resources(self, rslist):
2930
"""
3031
for ff in rslist:
3132
if ff not in self.resources: # avoid adding the same file twice
32-
self.resources[ff] = {}
33+
# initialize file metadata
34+
data = {"file": {}}
35+
path = pathlib.Path(ff)
36+
fname = path.name
37+
if re.match("M[0-9]*_data.rtdc", fname):
38+
# We have M0001_data.rtdc. Get the file name from the
39+
# directory above so the user does not have to manually
40+
# rename everything
41+
fname = f"{path.parent.name}_{fname}"
42+
data["file"]["filename"] = job.valid_resource_name(fname)
43+
data["file"]["filename_init"] = data["file"]["filename"]
44+
self.resources[ff] = data
3345
self.layoutChanged.emit()
3446

3547
def data(self, index, role=QtCore.Qt.ItemDataRole.DisplayRole):
@@ -80,7 +92,7 @@ def supplements_were_edited(self):
8092

8193
def get_all_data(self, magic_keys=True):
8294
"""Return dictionary with complete information for all resources"""
83-
data = {}
95+
data = collections.OrderedDict()
8496
for ii, path in enumerate(self.resources.keys()):
8597
data[path] = self.get_data_for_row(ii, magic_keys=magic_keys)[1]
8698
return data
@@ -111,17 +123,6 @@ def get_data_for_row(self, row, magic_keys=True):
111123
"""Return the complete information dictionary for this row index"""
112124
rfile = self.get_file_list()[row]
113125
data = copy.deepcopy(self.resources[rfile])
114-
if "file" not in data:
115-
data["file"] = {}
116-
if "filename" not in data["file"]:
117-
path = pathlib.Path(rfile)
118-
fname = path.name
119-
if re.match("M[0-9]*_data.rtdc", "M0001_data.rtdc"):
120-
# We have M0001_data.rtdc. Get the file name from the
121-
# directory above so the user does not have to manually
122-
# rename everything
123-
fname = f"{path.parent.name}_{fname}"
124-
data["file"]["filename"] = job.valid_resource_name(fname)
125126
if "supplement" not in data:
126127
data["supplement"] = {}
127128
if not magic_keys:
@@ -169,6 +170,16 @@ def rem_resources(self, indexes):
169170
self.resources.pop(pp)
170171
self.layoutChanged.emit()
171172

173+
def reset_filenames(self, indexes):
174+
"""Reset the file names of the resources in list of index instances"""
175+
resource_keys = list(self.resources.keys())
176+
ids = [idx.row() for idx in indexes]
177+
for index in ids:
178+
key = resource_keys[index]
179+
self.resources[key]["file"]["filename"] = \
180+
self.resources[key]["file"]["filename_init"]
181+
self.layoutChanged.emit()
182+
172183
def rowCount(self, index=None):
173184
"""Return number of resources"""
174185
return len(self.resources)
@@ -181,7 +192,7 @@ def update_resources(self, indexes, data_dict):
181192
elif len(indexes) == 1 and "file" in data_dict:
182193
# update the name
183194
pp = self.get_filename_from_index(indexes[0])
184-
self.resources[pp].update({"file": data_dict["file"]})
195+
self.resources[pp]["file"].update(data_dict["file"])
185196

186197
if "supplement" in data_dict:
187198
for idx in indexes:

0 commit comments

Comments
 (0)