Integrate scribbling mode
parent
f76a23ed80
commit
5530186d28
|
@ -45,6 +45,12 @@ class SudokuSystem:
|
||||||
if val == 0:
|
if val == 0:
|
||||||
self.change_cell_status(row, col, EMPTY)
|
self.change_cell_status(row, col, EMPTY)
|
||||||
|
|
||||||
|
def toggle_scribble(self, row, col, val):
|
||||||
|
if val in self.scribbles[row, col]:
|
||||||
|
self.scribbles[row, col] = self.scribbles[row, col].replace(val, '')
|
||||||
|
else:
|
||||||
|
self.scribbles[row, col] += val
|
||||||
|
|
||||||
def get_cell_number(self, row, col):
|
def get_cell_number(self, row, col):
|
||||||
return self.number_grid[row, col]
|
return self.number_grid[row, col]
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ class GameBoard(BoxBoard):
|
||||||
self.show_playmenu(False)
|
self.show_playmenu(False)
|
||||||
|
|
||||||
self.gamegrid.buttonClicked.connect(self.show_number_ring)
|
self.gamegrid.buttonClicked.connect(self.show_number_ring)
|
||||||
self.numring.connect_button_signals(self.select_ring_number)
|
#self.numring.connect_button_signals(self.select_ring_number)
|
||||||
self.numring.keyPressed.connect(self.select_ring_number)
|
self.numring.keyPressed.connect(self.select_ring_number)
|
||||||
|
|
||||||
self.gamegrid.setFocus(Qt.MouseFocusReason)
|
self.gamegrid.setFocus(Qt.MouseFocusReason)
|
||||||
|
@ -129,7 +129,11 @@ class GameBoard(BoxBoard):
|
||||||
self.numring.toggle_anim(True)
|
self.numring.toggle_anim(True)
|
||||||
self.numring.scribbling = scribbling
|
self.numring.scribbling = scribbling
|
||||||
|
|
||||||
def select_ring_number(self, val):
|
def select_ring_number(self, val, scribbling):
|
||||||
|
if scribbling:
|
||||||
|
if not val == 'X':
|
||||||
|
self.gamegrid.change_cell_scribbles(val)
|
||||||
|
else:
|
||||||
if val == 'X':
|
if val == 'X':
|
||||||
val = 0
|
val = 0
|
||||||
self.gamegrid.replace_cell_number(int(val))
|
self.gamegrid.replace_cell_number(int(val))
|
||||||
|
|
|
@ -173,6 +173,10 @@ class SudokuGrid(BaseSudokuItem):
|
||||||
#self.sudoku_grid.generate_test_board(difficulty) # Uncomment for testing
|
#self.sudoku_grid.generate_test_board(difficulty) # Uncomment for testing
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
|
def change_cell_scribbles(self, val):
|
||||||
|
self.sudoku_grid.toggle_scribble(self.mouse_h, self.mouse_w, val)
|
||||||
|
self.grid_painter.update()
|
||||||
|
|
||||||
def replace_cell_number(self, val):
|
def replace_cell_number(self, val):
|
||||||
self.sudoku_grid.replace_cell_number(self.mouse_h, self.mouse_w, val)
|
self.sudoku_grid.replace_cell_number(self.mouse_h, self.mouse_w, val)
|
||||||
self.grid_painter.update()
|
self.grid_painter.update()
|
||||||
|
@ -262,7 +266,7 @@ class NumberRing(BaseSudokuItem):
|
||||||
# TODO: Adjust the positioning of each element
|
# TODO: Adjust the positioning of each element
|
||||||
# TODO: Make it transparent when mouse is out of range
|
# TODO: Make it transparent when mouse is out of range
|
||||||
loseFocus = pyqtSignal()
|
loseFocus = pyqtSignal()
|
||||||
keyPressed = pyqtSignal(str)
|
keyPressed = pyqtSignal(str, bool)
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
@ -272,6 +276,8 @@ class NumberRing(BaseSudokuItem):
|
||||||
self.cell_height = 24
|
self.cell_height = 24
|
||||||
|
|
||||||
self.cell_buttons = []
|
self.cell_buttons = []
|
||||||
|
for btn in self.cell_buttons:
|
||||||
|
btn.buttonClicked.connect(func)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
if i == 0:
|
if i == 0:
|
||||||
cell_string = 'X'
|
cell_string = 'X'
|
||||||
|
@ -279,6 +285,8 @@ class NumberRing(BaseSudokuItem):
|
||||||
cell_string = str(i)
|
cell_string = str(i)
|
||||||
btn = buttons.AnimBox(0, 0, self.cell_width,
|
btn = buttons.AnimBox(0, 0, self.cell_width,
|
||||||
self.cell_height, cell_string, parent=self)
|
self.cell_height, cell_string, parent=self)
|
||||||
|
btn.buttonClicked.connect(self.send_button_press)
|
||||||
|
#btn.buttonClicked.connect(self.close_menu)
|
||||||
self.cell_buttons.append(btn)
|
self.cell_buttons.append(btn)
|
||||||
|
|
||||||
self.radius = 54
|
self.radius = 54
|
||||||
|
@ -322,10 +330,9 @@ class NumberRing(BaseSudokuItem):
|
||||||
def paint(self, painter, style, widget=None):
|
def paint(self, painter, style, widget=None):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def connect_button_signals(self, func):
|
def send_button_press(self, val):
|
||||||
for btn in self.cell_buttons:
|
self.keyPressed.emit(val, self.scribbling)
|
||||||
btn.buttonClicked.connect(func)
|
self.close_menu()
|
||||||
btn.buttonClicked.connect(self.close_menu)
|
|
||||||
|
|
||||||
def freeze_buttons(self, freeze):
|
def freeze_buttons(self, freeze):
|
||||||
for btn in self.cell_buttons:
|
for btn in self.cell_buttons:
|
||||||
|
@ -356,7 +363,7 @@ class NumberRing(BaseSudokuItem):
|
||||||
|
|
||||||
if txt:
|
if txt:
|
||||||
print('keypress:', txt)
|
print('keypress:', txt)
|
||||||
self.keyPressed.emit(txt)
|
self.keyPressed.emit(txt, self.scribbling)
|
||||||
if not self.scribbling:
|
if not self.scribbling:
|
||||||
self.clearFocus()
|
self.clearFocus()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue