self .supported_extensions = ["smartspeaker" , "bigscreen" , "generic" ]
if self .active_extension .lower () not in self .supported_extensions :
self .active_extension = "generic"
Check warning
on line 34
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L34
Added line #L34 was not covered by tests
LOG .info (
f"Extensions Manager: Initializing { self .name } with active extension { self .active_extension } " )
# map extension_id to class
if extension_id == "smartspeaker" :
self .extension = SmartSpeakerExtension (self .bus , self .gui )
Check warning
on line 45
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L45
Added line #L45 was not covered by tests
elif extension_id == "bigscreen" :
self .extension = BigscreenExtension (self .bus , self .gui )
Check warning
on line 47
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L47
Added line #L47 was not covered by tests
else :
self .extension = GenericExtension (self .bus , self .gui )
self .bus .on ("system.display.homescreen" ,
self .handle_system_display_homescreen )
except Exception as e :
LOG .error (f"SmartSpeaker: Init Bus Exception: { e } " )
Check warning
on line 90
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L89-L90
Added lines #L89 - L90 were not covered by tests
def set_backend_type (self , message ):
backend = message .data .get ("backend" , "unknown" )
if not backend == "unknown" :
self .backend = backend
Check warning
on line 95
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L93-L95
Added lines #L93 - L95 were not covered by tests
else :
backend = self ._detect_backend ()
self .backend = backend
Check warning
on line 98
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L97-L98
Added lines #L97 - L98 were not covered by tests
def start_homescreen_process (self , message ):
self .device_paired = is_paired ()
if not self .backend == "local" :
self .homescreen_manager .show_homescreen ()
self .bus .emit (Message ("ovos.shell.status.ok" ))
Check warning
on line 104
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L101-L104
Added lines #L101 - L104 were not covered by tests
else :
self .bus .emit (Message ("ovos.shell.status.ok" ))
Check warning
on line 106
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L106
Added line #L106 was not covered by tests
def _detect_backend (self ):
config = Configuration .get ()
server_config = config .get ("server" )
backend_config = server_config .get ("url" )
if "https://api.mycroft.ai" in backend_config :
return "remote"
Check warning
on line 113
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L109-L113
Added lines #L109 - L113 were not covered by tests
else :
return "local"
Check warning
on line 115
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L115
Added line #L115 was not covered by tests
def handle_remove_namespace (self , message ):
LOG .info ("Got Clear Namespace Event In Skill" )
get_skill_namespace = message .data .get ("skill_id" , "" )
if get_skill_namespace :
self .bus .emit (Message ("gui.clear.namespace" ,
Check warning
on line 121
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L118-L121
Added lines #L118 - L121 were not covered by tests
{"__from" : get_skill_namespace }))
def handle_system_display_homescreen (self , message ):
self .homescreen_manager .show_homescreen ()
Check warning
on line 125
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L125
Added line #L125 was not covered by tests
class BigscreenExtension ():
self .bus .on ('gui.page_interaction' , self .on_gui_page_interaction )
self .bus .on ('gui.namespace.removed' , self .close_current_window )
except Exception as e :
LOG .error (f"Bigscreen: Init Bus Exception: { e } " )
Check warning
on line 156
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L155-L156
Added lines #L155 - L156 were not covered by tests
def on_gui_page_show (self , message ):
override_idle = message .data .get ('__idle' )
if override_idle is True :
self .interaction_without_idle = True
elif isinstance (override_idle , int ) and not (override_idle , bool ) and override_idle is not False :
self .interaction_without_idle = True
elif (message .data ['page' ]):
if not isinstance (override_idle , bool ) or not isinstance (override_idle , int ):
self .interaction_without_idle = False
Check warning
on line 166
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L159-L166
Added lines #L159 - L166 were not covered by tests
def on_gui_page_interaction (self , message ):
skill_id = message .data .get ('skill_id' )
self .interaction_skill_id = skill_id
Check warning
on line 170
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L169-L170
Added lines #L169 - L170 were not covered by tests
def handle_remove_namespace (self , message ):
get_skill_namespace = message .data .get ("skill_id" , "" )
LOG .info (f"Got Clear Namespace Event In Skill { get_skill_namespace } " )
if get_skill_namespace :
self .bus .emit (Message ("gui.clear.namespace" ,
Check warning
on line 176
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L173-L176
Added lines #L173 - L176 were not covered by tests
{"__from" : get_skill_namespace }))
def close_current_window (self , message ):
skill_id = message .data .get ('skill_id' )
LOG .info (f"Bigscreen: Closing Current Window For Skill { skill_id } " )
self .bus .emit (Message ('screen.close.idle.event' ,
Check warning
on line 182
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L180-L182
Added lines #L180 - L182 were not covered by tests
data = {"skill_idle_event_id" : skill_id }))
def close_window_by_event (self , message ):
self .interaction_without_idle = False
self .bus .emit (Message ('screen.close.idle.event' ,
Check warning
on line 187
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L186-L187
Added lines #L186 - L187 were not covered by tests
data = {"skill_idle_event_id" : self .interaction_skill_id }))
self .handle_remove_namespace (message )
Check warning
on line 189
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L189
Added line #L189 was not covered by tests
def close_window_by_force (self , message ):
skill_id = message .data .get ('skill_id' )
self .bus .emit (Message ('screen.close.idle.event' ,
Check warning
on line 193
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L192-L193
Added lines #L192 - L193 were not covered by tests
data = {"skill_idle_event_id" : skill_id }))
self .handle_remove_namespace (message )
Check warning
on line 195
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L195
Added line #L195 was not covered by tests
class GenericExtension ():
self .homescreen_supported = generic_config .get ("homescreen_supported" , False )
if self .homescreen_supported :
self .homescreen_manager = HomescreenManager (self .bus , self .gui )
self .homescreen_thread = threading .Thread (
Check warning
on line 221
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L220-L221
Added lines #L220 - L221 were not covered by tests
target = self .homescreen_manager .run )
self .homescreen_thread .start ()
Check warning
on line 223
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L223
Added line #L223 was not covered by tests
try :
self .bus .on ("mycroft.gui.screen.close" ,
self .handle_remove_namespace )
except Exception as e :
LOG .error (f"Generic: Init Bus Exception: { e } " )
Check warning
on line 230
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L229-L230
Added lines #L229 - L230 were not covered by tests
def handle_remove_namespace (self , message ):
LOG .info ("Got Clear Namespace Event In Skill" )
get_skill_namespace = message .data .get ("skill_id" , "" )
if get_skill_namespace :
self .bus .emit (Message ("gui.clear.namespace" ,
Check warning
on line 236
in mycroft/gui/extensions.py
Codecov / codecov/patch
mycroft/gui/extensions.py#L233-L236
Added lines #L233 - L236 were not covered by tests
{"__from" : get_skill_namespace }))