1+ import collections
12import re
23from collections import OrderedDict
34import 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