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
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from textual.app import App, ComposeResult
 | 
					from textual.app import App, ComposeResult
 | 
				
			||||||
from textual.widgets import Header, Input, Static, Button 
 | 
					from textual.widgets import Header
 | 
				
			||||||
from textual.containers import Horizontal
 | 
					 | 
				
			||||||
from textual.validation import Number
 | 
					 | 
				
			||||||
from textual.reactive import reactive
 | 
					from textual.reactive import reactive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from datetime import datetime
 | 
					from BingoDisplay import BingoDisplay
 | 
				
			||||||
 | 
					 | 
				
			||||||
from BingoBoard import BingoBoard
 | 
					 | 
				
			||||||
from AboutCommand import AboutCommand
 | 
					from AboutCommand import AboutCommand
 | 
				
			||||||
from Sidebar import Sidebar
 | 
					from Sidebar import Sidebar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -49,51 +45,6 @@ class BingoApp(App):
 | 
				
			|||||||
        self.title = 'CCC Bingo'
 | 
					        self.title = 'CCC Bingo'
 | 
				
			||||||
        self.sub_title = 'GPN22 Edition'
 | 
					        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__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    app = BingoApp()
 | 
					    app = BingoApp()
 | 
				
			||||||
    app.run()
 | 
					    app.run()
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user