refactor BingoDisplay to own file
This commit is contained in:
		
							parent
							
								
									cfe7e49a9e
								
							
						
					
					
						commit
						f16bafee8f
					
				
							
								
								
									
										54
									
								
								BingoDisplay.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								BingoDisplay.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,54 @@
 | 
			
		||||
from textual.widgets import Input, Static, Button 
 | 
			
		||||
from textual.containers import Horizontal
 | 
			
		||||
from textual.validation import Number
 | 
			
		||||
from textual.app import ComposeResult
 | 
			
		||||
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
 | 
			
		||||
from BingoBoard import BingoBoard
 | 
			
		||||
 | 
			
		||||
class BingoDisplay(Static):
 | 
			
		||||
    '''
 | 
			
		||||
    A Widget to represent the bingo UI.
 | 
			
		||||
 | 
			
		||||
    Contains the board, input field and re-roll button.
 | 
			
		||||
 | 
			
		||||
    Attributes
 | 
			
		||||
    ----------
 | 
			
		||||
    board : BingoBoard
 | 
			
		||||
        The BingoBoard object
 | 
			
		||||
    input_field : Input
 | 
			
		||||
        User input for game seed
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    def compose(self) -> ComposeResult:
 | 
			
		||||
        '''Create child widgets for the app.'''
 | 
			
		||||
        self.board = BingoBoard()
 | 
			
		||||
        yield self.board
 | 
			
		||||
        self.input_field = Input(
 | 
			
		||||
                str(self.board.seed),
 | 
			
		||||
                type='integer',
 | 
			
		||||
                placeholder='UNIX timestamp',
 | 
			
		||||
                max_length=10,
 | 
			
		||||
                classes='seed_input',
 | 
			
		||||
                validators=[
 | 
			
		||||
                    Number(minimum=1000000000, maximum = 2000000000)
 | 
			
		||||
                ]
 | 
			
		||||
        )
 | 
			
		||||
        self.input_field.border_title = 'Seed'
 | 
			
		||||
        yield Horizontal(
 | 
			
		||||
            self.input_field,
 | 
			
		||||
            Button.error(':game_die: re-roll', classes='roll_btn'),
 | 
			
		||||
            classes='bottom_line'
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def on_button_pressed(self, event: Button.Pressed) -> None:
 | 
			
		||||
        '''Re-roll the board state with current time as seed'''
 | 
			
		||||
        self.board.roll_board(int(datetime.now().timestamp()))
 | 
			
		||||
        self.input_field.value = str(self.board.seed)
 | 
			
		||||
 | 
			
		||||
    def on_input_submitted(self, event: Input.Submitted) -> None:
 | 
			
		||||
        '''Re-roll the board state with the seed from the input'''
 | 
			
		||||
        if event.validation_result.is_valid:
 | 
			
		||||
            self.board.roll_board(int(event.value))
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								bingo.py
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								bingo.py
									
									
									
									
									
								
							@ -1,14 +1,10 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
from textual.app import App, ComposeResult
 | 
			
		||||
from textual.widgets import Header, Input, Static, Button 
 | 
			
		||||
from textual.containers import Horizontal
 | 
			
		||||
from textual.validation import Number
 | 
			
		||||
from textual.widgets import Header
 | 
			
		||||
from textual.reactive import reactive
 | 
			
		||||
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
 | 
			
		||||
from BingoBoard import BingoBoard
 | 
			
		||||
from BingoDisplay import BingoDisplay
 | 
			
		||||
from AboutCommand import AboutCommand
 | 
			
		||||
from Sidebar import Sidebar
 | 
			
		||||
 | 
			
		||||
@ -49,51 +45,6 @@ class BingoApp(App):
 | 
			
		||||
        self.title = 'CCC Bingo'
 | 
			
		||||
        self.sub_title = 'GPN22 Edition'
 | 
			
		||||
 | 
			
		||||
class BingoDisplay(Static):
 | 
			
		||||
    '''
 | 
			
		||||
    A Widget to represent the bingo UI.
 | 
			
		||||
 | 
			
		||||
    Contains the board, input field and re-roll button.
 | 
			
		||||
 | 
			
		||||
    Attributes
 | 
			
		||||
    ----------
 | 
			
		||||
    board : BingoBoard
 | 
			
		||||
        The BingoBoard object
 | 
			
		||||
    input_field : Input
 | 
			
		||||
        User input for game seed
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    def compose(self) -> ComposeResult:
 | 
			
		||||
        '''Create child widgets for the app.'''
 | 
			
		||||
        self.board = BingoBoard()
 | 
			
		||||
        yield self.board
 | 
			
		||||
        self.input_field = Input(
 | 
			
		||||
                str(self.board.seed),
 | 
			
		||||
                type='integer',
 | 
			
		||||
                placeholder='UNIX timestamp',
 | 
			
		||||
                max_length=10,
 | 
			
		||||
                classes='seed_input',
 | 
			
		||||
                validators=[
 | 
			
		||||
                    Number(minimum=1000000000, maximum = 2000000000)
 | 
			
		||||
                ]
 | 
			
		||||
        )
 | 
			
		||||
        self.input_field.border_title = 'Seed'
 | 
			
		||||
        yield Horizontal(
 | 
			
		||||
            self.input_field,
 | 
			
		||||
            Button.error(':game_die: re-roll', classes='roll_btn'),
 | 
			
		||||
            classes='bottom_line'
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def on_button_pressed(self, event: Button.Pressed) -> None:
 | 
			
		||||
        '''Re-roll the board state with current time as seed'''
 | 
			
		||||
        self.board.roll_board(int(datetime.now().timestamp()))
 | 
			
		||||
        self.input_field.value = str(self.board.seed)
 | 
			
		||||
 | 
			
		||||
    def on_input_submitted(self, event: Input.Submitted) -> None:
 | 
			
		||||
        '''Re-roll the board state with the seed from the input'''
 | 
			
		||||
        if event.validation_result.is_valid:
 | 
			
		||||
            self.board.roll_board(int(event.value))
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    app = BingoApp()
 | 
			
		||||
    app.run()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user