コード例 #1
0
ファイル: consolewin.py プロジェクト: vaizguy/cryptikchaos
    def __init__(self, goto_inputscreen, greeting, **kwargs):

        # Init super
        super(ConsoleWindow, self).__init__(**kwargs)

        # Number of cols
        self.cols = 1
        
        # Save greeting
        self.greeting = greeting

        # Screen transition hook
        self.goto_input_screen = goto_inputscreen

        # Create scrollable label for console output
        self.scroll_view = ConsoleScrollView()
        self.scroll_view.size_hint_y = 0.9
        
        # Add scroll view widget
        self.add_widget(self.scroll_view)

        # Internal function-hook alias
        self.display_text = self.inputtext_gui_hook
        
        # Clear screen and print title
        self.display_text(greeting, clear=True)
        
        # Add progress bar
        self.progress_bar = ProgressBar(max=1000, size_hint_y=0.01)
        
        self.add_widget(self.progress_bar)

        # Input text box
        if not (constants.PLATFORM_ANDROID or constants.ENABLE_INPUT_SCREEN):
            self.console_input = ConsoleInput(
                # Goto console screen
                goto_consolescreen=lambda *args, **kwargs: None,
                # Size
                size_y=0.09
            )
                
            # Add widget
            self.add_widget(self.console_input)
            
        else:
            # Command input button
            self.enter_cmd_button = Button(
                text="Enter Command",
                size_hint_y=0.09,
            )
            # Bind event - on_press
            self.enter_cmd_button.bind(on_press=self.goto_inputscreen)
            # Add button
            self.add_widget(self.enter_cmd_button)
コード例 #2
0
ファイル: testserver.py プロジェクト: vaizguy/cryptikchaos
    def build(self):

        self.test_win = ConsoleScrollView()

        # Display initial text
        self.test_win.display_text(
            """
=========================
CryptikChaos Test_ Server
=========================
:PeerID: {}\n
:PeerIP: {}\n
:Date: {}\n
------------\n
""".format(
                constants.LOCAL_TEST_PEER_ID, constants.LOCAL_TEST_HOST, get_time()
            )
        )

        return self.test_win
コード例 #3
0
ファイル: testserver.py プロジェクト: vaizguy/cryptikchaos
class CryptikChaosTestApp(App):

    "Test sever application."

    def build(self):

        self.test_win = ConsoleScrollView()

        # Display initial text
        self.test_win.display_text(
            """
=========================
CryptikChaos Test_ Server
=========================
:PeerID: {}\n
:PeerIP: {}\n
:Date: {}\n
------------\n
""".format(
                constants.LOCAL_TEST_PEER_ID, constants.LOCAL_TEST_HOST, get_time()
            )
        )

        return self.test_win

    def on_start(self):
        """Event handler for the on_start event, which is fired after
        initialization (after build() has been called), and before the
        application is being run.
        """

        Logger.info("TESTSERVER: Cryptikchaos Test server started.")

        # Initiate Twisted Server
        self.comm_service = CommService(
            peerid=constants.LOCAL_TEST_PEER_ID,
            host=constants.LOCAL_TEST_HOST,
            port=constants.LOCAL_TEST_PORT,
            clientinit=False,
            printer=self.print_message,
        )

        self.device_service = DeviceService()

        # Register device service with comm service
        self.comm_service.register_device_service(self.device_service)

    def on_stop(self):
        """Event handler for the on_stop event, which is fired when the
        application has finished running (e.g. the window is about to be
        closed).
        """

        Logger.info("TESTSERVER: Closing services.")

        # Close services
        try:
            self.comm_service.__del__()
        except AttributeError:
            pass

        Logger.info("TESTSERVER: Successfully closed services.")
        Logger.info("TESTSERVER: Closing Cryptikchaos Test Server.")

    def print_message(self, msg, peerid=None, intermediate=False):
        "Print a message in the output window."

        # Indicates multiline output required
        if intermediate:
            text = "{}{}".format(constants.GUI_LABEL_LEFT_PADDING, msg)
        else:
            # One line print
            if not peerid:
                peerid = self.comm_service.peerid

            # If local pid, substitute with peer name
            if peerid == self.comm_service.peerid:
                peerid = constants.PEER_NAME

            # Get peer message color
            rcc = self.comm_service.swarm_manager.get_peerid_color(peerid)

            # Single line output with peer id
            text = "{}{}[color={}]{}[/color] : {}".format(
                constants.GUI_LABEL_LEFT_PADDING, constants.GUI_LABEL_PROMPT_SYM, rcc, str(peerid), msg
            )

        text = "\n{}".format(text)

        # Send text to console
        self.display_text("\n" + text)

        # Print in log
        if constants.ENABLE_CMD_LOG:
            # Get peer id for log
            if not peerid:
                logger_peerid = constants.PEER_NAME
            else:
                logger_peerid = peerid

            Logger.debug("TESTSERVER: [{}] => {}".format(logger_peerid, msg))

    def display_text(self, text):

        # Append line to label
        self.test_win.text += "\n[color={}]{}[/color]".format(constants.GUI_FONT_COLOR, text)
コード例 #4
0
ファイル: consolewin.py プロジェクト: vaizguy/cryptikchaos
class ConsoleWindow(GridLayout):

    "Console window class."

    def __init__(self, goto_inputscreen, greeting, **kwargs):

        # Init super
        super(ConsoleWindow, self).__init__(**kwargs)

        # Number of cols
        self.cols = 1
        
        # Save greeting
        self.greeting = greeting

        # Screen transition hook
        self.goto_input_screen = goto_inputscreen

        # Create scrollable label for console output
        self.scroll_view = ConsoleScrollView()
        self.scroll_view.size_hint_y = 0.9
        
        # Add scroll view widget
        self.add_widget(self.scroll_view)

        # Internal function-hook alias
        self.display_text = self.inputtext_gui_hook
        
        # Clear screen and print title
        self.display_text(greeting, clear=True)
        
        # Add progress bar
        self.progress_bar = ProgressBar(max=1000, size_hint_y=0.01)
        
        self.add_widget(self.progress_bar)

        # Input text box
        if not (constants.PLATFORM_ANDROID or constants.ENABLE_INPUT_SCREEN):
            self.console_input = ConsoleInput(
                # Goto console screen
                goto_consolescreen=lambda *args, **kwargs: None,
                # Size
                size_y=0.09
            )
                
            # Add widget
            self.add_widget(self.console_input)
            
        else:
            # Command input button
            self.enter_cmd_button = Button(
                text="Enter Command",
                size_hint_y=0.09,
            )
            # Bind event - on_press
            self.enter_cmd_button.bind(on_press=self.goto_inputscreen)
            # Add button
            self.add_widget(self.enter_cmd_button)

    # GUI Hooks-----------------------
    @mainthread
    def inputtext_gui_hook(self, text, clear=False):

        self.scroll_view.display_text(text, clear)

    @mainthread
    def getmaxwidth_gui_hook(self):

        return self.width
    
    @mainthread
    def cleardisplay_gui_hook(self):
        
        self.scroll_view.display_text(self.greeting, clear=True)
        
    @mainthread
    def cmdprog_gui_hook(self, status_val):
        
        self.progress_bar.value = status_val
    # ---------------------------------
    
    if not (constants.PLATFORM_ANDROID or constants.ENABLE_INPUT_SCREEN):
        def register_handleinput_cmd_hook(self, hook):
            
            self.console_input.register_handleinput_cmd_hook(hook)
            
        def register_getcommands_cmd_hook(self, hook):
            
            self.console_input.register_getcommands_cmd_hook(hook)

    def on_resize(self, instance, width, height):

        # New height and width
        instance.width = width
        instance.height = height

    def goto_inputscreen(self, instance):

        return self.goto_input_screen()