@@ -170,12 +170,15 @@ def _add_section(self, section, parent=None):
170
170
)
171
171
172
172
@staticmethod
173
-
def _format_dirname(preset, preset_dir, plugin_name=None):
173
+
def _format_dirname(preset, dirname, plugin_name=None, parent_dir=None):
174
174
dir_template = '{}: {}'
175
-
preset_relpath = (
176
-
preset.name[len(preset_dir):]
177
-
if plugin_name else preset.name
178
-
)
175
+
if parent_dir:
176
+
preset_relpath = preset.path[len('/'.join(parent_dir.split('/')[:-1])):]
177
+
else:
178
+
preset_relpath = (
179
+
preset.name[len(dirname):]
180
+
if plugin_name else preset.name
181
+
)
179
182
dir_display_name, _slash, item_display_name = preset_relpath.lstrip('/').partition('/')
180
183
if item_display_name:
181
184
dir_display_name = dir_template.format(
@@ -196,32 +199,60 @@ def _format_childname(preset_relpath):
196
199
return dir_display_name
197
200
198
201
def _add_presets( # pylint: disable=too-many-arguments
199
-
self, preset_dir, preset_list,
200
-
plugin_name=None, parent=None
202
+
self, dirname, preset_list,
203
+
plugin_name=None, parent=None, subdir_path=None
201
204
):
202
205
sorted_preset_list = sorted(preset_list, key=lambda x: x.name.lower())
203
206
204
207
first_preset = sorted_preset_list[0]
205
208
piter = self._add_preset(
206
-
display_name=self._format_dirname(first_preset, preset_dir, plugin_name),
209
+
display_name=self._format_dirname(
210
+
first_preset, dirname,
211
+
plugin_name=plugin_name,
212
+
parent_dir=subdir_path,
213
+
),
207
214
name=first_preset.name,
208
215
path=first_preset.path,
209
216
saveable=first_preset.is_saveable,
210
217
parent=parent
211
218
)
212
219
220
+
last_subdir = None
221
+
last_subdir_iter = None
213
222
for preset in sorted_preset_list[1:]:
214
-
display_name = self._format_childname((
215
-
preset.name[len(preset_dir):]
216
-
if preset_dir else preset.name
217
-
))
218
-
self._add_preset(
219
-
display_name=display_name,
220
-
name=preset.name,
221
-
path=preset.path,
222
-
saveable=preset.is_saveable,
223
-
parent=piter
224
-
)
223
+
if len(preset.name.split('/')) > 2:
224
+
preset_subdir = os.path.dirname(preset.path)
225
+
if preset_subdir != last_subdir:
226
+
last_subdir = preset_subdir
227
+
last_subdir_iter = self._add_preset(
228
+
display_name=self._format_dirname(
229
+
preset, dirname,
230
+
plugin_name=plugin_name,
231
+
parent_dir=last_subdir,
232
+
),
233
+
name=preset.name,
234
+
path=preset.path,
235
+
saveable=preset.is_saveable,
236
+
parent=piter
237
+
)
238
+
else:
239
+
self._add_presets(
240
+
dirname=dirname, preset_list=[preset],
241
+
parent=last_subdir_iter,
242
+
subdir_path=last_subdir
243
+
)
244
+
else:
245
+
display_name = self._format_childname((
246
+
preset.name[len(dirname):]
247
+
if dirname else preset.name
248
+
))
249
+
self._add_preset(
250
+
display_name=display_name,
251
+
name=preset.name,
252
+
path=preset.path,
253
+
saveable=preset.is_saveable,
254
+
parent=piter
255
+
)
225
256
226
257
def _load_system_presets(self, all_presets):
227
258
featured_dirs = ('Featured', )
@@ -234,7 +265,7 @@ def _load_system_presets(self, all_presets):
234
265
if preset_dir.startswith(PLUGIN_PATH_PREFIX):
235
266
continue
236
267
self._add_presets(
237
-
preset_dir=preset_dir, preset_list=preset_list,
268
+
dirname=preset_dir, preset_list=preset_list,
238
269
parent=presets_iter
239
270
)
240
271
if UI_SETTINGS.preset_list_sections_expanded.get(Sections.PRESETS.id, True):
@@ -278,7 +309,7 @@ def _load_plugin_presets(self, all_presets): # pylint: disable=too-many-locals
278
309
)
279
310
for dir_name, group in grouped_presets:
280
311
self._add_presets(
281
-
preset_dir=dir_name,
312
+
dirname=dir_name,
282
313
preset_list=group,
283
314
parent=plugin_presets_iter
284
315
)
@@ -292,7 +323,7 @@ def _load_user_presets(self, all_presets):
292
323
if preset_dir.startswith(PLUGIN_PATH_PREFIX):
293
324
continue
294
325
self._add_presets(
295
-
preset_dir=preset_dir, preset_list=preset_list,
326
+
dirname=preset_dir, preset_list=preset_list,
296
327
parent=user_presets_iter
297
328
)
298
329
if UI_SETTINGS.preset_list_sections_expanded.get(Sections.USER.id, True):
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4