示例#1
0
    def OnInit(self):
        """ Initialize the application"""
        script_dir = sys.path[0]

        config_name = os.path.join(script_dir, 'config.ini')
        ms_name = os.path.join(script_dir, 'doc', 'microservices.ini')
        sess_var_name = os.path.join(script_dir, 'doc', 'session_variable.ini')
        var_sets_name = os.path.join(script_dir, 'doc', 'variable_sets.ini')
        rule_name = os.path.join(script_dir, 'doc', 'rules.ini')
        app_title = "iRods Admin"

        wx.InitAllImageHandlers()

        # The cfg variable stores some configuration variables for the
        # interface and for the connection to iRODS
        self.config = Config(script_dir, config_name, ms_name, sess_var_name,
                             var_sets_name, rule_name)
        self.mdl = AppModel(self.config)

        if self.config.quick_connect:
            # The quick init bypass the connection dialog box
            self.quick_init()
        else:
            self.init_conn_info()

        # If we don't want to work offline: Test the connection
        status = self.mdl.connect()
        if status != 0:
            irodsError(self.mdl, status)
            return 1

        main_frame = MainFrame(self.mdl, app_title)
        self.SetTopWindow(main_frame)
        main_frame.Show()

        return True
示例#2
0
 def __init__(self, loader):
     super().__init__(logger=getLogger('root.app.controller'))
     self.loader = loader
     self.view = AppView(controller=self)
     self.model = AppModel(controller=self, view=self.view)
     self.fade_in_animation = AppFadeInAnimation(self.view)
     self.fade_out_animation = AppFadeOutAnimation(self.view)
     self.main_menu = MainMenuController(self)
     self.onboarding = OnboardingController(self)
     self.license = LicenseController(self)
     self.game = GameController(self)
     self.settings = SettingsController(self)
     self.bonus_code_activation = BonusCodeActivationController(self)
     self.main_menu_to_game_transition_animation = TransitionAnimation(
         fade_out_animation=self.main_menu.fade_out_animation,
         fade_in_animation=self.game.fade_in_animation)
     self.main_menu_to_onboarding_transition_animation = TransitionAnimation(
         fade_out_animation=self.main_menu.fade_out_animation,
         fade_in_animation=self.onboarding.fade_in_animation)
     self.game_to_main_menu_transition_animation = TransitionAnimation(
         fade_out_animation=self.game.fade_out_animation,
         fade_in_animation=self.main_menu.fade_in_animation)
     self.main_menu_to_license_transition_animation = TransitionAnimation(
         fade_out_animation=self.main_menu.fade_out_animation,
         fade_in_animation=self.license.fade_in_animation)
     self.license_to_main_menu_transition_animation = TransitionAnimation(
         fade_out_animation=self.license.fade_out_animation,
         fade_in_animation=self.main_menu.fade_in_animation)
     self.game_to_settings_transition_animation = TransitionAnimation(
         fade_out_animation=self.game.fade_out_animation,
         fade_in_animation=self.settings.fade_in_animation)
     self.settings_to_game_transition_animation = TransitionAnimation(
         fade_out_animation=self.settings.fade_out_animation,
         fade_in_animation=self.game.fade_in_animation)
     self.onboarding_to_game_transition_animation = TransitionAnimation(
         fade_out_animation=self.onboarding.fade_out_animation,
         fade_in_animation=self.game.fade_in_animation)
     self.main_menu_to_settings_transition_animation = TransitionAnimation(
         fade_out_animation=self.main_menu.fade_out_animation,
         fade_in_animation=self.settings.fade_in_animation)
     self.settings_to_main_menu_transition_animation = TransitionAnimation(
         fade_out_animation=self.settings.fade_out_animation,
         fade_in_animation=self.main_menu.fade_in_animation)
     self.main_menu_to_bonus_code_activation_transition_animation = TransitionAnimation(
         fade_out_animation=self.main_menu.fade_out_animation,
         fade_in_animation=self.bonus_code_activation.fade_in_animation)
     self.bonus_code_activation_to_main_menu_transition_animation = TransitionAnimation(
         fade_out_animation=self.bonus_code_activation.fade_out_animation,
         fade_in_animation=self.main_menu.fade_in_animation)
     self.fade_in_animation.main_menu_fade_in_animation = self.main_menu.fade_in_animation
     self.fade_in_animation.license_fade_in_animation = self.license.fade_in_animation
     self.fade_in_animation.onboarding_fade_in_animation = self.onboarding.fade_in_animation
     self.fade_in_animation.game_fade_in_animation = self.game.fade_in_animation
     self.fade_in_animation.settings_fade_in_animation = self.settings.fade_in_animation
     self.fade_in_animation.bonus_code_activation_fade_in_animation = self.bonus_code_activation.fade_in_animation
     self.fade_out_animation.main_menu_fade_out_animation = self.main_menu.fade_out_animation
     self.fade_out_animation.license_fade_out_animation = self.license.fade_out_animation
     self.fade_out_animation.onboarding_fade_out_animation = self.onboarding.fade_out_animation
     self.fade_out_animation.game_fade_out_animation = self.game.fade_out_animation
     self.fade_out_animation.settings_fade_out_animation = self.settings.fade_out_animation
     self.fade_out_animation.bonus_code_activation_fade_out_animation = self.bonus_code_activation.fade_out_animation
     self.child_controllers = [
         self.main_menu, self.onboarding, self.license, self.game,
         self.settings, self.bonus_code_activation
     ]
示例#3
0
class AppController(AppBaseController):
    def __init__(self, loader):
        super().__init__(logger=getLogger('root.app.controller'))
        self.loader = loader
        self.view = AppView(controller=self)
        self.model = AppModel(controller=self, view=self.view)
        self.fade_in_animation = AppFadeInAnimation(self.view)
        self.fade_out_animation = AppFadeOutAnimation(self.view)
        self.main_menu = MainMenuController(self)
        self.onboarding = OnboardingController(self)
        self.license = LicenseController(self)
        self.game = GameController(self)
        self.settings = SettingsController(self)
        self.bonus_code_activation = BonusCodeActivationController(self)
        self.main_menu_to_game_transition_animation = TransitionAnimation(
            fade_out_animation=self.main_menu.fade_out_animation,
            fade_in_animation=self.game.fade_in_animation)
        self.main_menu_to_onboarding_transition_animation = TransitionAnimation(
            fade_out_animation=self.main_menu.fade_out_animation,
            fade_in_animation=self.onboarding.fade_in_animation)
        self.game_to_main_menu_transition_animation = TransitionAnimation(
            fade_out_animation=self.game.fade_out_animation,
            fade_in_animation=self.main_menu.fade_in_animation)
        self.main_menu_to_license_transition_animation = TransitionAnimation(
            fade_out_animation=self.main_menu.fade_out_animation,
            fade_in_animation=self.license.fade_in_animation)
        self.license_to_main_menu_transition_animation = TransitionAnimation(
            fade_out_animation=self.license.fade_out_animation,
            fade_in_animation=self.main_menu.fade_in_animation)
        self.game_to_settings_transition_animation = TransitionAnimation(
            fade_out_animation=self.game.fade_out_animation,
            fade_in_animation=self.settings.fade_in_animation)
        self.settings_to_game_transition_animation = TransitionAnimation(
            fade_out_animation=self.settings.fade_out_animation,
            fade_in_animation=self.game.fade_in_animation)
        self.onboarding_to_game_transition_animation = TransitionAnimation(
            fade_out_animation=self.onboarding.fade_out_animation,
            fade_in_animation=self.game.fade_in_animation)
        self.main_menu_to_settings_transition_animation = TransitionAnimation(
            fade_out_animation=self.main_menu.fade_out_animation,
            fade_in_animation=self.settings.fade_in_animation)
        self.settings_to_main_menu_transition_animation = TransitionAnimation(
            fade_out_animation=self.settings.fade_out_animation,
            fade_in_animation=self.main_menu.fade_in_animation)
        self.main_menu_to_bonus_code_activation_transition_animation = TransitionAnimation(
            fade_out_animation=self.main_menu.fade_out_animation,
            fade_in_animation=self.bonus_code_activation.fade_in_animation)
        self.bonus_code_activation_to_main_menu_transition_animation = TransitionAnimation(
            fade_out_animation=self.bonus_code_activation.fade_out_animation,
            fade_in_animation=self.main_menu.fade_in_animation)
        self.fade_in_animation.main_menu_fade_in_animation = self.main_menu.fade_in_animation
        self.fade_in_animation.license_fade_in_animation = self.license.fade_in_animation
        self.fade_in_animation.onboarding_fade_in_animation = self.onboarding.fade_in_animation
        self.fade_in_animation.game_fade_in_animation = self.game.fade_in_animation
        self.fade_in_animation.settings_fade_in_animation = self.settings.fade_in_animation
        self.fade_in_animation.bonus_code_activation_fade_in_animation = self.bonus_code_activation.fade_in_animation
        self.fade_out_animation.main_menu_fade_out_animation = self.main_menu.fade_out_animation
        self.fade_out_animation.license_fade_out_animation = self.license.fade_out_animation
        self.fade_out_animation.onboarding_fade_out_animation = self.onboarding.fade_out_animation
        self.fade_out_animation.game_fade_out_animation = self.game.fade_out_animation
        self.fade_out_animation.settings_fade_out_animation = self.settings.fade_out_animation
        self.fade_out_animation.bonus_code_activation_fade_out_animation = self.bonus_code_activation.fade_out_animation
        self.child_controllers = [
            self.main_menu, self.onboarding, self.license, self.game,
            self.settings, self.bonus_code_activation
        ]

    def on_update_current_locale(self, new_locale):
        super().on_update_current_locale(new_locale)
        self.model.on_save_and_commit_locale(new_locale)

    def on_save_state(self):
        super().on_save_state()
        on_commit()

    def on_update_clock_state(self, clock_24h_enabled):
        super().on_update_clock_state(clock_24h_enabled)
        self.model.on_save_and_commit_clock_state(clock_24h_enabled)

    def on_fullscreen_button_click(self):
        WINDOW.set_size(*self.model.fullscreen_resolution)
        if self.model.fullscreen_mode_available:
            self.on_fullscreen_mode_turned_on()

    def on_restore_button_click(self):
        self.on_fullscreen_mode_turned_off()
        WINDOW.set_size(*self.settings.model.windowed_resolution)

    def on_fullscreen_mode_turned_on(self):
        self.model.on_fullscreen_mode_turned_on()

    def on_fullscreen_mode_turned_off(self):
        self.model.on_fullscreen_mode_turned_off()

    def on_activate_main_menu_view(self):
        self.main_menu.on_activate_view()

    def on_activate_game_view(self):
        self.game.on_activate_view()

    def on_open_license(self):
        self.game_to_main_menu_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_deactivate()
        self.settings_to_main_menu_transition_animation.on_deactivate()
        self.bonus_code_activation_to_main_menu_transition_animation.on_deactivate(
        )
        self.main_menu_to_license_transition_animation.on_activate()

    def on_close_license(self):
        self.main_menu_to_license_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_activate()

    def on_open_onboarding(self):
        self.game_to_main_menu_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_deactivate()
        self.settings_to_main_menu_transition_animation.on_deactivate()
        self.bonus_code_activation_to_main_menu_transition_animation.on_deactivate(
        )
        self.main_menu_to_onboarding_transition_animation.on_activate()

    def on_close_onboarding(self):
        self.game.on_unlock_map(PASSENGER_MAP)
        self.main_menu_to_onboarding_transition_animation.on_deactivate()
        self.onboarding_to_game_transition_animation.on_activate()
        self.onboarding.on_save_and_commit_onboarding_state()
        self.game.on_resume_game()

    def on_back_to_the_station(self):
        self.game_to_main_menu_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_deactivate()
        self.settings_to_main_menu_transition_animation.on_deactivate()
        self.bonus_code_activation_to_main_menu_transition_animation.on_deactivate(
        )
        self.main_menu_to_game_transition_animation.on_activate()
        self.game.on_resume_game()

    def on_open_bonus_code(self):
        self.game_to_main_menu_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_deactivate()
        self.settings_to_main_menu_transition_animation.on_deactivate()
        self.bonus_code_activation_to_main_menu_transition_animation.on_deactivate(
        )
        self.main_menu_to_bonus_code_activation_transition_animation.on_activate(
        )

    def on_close_bonus_code(self):
        self.main_menu_to_bonus_code_activation_transition_animation.on_deactivate(
        )
        self.bonus_code_activation_to_main_menu_transition_animation.on_activate(
        )

    def on_open_settings_from_main_menu(self):
        self.game_to_main_menu_transition_animation.on_deactivate()
        self.license_to_main_menu_transition_animation.on_deactivate()
        self.settings_to_main_menu_transition_animation.on_deactivate()
        self.bonus_code_activation_to_main_menu_transition_animation.on_deactivate(
        )
        self.main_menu_to_settings_transition_animation.on_activate()
        self.settings.navigated_from_main_menu = True

    def on_open_settings_from_game(self):
        self.main_menu_to_game_transition_animation.on_deactivate()
        self.settings_to_game_transition_animation.on_deactivate()
        self.onboarding_to_game_transition_animation.on_deactivate()
        self.game_to_settings_transition_animation.on_activate()
        self.settings.navigated_from_game = True

    def on_close_settings(self):
        if self.settings.navigated_from_main_menu:
            self.settings.navigated_from_main_menu = False
            self.main_menu_to_settings_transition_animation.on_deactivate()
            self.settings_to_main_menu_transition_animation.on_activate()
        elif self.settings.navigated_from_game:
            self.settings.navigated_from_game = False
            self.game_to_settings_transition_animation.on_deactivate()
            self.settings_to_game_transition_animation.on_activate()

    def on_activate_new_bonus_code(self, sha512_hash):
        self.game.on_activate_new_bonus_code(sha512_hash)

    def on_accept_changes(self, windowed_resolution, display_fps,
                          fade_animations_enabled, clock_24h_enabled,
                          level_up_notification_enabled,
                          feature_unlocked_notification_enabled,
                          construction_completed_notification_enabled,
                          enough_money_notification_enabled,
                          bonus_expired_notification_enabled,
                          shop_storage_notification_enabled,
                          voice_not_found_notification_enabled, master_volume,
                          announcements_enabled):
        self.settings.on_accept_changes(
            windowed_resolution, display_fps, fade_animations_enabled,
            clock_24h_enabled, level_up_notification_enabled,
            feature_unlocked_notification_enabled,
            construction_completed_notification_enabled,
            enough_money_notification_enabled,
            bonus_expired_notification_enabled,
            shop_storage_notification_enabled,
            voice_not_found_notification_enabled, master_volume,
            announcements_enabled)
        self.on_update_fade_animation_state(fade_animations_enabled)
        self.on_update_clock_state(clock_24h_enabled)
        self.on_change_level_up_notification_state(
            level_up_notification_enabled)
        self.on_change_feature_unlocked_notification_state(
            feature_unlocked_notification_enabled)
        self.on_change_construction_completed_notification_state(
            construction_completed_notification_enabled)
        self.on_change_enough_money_notification_state(
            enough_money_notification_enabled)
        self.on_change_bonus_expired_notification_state(
            bonus_expired_notification_enabled)
        self.on_change_shop_storage_notification_state(
            shop_storage_notification_enabled)
        self.on_change_voice_not_found_notification_state(
            voice_not_found_notification_enabled)
        self.on_master_volume_update(master_volume)
        self.on_update_announcements_state(announcements_enabled)
        if not WINDOW.fullscreen:
            WINDOW.set_size(*windowed_resolution)

        if display_fps:
            self.view.fps_display.on_activate()
        else:
            self.view.fps_display.on_deactivate()

    def on_save_and_commit_bonus_code_abuse(self):
        self.model.on_save_and_commit_bonus_code_abuse()

    def on_master_volume_update(self, new_master_volume):
        self.game.on_master_volume_update(new_master_volume)

    def on_update_announcements_state(self, new_state):
        self.game.on_update_announcements_state(new_state)
示例#4
0
class MyApplication(wx.App):
    """The wx application"""

    def __init__(self, redirect=True, filename=None):
        """ Constructor
        @param redirect: Redirect the error logs in a file
        @type redirect: boolean
        @param filename: The file where the logs are redirected
        @type filename: string (a path)
        """
        self.mdl = None
        self.config = None
        wx.App.__init__(self, redirect, filename)

    def OnInit(self):
        """ Initialize the application"""
        script_dir = sys.path[0]

        config_name = os.path.join(script_dir, 'config.ini')
        ms_name = os.path.join(script_dir, 'doc', 'microservices.ini')
        sess_var_name = os.path.join(script_dir, 'doc', 'session_variable.ini')
        var_sets_name = os.path.join(script_dir, 'doc', 'variable_sets.ini')
        rule_name = os.path.join(script_dir, 'doc', 'rules.ini')
        app_title = "iRods Admin"

        wx.InitAllImageHandlers()

        # The cfg variable stores some configuration variables for the
        # interface and for the connection to iRODS
        self.config = Config(script_dir, config_name, ms_name, sess_var_name,
                             var_sets_name, rule_name)
        self.mdl = AppModel(self.config)

        if self.config.quick_connect:
            # The quick init bypass the connection dialog box
            self.quick_init()
        else:
            self.init_conn_info()

        # If we don't want to work offline: Test the connection
        status = self.mdl.connect()
        if status != 0:
            irodsError(self.mdl, status)
            return 1

        main_frame = MainFrame(self.mdl, app_title)
        self.SetTopWindow(main_frame)
        main_frame.Show()

        return True

    def init_conn_info(self):
        """Display a connection dialog to select an iRods server to connect
        to"""
        status = -1
        model = self.mdl
        while status != 0:
            con_dlg = ConnectionDialog(self.config, self.config.irods_username,
                                       self.config.irods_hostname,
                                       self.config.irods_zone,
                                       str(self.config.irods_port), "")
            res = con_dlg.ShowModal()
            if res == wx.ID_CANCEL:
                sys.exit(0)
            elif res == wx.ID_OK:
                # If the user does not enter a password:
                #  -> we take the one from .irodsA
                if con_dlg.tc_password.GetValue() == "":
                    obf_password = model.get_password()
                else:
                    tc_pwd = con_dlg.tc_password.GetValue()
                    obf_password = model.encode(tc_pwd.encode("ascii"))
                self.config.set_password(obf_password)
                host = con_dlg.tc_host.GetValue().encode("ascii")
                port = int(con_dlg.tc_port.GetValue())
                user = con_dlg.tc_name.GetValue().encode("ascii")
                zone = con_dlg.tc_zone.GetValue().encode("ascii")
                status = model.connect_infos(host, port, user, zone)

            con_dlg.Destroy()
            if status != 0:
                irodsError(self.mdl, status)
            model.disconnect()

    def quick_init(self):
        """Use the information from the .irodsEnv file to connect to an iRods
        server"""
        self.config.set_password(self.mdl.get_password())