From 5f783ac3201397acc87b997db2d2e3c452ac9bfb Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Sat, 24 Oct 2020 20:13:26 -0500 Subject: [PATCH] Pre favorites additions --- src/__init__.py | 49 +++++++++++++++++++++++---------------------- src/core/Context.py | 18 ++++++++++++++--- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 9bea6fa..24dd81b 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -8,8 +8,6 @@ from os import listdir # Gtk imports from xdg.DesktopEntry import DesktopEntry - - # Application imports from core import Context @@ -23,27 +21,31 @@ class Main(Context): Initialize it all... """ super().__init__(args) - HOME_APPS = os.path.expanduser('~') + "/.local/share/applications/" - paths = ["/opt/", "/usr/share/applications/", HOME_APPS] - query = "" + HOME_APPS = os.path.expanduser('~') + "/.local/share/applications/" + paths = ["/opt/", "/usr/share/applications/", HOME_APPS] + self.menuData = self.getDesktopFilesInfo(paths) + baseOptions = ["[ TO MAIN MENU ]", "[ Favorites ]"] + query = "" while True: - self.clear() - if not self.menuData: - self.menuData = self.getDesktopFilesInfo(paths) + try: + self.clear() + group = self.call_method("mainMenu")["group"] + if "Search..." in group: + query = self.call_method("searchMenu")["query"] + if "Favorites" in group: + query = self.call_method("favoritesMenu")["faves"] + if "[ Exit ]" in group: + break - group = self.call_method("mainMenu")["group"] - if "[ Search ]" in group: - query = self.call_method("searchMenu")["query"] - if "[ Exit ]" in group: - break - - self.clear() - progsList = ["[ TO MAIN MENU ]"] - progsList += self.getSubgroup(group, query) - entry = self.call_method("subMenu", [group, progsList])["prog"] - if not "[ TO MAIN MENU ]" is entry: - self.executeProgram(group, entry) + self.clear() + progsList = ["[ TO MAIN MENU ]"] + progsList += self.getSubgroup(group, query) + entry = self.call_method("subMenu", [group, progsList])["prog"] + if entry not in baseOptions: + self.executeProgram(group, entry) + except Exception as e: + pass def call_method(self, method_name, data = None): @@ -123,11 +125,9 @@ class Main(Context): }) - - def getSubgroup(self, group, query = ""): desktopObjs = [] - if "[ Search ]" in group: + if "Search..." in group: gkeys = self.menuData.keys() for gkey in gkeys: for opt in self.menuData[gkey]: @@ -135,9 +135,10 @@ class Main(Context): if "comment" in keys and len(opt["comment"]) > 0 : if query.lower() in opt["comment"].lower(): desktopObjs.append( opt["title"] + " || " + opt["comment"] ) - continue if query.lower() in opt["title"].lower() or query.lower() in opt["fileName"].lower(): desktopObjs.append( opt["title"] + " || " + opt["fileName"].replace(".desktop", "") ) + elif "Favorites" in group: + pass else: for opt in self.menuData[group]: keys = opt.keys() diff --git a/src/core/Context.py b/src/core/Context.py index 45f7645..cef1b63 100644 --- a/src/core/Context.py +++ b/src/core/Context.py @@ -15,9 +15,10 @@ from .mixins import StylesMixin -GROUPS = ["[ Search ]", "Accessories", "Multimedia", "Graphics", "Game", - "Office", "Development", "Internet", "Settings", "System", - "Wine", "Other", "[ Exit ]"] +GROUPS = [ "Favorites", "Accessories", "Multimedia", "Graphics", "Office", + "Development", "Internet", "Settings", "System", "Game", "Wine", + "Other", "Search...", "[ Exit ]" + ] class Context(StylesMixin): @@ -51,6 +52,17 @@ class Context(StylesMixin): return prompt(menu, style=self.theme) + + def favoritesMenu(self, _grouplist = None): + grouplist = GROUPS if not _grouplist else _grouplist + menu = { + 'type': 'list', + 'name': 'faves', + 'message': '[ Favorites ]', + 'choices': grouplist + } + + def subMenu(self, data = ["NO GROUP NAME", "NO PROGRAMS PASSED IN"]): group = data[0] progList = data[1]