Added menus

This commit is contained in:
2021-11-23 09:25:51 +01:00
parent 673554dd6d
commit 5ddc2dc72d
11 changed files with 122 additions and 3 deletions

View File

@@ -1 +1 @@
# imports:
# imports

View File

@@ -0,0 +1 @@
# imports

View File

@@ -0,0 +1,19 @@
from abc import ABC, abstractmethod
class MenuServiceABC(ABC):
@abstractmethod
def __init__(self): pass
@abstractmethod
def run(self): pass
@abstractmethod
def select_os(self) -> str: pass
@abstractmethod
def main_menu(self) -> str: pass
@abstractmethod
def select_collection(self) -> str: pass

View File

@@ -0,0 +1 @@
# imports

View File

@@ -0,0 +1,24 @@
import traceback
from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
from cpl_core.console import Console
class OSSettings(ConfigurationModelABC):
def __init__(self):
ConfigurationModelABC.__init__(self)
self._operating_systems = []
@property
def operating_systems(self) -> list[str]:
return self._operating_systems
def from_dict(self, settings: dict):
try:
for os in settings['OperatingSystems']:
self._operating_systems.append(os)
except Exception as e:
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings')
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')

View File

@@ -0,0 +1 @@
# imports

View File

@@ -0,0 +1,47 @@
from cpl_core.console import Console
from multi_install.abc.menu_service_abc import MenuServiceABC
from multi_install.config.os_settings import OSSettings
class MenuService(MenuServiceABC):
def __init__(self, os_settings: OSSettings):
self._os_settings = os_settings
self._is_running = True
def run(self):
while self._is_running:
os = self.select_os()
if os == 'Exit':
self._is_running = False
break
main_menu = self.main_menu()
if main_menu == 'Exit':
self._is_running = False
break
def select_os(self) -> str:
options = self._os_settings.operating_systems
options.append('Exit')
return Console.select('>', 'Select OS:', options)
def main_menu(self) -> str:
options = [
'Install collection',
'Add collection',
'Remove collection',
'Install application',
'Add application',
'Remove application',
'Add application'
]
options.append('Exit')
return Console.select('>', 'Select option:', options)
def select_collection(self) -> str:
options = []
options.append('Exit')
return Console.select('>', 'Select collection:', options)