Skip to content

Commit 2d143b4

Browse files
committed
file check complete
1 parent d9f5869 commit 2d143b4

File tree

8 files changed

+132
-176
lines changed

8 files changed

+132
-176
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pyc

components/fiveThread.py

Whitespace-only changes.

components/samuraiSudoku.py

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import sys
2+
3+
from PyQt5.QtWidgets import QMainWindow, QApplication
4+
from PyQt5.QtCore import QUrl
5+
from PyQt5.QtWidgets import QApplication, QFileDialog
6+
7+
from templates.Ui_main import Ui_MainWindow
8+
from components import fiveThread
9+
from components import tenThread
10+
11+
12+
class SamuraiSudoku(QMainWindow, Ui_MainWindow):
13+
def __init__(self):
14+
super().__init__()
15+
self.setupUi(self)
16+
self.loadButton.clicked.connect(self.chooseFile)
17+
18+
def chooseFile(self):
19+
self.filePath, self.filetype = QFileDialog.getOpenFileName(
20+
self, "Select Sample Sudoku File", "", "Text Files (*.txt)")
21+
self.file = QUrl.fromLocalFile(self.filePath)
22+
self.isFileSelected = False
23+
if not self.file.isEmpty():
24+
self.fileName = self.file.fileName()
25+
self.isFileSelected = True
26+
self.oldFilePath = self.filePath
27+
self.oldFile = self.file
28+
self.setInfo("'{}' {}".format(self.fileName, "file selected!"))
29+
if self.checkFile(self.filePath):
30+
self.setInfo("File format is true!")
31+
else:
32+
self.setInfo("Wrong file format!")
33+
elif self.file.isEmpty() and self.isFileSelected:
34+
self.isFileSelected = True
35+
self.setInfo("'{}' {}".format(self.fileName, "old file selected!"))
36+
if self.checkFile(self.filePath):
37+
self.setInfo("File format is true!")
38+
else:
39+
self.setInfo("Wrong file format!")
40+
41+
else:
42+
self.isFileSelected = False
43+
self.setInfo("File not selected!")
44+
45+
def checkFile(self, file):
46+
matrix = []
47+
sampleFile = False
48+
if file:
49+
sampleFile = True
50+
with open(file, 'r') as reader:
51+
lines = reader.readlines()
52+
if len(lines) == 21:
53+
self.counter = 1
54+
self.control = 18
55+
for line in lines:
56+
if len(line.rstrip()) == self.control:
57+
temp = []
58+
for digit in line.rstrip():
59+
temp.append(digit)
60+
matrix.append(temp)
61+
62+
self.control = 21 if self.counter == 6 else self.control
63+
self.control = 9 if self.counter == 9 else self.control
64+
self.control = 21 if self.counter == 12 else self.control
65+
self.control = 18 if self.counter == 15 else self.control
66+
self.counter += 1
67+
68+
print(line, len(line.rstrip()),
69+
self.counter, self.control)
70+
else:
71+
print(line, len(line.rstrip()),
72+
self.counter, self.control)
73+
sampleFile = False
74+
return
75+
else:
76+
sampleFile = False
77+
return sampleFile
78+
79+
def setInfo(self, msg):
80+
self.logScreen.insertPlainText(
81+
"main: {}\n".format(msg))
82+
self.logScreen.ensureCursorVisible()
83+
84+
85+
if __name__ == "__main__":
86+
app = QApplication(sys.argv)
87+
win = SamuraiSudoku()
88+
win.show()
89+
sys.exit(app.exec())

components/tenThread.py

Whitespace-only changes.

main.py

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import sys
2+
from PyQt5.QtWidgets import QApplication
3+
from components import samuraiSudoku
4+
5+
if __name__ == "__main__":
6+
app = QApplication(sys.argv)
7+
window = samuraiSudoku.SamuraiSudoku()
8+
window.show()
9+
sys.exit(app.exec_())

samples/sample.txt

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
**57***2***96***2*
2+
49**6**1*14**5**3*
3+
**7**49*6**2**17*8
4+
**6*****8**3*****2
5+
*7*****9**5*****6*
6+
2*****3**4*****5**
7+
5*89**7*****6*58**2**
8+
*1**3**85****1**7**86
9+
*2***56***1**2***43**
10+
***4*6***
11+
**6*5*2**
12+
***2*8***
13+
**85***2**3***89***6*
14+
62**4**5****96**2**5*
15+
**7**89*3*****2**81*9
16+
**6*****2**1*****6
17+
*5*****4**8*****2*
18+
8*****3**7*****5**
19+
1*59**2**2*67**4**
20+
*3**6**71*3**9**78
21+
*6***35***9***42**

Ui_main.py renamed to templates/Ui_main.py

+10-92
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
# Form implementation generated from reading ui file 'c:\Users\Lenovo\Desktop\KOU\PROGRAMLAMA\samurai-sudoku\main.ui'
3+
# Form implementation generated from reading ui file 'c:\Users\Lenovo\Desktop\KOU\PROGRAMLAMA\samurai-sudoku\templates\main.ui'
44
#
55
# Created by: PyQt5 UI code generator 5.15.4
66
#
@@ -4874,88 +4874,6 @@ def setupUi(self, MainWindow):
48744874
self.cell_15_11.setReadOnly(True)
48754875
self.cell_15_11.setObjectName("cell_15_11")
48764876
self.gridLayout_26.addWidget(self.cell_15_11, 0, 2, 1, 1)
4877-
self.frame_32.raise_()
4878-
self.frame_38.raise_()
4879-
self.frame_6.raise_()
4880-
self.frame_28.raise_()
4881-
self.frame_36.raise_()
4882-
self.frame_41.raise_()
4883-
self.frame_2.raise_()
4884-
self.frame_3.raise_()
4885-
self.frame_42.raise_()
4886-
self.frame_25.raise_()
4887-
self.frame_8.raise_()
4888-
self.frame_22.raise_()
4889-
self.frame_19.raise_()
4890-
self.frame_21.raise_()
4891-
self.frame_37.raise_()
4892-
self.frame_35.raise_()
4893-
self.frame_13.raise_()
4894-
self.frame_18.raise_()
4895-
self.frame_5.raise_()
4896-
self.frame_27.raise_()
4897-
self.frame_39.raise_()
4898-
self.frame_17.raise_()
4899-
self.frame_10.raise_()
4900-
self.frame_9.raise_()
4901-
self.frame_20.raise_()
4902-
self.frame_4.raise_()
4903-
self.frame_24.raise_()
4904-
self.frame_12.raise_()
4905-
self.frame_33.raise_()
4906-
self.frame_11.raise_()
4907-
self.frame_14.raise_()
4908-
self.frame_30.raise_()
4909-
self.frame_29.raise_()
4910-
self.frame_34.raise_()
4911-
self.frame_23.raise_()
4912-
self.frame_31.raise_()
4913-
self.frame_40.raise_()
4914-
self.frame_16.raise_()
4915-
self.frame_15.raise_()
4916-
self.frame_7.raise_()
4917-
self.frame_26.raise_()
4918-
self.frame_32.raise_()
4919-
self.frame_38.raise_()
4920-
self.frame_6.raise_()
4921-
self.frame_28.raise_()
4922-
self.frame_36.raise_()
4923-
self.frame_41.raise_()
4924-
self.frame_2.raise_()
4925-
self.frame_3.raise_()
4926-
self.frame_42.raise_()
4927-
self.frame_25.raise_()
4928-
self.frame_8.raise_()
4929-
self.frame_22.raise_()
4930-
self.frame_19.raise_()
4931-
self.frame_21.raise_()
4932-
self.frame_37.raise_()
4933-
self.frame_35.raise_()
4934-
self.frame_13.raise_()
4935-
self.frame_18.raise_()
4936-
self.frame_5.raise_()
4937-
self.frame_27.raise_()
4938-
self.frame_39.raise_()
4939-
self.frame_17.raise_()
4940-
self.frame_10.raise_()
4941-
self.frame_9.raise_()
4942-
self.frame_20.raise_()
4943-
self.frame_4.raise_()
4944-
self.frame_24.raise_()
4945-
self.frame_12.raise_()
4946-
self.frame_33.raise_()
4947-
self.frame_11.raise_()
4948-
self.frame_14.raise_()
4949-
self.frame_30.raise_()
4950-
self.frame_29.raise_()
4951-
self.frame_34.raise_()
4952-
self.frame_23.raise_()
4953-
self.frame_31.raise_()
4954-
self.frame_40.raise_()
4955-
self.frame_16.raise_()
4956-
self.frame_15.raise_()
4957-
self.frame_7.raise_()
4958-
self.frame_26.raise_()
49594877
self.line = QtWidgets.QFrame(self.centralwidget)
49604878
self.line.setGeometry(QtCore.QRect(670, 30, 31, 621))
49614879
self.line.setFrameShape(QtWidgets.QFrame.VLine)
@@ -4971,24 +4889,24 @@ def setupUi(self, MainWindow):
49714889
self.widget = QtWidgets.QWidget(self.frame_43)
49724890
self.widget.setObjectName("widget")
49734891
self.gridLayout.addWidget(self.widget, 0, 0, 1, 1)
4974-
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
4975-
self.plainTextEdit.setGeometry(QtCore.QRect(713, 21, 431, 231))
4976-
self.plainTextEdit.setObjectName("plainTextEdit")
4892+
self.logScreen = QtWidgets.QPlainTextEdit(self.centralwidget)
4893+
self.logScreen.setGeometry(QtCore.QRect(713, 21, 431, 231))
4894+
self.logScreen.setObjectName("logScreen")
49774895
self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
49784896
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(713, 294, 431, 92))
49794897
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
49804898
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
49814899
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
49824900
self.horizontalLayout.setSpacing(3)
49834901
self.horizontalLayout.setObjectName("horizontalLayout")
4984-
self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
4985-
self.pushButton.setMinimumSize(QtCore.QSize(0, 90))
4902+
self.loadButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
4903+
self.loadButton.setMinimumSize(QtCore.QSize(0, 90))
49864904
font = QtGui.QFont()
49874905
font.setFamily("Yu Gothic UI Semilight")
49884906
font.setPointSize(11)
4989-
self.pushButton.setFont(font)
4990-
self.pushButton.setObjectName("pushButton")
4991-
self.horizontalLayout.addWidget(self.pushButton)
4907+
self.loadButton.setFont(font)
4908+
self.loadButton.setObjectName("loadButton")
4909+
self.horizontalLayout.addWidget(self.loadButton)
49924910
self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
49934911
self.pushButton_2.setEnabled(False)
49944912
self.pushButton_2.setMinimumSize(QtCore.QSize(0, 90))
@@ -5476,7 +5394,7 @@ def retranslateUi(self, MainWindow):
54765394
self.cell_15_10.setInputMask(_translate("MainWindow", "9"))
54775395
self.cell_15_9.setInputMask(_translate("MainWindow", "9"))
54785396
self.cell_15_11.setInputMask(_translate("MainWindow", "9"))
5479-
self.pushButton.setText(_translate("MainWindow", "Load"))
5397+
self.loadButton.setText(_translate("MainWindow", "Load"))
54805398
self.pushButton_2.setText(_translate("MainWindow", "Solve"))
54815399
self.pushButton_3.setText(_translate("MainWindow", "Compare"))
54825400
self.pushButton_4.setText(_translate("MainWindow", "Clear"))

main.ui renamed to templates/main.ui

+2-84
Original file line numberDiff line numberDiff line change
@@ -15303,88 +15303,6 @@ aborder-color: rgb(195, 195, 195);
1530315303
</item>
1530415304
</layout>
1530515305
</widget>
15306-
<zorder>frame_32</zorder>
15307-
<zorder>frame_38</zorder>
15308-
<zorder>frame_6</zorder>
15309-
<zorder>frame_28</zorder>
15310-
<zorder>frame_36</zorder>
15311-
<zorder>frame_41</zorder>
15312-
<zorder>frame_2</zorder>
15313-
<zorder>frame_3</zorder>
15314-
<zorder>frame_42</zorder>
15315-
<zorder>frame_25</zorder>
15316-
<zorder>frame_8</zorder>
15317-
<zorder>frame_22</zorder>
15318-
<zorder>frame_19</zorder>
15319-
<zorder>frame_21</zorder>
15320-
<zorder>frame_37</zorder>
15321-
<zorder>frame_35</zorder>
15322-
<zorder>frame_13</zorder>
15323-
<zorder>frame_18</zorder>
15324-
<zorder>frame_5</zorder>
15325-
<zorder>frame_27</zorder>
15326-
<zorder>frame_39</zorder>
15327-
<zorder>frame_17</zorder>
15328-
<zorder>frame_10</zorder>
15329-
<zorder>frame_9</zorder>
15330-
<zorder>frame_20</zorder>
15331-
<zorder>frame_4</zorder>
15332-
<zorder>frame_24</zorder>
15333-
<zorder>frame_12</zorder>
15334-
<zorder>frame_33</zorder>
15335-
<zorder>frame_11</zorder>
15336-
<zorder>frame_14</zorder>
15337-
<zorder>frame_30</zorder>
15338-
<zorder>frame_29</zorder>
15339-
<zorder>frame_34</zorder>
15340-
<zorder>frame_23</zorder>
15341-
<zorder>frame_31</zorder>
15342-
<zorder>frame_40</zorder>
15343-
<zorder>frame_16</zorder>
15344-
<zorder>frame_15</zorder>
15345-
<zorder>frame_7</zorder>
15346-
<zorder>frame_26</zorder>
15347-
<zorder>frame_32</zorder>
15348-
<zorder>frame_38</zorder>
15349-
<zorder>frame_6</zorder>
15350-
<zorder>frame_28</zorder>
15351-
<zorder>frame_36</zorder>
15352-
<zorder>frame_41</zorder>
15353-
<zorder>frame_2</zorder>
15354-
<zorder>frame_3</zorder>
15355-
<zorder>frame_42</zorder>
15356-
<zorder>frame_25</zorder>
15357-
<zorder>frame_8</zorder>
15358-
<zorder>frame_22</zorder>
15359-
<zorder>frame_19</zorder>
15360-
<zorder>frame_21</zorder>
15361-
<zorder>frame_37</zorder>
15362-
<zorder>frame_35</zorder>
15363-
<zorder>frame_13</zorder>
15364-
<zorder>frame_18</zorder>
15365-
<zorder>frame_5</zorder>
15366-
<zorder>frame_27</zorder>
15367-
<zorder>frame_39</zorder>
15368-
<zorder>frame_17</zorder>
15369-
<zorder>frame_10</zorder>
15370-
<zorder>frame_9</zorder>
15371-
<zorder>frame_20</zorder>
15372-
<zorder>frame_4</zorder>
15373-
<zorder>frame_24</zorder>
15374-
<zorder>frame_12</zorder>
15375-
<zorder>frame_33</zorder>
15376-
<zorder>frame_11</zorder>
15377-
<zorder>frame_14</zorder>
15378-
<zorder>frame_30</zorder>
15379-
<zorder>frame_29</zorder>
15380-
<zorder>frame_34</zorder>
15381-
<zorder>frame_23</zorder>
15382-
<zorder>frame_31</zorder>
15383-
<zorder>frame_40</zorder>
15384-
<zorder>frame_16</zorder>
15385-
<zorder>frame_15</zorder>
15386-
<zorder>frame_7</zorder>
15387-
<zorder>frame_26</zorder>
1538815306
</widget>
1538915307
<widget class="Line" name="line">
1539015308
<property name="geometry">
@@ -15420,7 +15338,7 @@ aborder-color: rgb(195, 195, 195);
1542015338
</item>
1542115339
</layout>
1542215340
</widget>
15423-
<widget class="QPlainTextEdit" name="plainTextEdit">
15341+
<widget class="QPlainTextEdit" name="logScreen">
1542415342
<property name="geometry">
1542515343
<rect>
1542615344
<x>713</x>
@@ -15444,7 +15362,7 @@ aborder-color: rgb(195, 195, 195);
1544415362
<number>3</number>
1544515363
</property>
1544615364
<item>
15447-
<widget class="QPushButton" name="pushButton">
15365+
<widget class="QPushButton" name="loadButton">
1544815366
<property name="minimumSize">
1544915367
<size>
1545015368
<width>0</width>

0 commit comments

Comments
 (0)