X now clears the scribble

master
En Yi 2018-07-21 16:26:40 +08:00
parent 1ff6fd522b
commit e9be3dca6d
3 changed files with 17 additions and 8 deletions

View File

@ -44,6 +44,9 @@ class SudokuSystem:
if val == 0: if val == 0:
self.change_cell_status(row, col, EMPTY) self.change_cell_status(row, col, EMPTY)
def clear_scribble(self, row, col):
self.scribbles[row, col] = ''
def toggle_scribble(self, row, col, val): def toggle_scribble(self, row, col, val):
if val in self.scribbles[row, col]: if val in self.scribbles[row, col]:
self.scribbles[row, col] = self.scribbles[row, col].replace(val, '') self.scribbles[row, col] = self.scribbles[row, col].replace(val, '')

View File

@ -130,12 +130,11 @@ class GameBoard(BoxBoard):
self.numring.scribbling = scribbling self.numring.scribbling = scribbling
def select_ring_number(self, val, scribbling): def select_ring_number(self, val, scribbling):
if val == 'X':
val = 0
if scribbling: if scribbling:
if not val == 'X': self.gamegrid.change_cell_scribbles(val)
self.gamegrid.change_cell_scribbles(val)
else: else:
if val == 'X':
val = 0
self.gamegrid.replace_cell_number(int(val)) self.gamegrid.replace_cell_number(int(val))
def game_refocus(self): def game_refocus(self):

View File

@ -174,7 +174,10 @@ class SudokuGrid(BaseSudokuItem):
self.update() self.update()
def change_cell_scribbles(self, val): def change_cell_scribbles(self, val):
self.sudoku_grid.toggle_scribble(self.mouse_h, self.mouse_w, val) if val == 0:
self.sudoku_grid.clear_scribble(self.mouse_h, self.mouse_w)
else:
self.sudoku_grid.toggle_scribble(self.mouse_h, self.mouse_w, val)
self.grid_painter.update() self.grid_painter.update()
def replace_cell_number(self, val): def replace_cell_number(self, val):
@ -276,8 +279,6 @@ 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'
@ -344,6 +345,12 @@ class NumberRing(BaseSudokuItem):
else: else:
self.setFocus() self.setFocus()
def mousePressEvent(self, event):
if not any(btn.isUnderMouse() for btn in self.cell_buttons):
self.toggle_anim(False)
else:
self.setFocus()
def close_menu(self): def close_menu(self):
if not self.scribbling: if not self.scribbling:
self.toggle_anim(False) self.toggle_anim(False)
@ -364,7 +371,7 @@ class NumberRing(BaseSudokuItem):
if txt: if txt:
print('keypress:', txt) print('keypress:', txt)
self.keyPressed.emit(txt, self.scribbling) self.keyPressed.emit(txt, self.scribbling)
if not self.scribbling or txt == 'X': if not self.scribbling:
self.clearFocus() self.clearFocus()
def keyReleaseEvent(self, event): def keyReleaseEvent(self, event):