Skip to content

Commit 5f46860

Browse files
authored
Merge pull request #12 from alustig3/dev
menu fixes
2 parents 9e4addd + d7150f7 commit 5f46860

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

gui/utility.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ class TaskSelectMenu(QtGui.QPushButton):
307307
'''
308308
def __init__(self, initial_text, add_default=False):
309309
self.callback = lambda task: None
310-
self.menu = QtGui.QMenu()
310+
self.root_menu = QtGui.QMenu()
311311
self.add_default = add_default
312312
self.default_text = initial_text
313313
super().__init__(initial_text)
@@ -323,29 +323,33 @@ def fxn():
323323
return fxn
324324

325325
def update_menu(self, root_folder):
326-
self.menu.clear()
326+
self.root_menu.clear()
327+
self.submenus_dictionary = {}
327328
if self.add_default:
328-
self.menu.addAction(self.default_text,self.create_action(self.default_text))
329-
self.menu.addSeparator()
330-
previous_menu = self.menu
331-
current_menu = self.menu
329+
self.root_menu.addAction(self.default_text,self.create_action(self.default_text))
330+
self.root_menu.addSeparator()
332331
for dirName, subdirList, fileList in os.walk(root_folder):
333-
subfolder = dirName.split(root_folder)[1][1:]
334-
if subfolder:
335-
if any(".py" in filename for filename in fileList): # only add submenu if there are .py files inside
336-
sub_menu = current_menu.addMenu(subfolder.split(os.path.sep)[-1])
337-
for filename in fileList:
338-
if filename.endswith('.py'):
339-
menuItem = filename[:-3]
340-
sub_menu.addAction(menuItem,self.create_action(os.path.join(subfolder,menuItem)))
341-
if subdirList: # continue down to next level
342-
previous_menu = current_menu
343-
current_menu = sub_menu
344-
else: # return up to previous level
345-
current_menu = previous_menu
346-
else: # list top level files
347-
for filename in fileList:
332+
subdirList.sort()
333+
sub_dir = dirName.split(root_folder)[1][1:]
334+
if sub_dir:
335+
parent_menu = self.get_parent_menu(sub_dir)
336+
sub_menu_name = sub_dir.split(os.path.sep)[-1]
337+
sub_menu = parent_menu.addMenu(sub_menu_name)
338+
self.submenus_dictionary[sub_dir] = sub_menu
339+
for filename in sorted(fileList):
348340
if filename.endswith('.py'):
349341
menuItem = filename[:-3]
350-
self.menu.addAction(menuItem,self.create_action(menuItem))
351-
self.setMenu(self.menu)
342+
sub_menu.addAction(menuItem,self.create_action(os.path.join(sub_dir,menuItem)))
343+
else: # add root level files
344+
for filename in sorted(fileList):
345+
if filename.endswith('.py'):
346+
menuItem = filename[:-3]
347+
self.root_menu.addAction(menuItem,self.create_action(menuItem))
348+
self.setMenu(self.root_menu)
349+
350+
def get_parent_menu(self,sub_dir):
351+
split_folder = sub_dir.split(os.path.sep)
352+
if len(split_folder)==1:
353+
return self.root_menu
354+
else:
355+
return self.submenus_dictionary[os.path.sep.join(split_folder[:-1])]

0 commit comments

Comments
 (0)