From 8f75da8adcfab0197d08a8b7e144ff029fd06c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Thu, 24 Mar 2022 17:53:53 +0100 Subject: [PATCH 1/6] Full working script app --- .../018c0c59d86470a55b8793dd4215666f062613c1 | 10 + .../42376656a1f9c16947feeb005deff2ee71f1c1c9 | 7 + .../502167feb8191c9abdaf85957a184430bf7dcb7d | 0 .../8378625e135b1de6c43f244c12a28ac01d2c6f80 | 34 +++ .../8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d} | 0 .../90479d8bc9f8dfa7116261e4ed6ed71a98437648 | 0 .idea/sonarlint/issuestore/index.pb | 15 +- Requirements.txt | 3 +- .../__pycache__/definitions.cpython-310.pyc | Bin 0 -> 488 bytes config/definitions.py | 9 + src/app/Main.py | 19 +- src/app/exceptions/CustomException.py | 6 + .../CustomException.cpython-310.pyc | Bin 1038 -> 1227 bytes src/app/scripts/FileExport.py | 58 ++++++ .../__pycache__/FileExport.cpython-310.pyc | Bin 0 -> 1945 bytes .../__pycache__/UiAboutForm.cpython-310.pyc | Bin 2403 -> 2403 bytes src/app/ui/MainWindow/UiMainWindow.py | 195 ++++++------------ .../__pycache__/UiMainWindow.cpython-310.pyc | Bin 0 -> 13419 bytes .../UiTableViewForm.cpython-310.pyc | Bin 6980 -> 6980 bytes src/assets/txt/about_lyl_lynx.txt | 4 +- src/assets/txt/about_pattern_builder.txt | 2 +- src/assets/txt/help_pattern_builder.txt | 4 +- src/setup/setup.py | 18 ++ 23 files changed, 230 insertions(+), 154 deletions(-) create mode 100644 .idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 create mode 100644 .idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 delete mode 100644 .idea/sonarlint/issuestore/5/0/502167feb8191c9abdaf85957a184430bf7dcb7d create mode 100644 .idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 rename .idea/sonarlint/issuestore/{1/e/1ed903fc02ba93edd480826414f531add48b5bbd => 8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d} (100%) delete mode 100644 .idea/sonarlint/issuestore/9/0/90479d8bc9f8dfa7116261e4ed6ed71a98437648 create mode 100644 config/__pycache__/definitions.cpython-310.pyc create mode 100644 config/definitions.py create mode 100644 src/app/scripts/__pycache__/FileExport.cpython-310.pyc create mode 100644 src/app/ui/MainWindow/__pycache__/UiMainWindow.cpython-310.pyc create mode 100644 src/setup/setup.py diff --git a/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 b/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 new file mode 100644 index 0000000..8eec046 --- /dev/null +++ b/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 @@ -0,0 +1,10 @@ + +n python:S116M"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( +q python:S116y"ZRename this field "horizontalLayout_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( +o python:S116)"XRename this field "horizontalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( +l python:S116#"VRename this field "verticalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(ۙg +w python:S1170"[Rename this local variable "spacerItem" to match the regular expression ^[_a-z][a-z0-9_]*$.( +s python:S117|"\Rename this local variable "spacerItem1" to match the regular expression ^[_a-z][a-z0-9_]*$.( +c python:S100"KRename method "getById" to match the regular expression ^[a-z_][a-z0-9_]*$.( +~ python:S117"aRename this local variable "__sortingEnabled" to match the regular expression ^[_a-z][a-z0-9_]*$.( +i python:S100"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 b/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 new file mode 100644 index 0000000..1196dcb --- /dev/null +++ b/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 @@ -0,0 +1,7 @@ + +l python:S116'"URename this field "plainTextEdit" to match the regular expression ^[_a-z][_a-z0-9]*$.( +n python:S116!"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(ž +x python:S116$"\Rename this field "textArea_grid_layout" to match the regular expression ^[_a-z][_a-z0-9]*$.( +w python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.(ӊ +w python:S1172"[Rename this local variable "spacerItem" to match the regular expression ^[_a-z][a-z0-9_]*$.( +m python:S100E"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.(ڢ \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/5/0/502167feb8191c9abdaf85957a184430bf7dcb7d b/.idea/sonarlint/issuestore/5/0/502167feb8191c9abdaf85957a184430bf7dcb7d deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 b/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 new file mode 100644 index 0000000..afd7d8b --- /dev/null +++ b/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 @@ -0,0 +1,34 @@ + +c python:S1192"KDefine a constant instead of duplicating this literal "button{}{}" 3 times.(å- +h python:S1162"QRename this field "spinBox_y" to match the regular expression ^[_a-z][_a-z0-9]*$.( +l python:S116"TRename this field "backButton_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( +l python:S116"URename this field "stackedWidget" to match the regular expression ^[_a-z][_a-z0-9]*$.( +p python:S116B"TRename this field "lineSizePage" to match the regular expression ^[_a-z][_a-z0-9]*$.(֨ +n python:S116-"RRename this field "widthLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( +w python:S116s"[Rename this field "patternMessageLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.(̮ +w python:S116I"`Rename this field "horizontalLayoutWidget_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( +r python:S116"VRename this field "verticalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( +o python:S116"WRename this field "linePatternPage" to match the regular expression ^[_a-z][_a-z0-9]*$.(܌ +h python:S116M"QRename this field "hLayout_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( +m python:S116""QRename this field "spinBox_x" to match the regular expression ^[_a-z][_a-z0-9]*$.( +e python:S116["NRename this field "xLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( +t python:S116"XRename this field "sizeMessageLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.(۽ +o python:S116"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(画 +x python:S116"`Rename this field "horizontalLayoutWidget_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( +o python:S116}"XRename this field "gridLayoutWidget" to match the regular expression ^[_a-z][_a-z0-9]*$.( +o python:S116"RRename this field "okButton_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( +o python:S116="SRename this field "heightLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( +i python:S116R"RRename this field "okButton_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( +i python:S116"QRename this field "hLayout_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( + python:S101"gRename class "Ui_MainWindow" to match the regular expression ^_?([A-Z_][a-zA-Z0-9]*|[a-z_][a-z0-9_]*)$.( +\ python:S5720"CRename "QMainWindow" to "self" or add the missing "self" parameter.(ڥ +r python:S117 "VRename this parameter "MainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.(Ǵ +r python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.( +g python:S100 "KRename method "setupUi" to match the regular expression ^[a-z_][a-z0-9_]*$.(Ǵ +r python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.(^ +u python:S117"]Rename this local variable "removeButton" to match the regular expression ^[_a-z][a-z0-9_]*$.( +k python:S100"NRename method "deleteGrid" to match the regular expression ^[a-z_][a-z0-9_]*$.(ϸ +o python:S117"WRename this parameter "QMainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.(ڥ +g python:S100"ORename method "finalMatrix" to match the regular expression ^[a-z_][a-z0-9_]*$.(و +s python:S117"VRename this parameter "MainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.( +n python:S100"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/1/e/1ed903fc02ba93edd480826414f531add48b5bbd b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d similarity index 100% rename from .idea/sonarlint/issuestore/1/e/1ed903fc02ba93edd480826414f531add48b5bbd rename to .idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d diff --git a/.idea/sonarlint/issuestore/9/0/90479d8bc9f8dfa7116261e4ed6ed71a98437648 b/.idea/sonarlint/issuestore/9/0/90479d8bc9f8dfa7116261e4ed6ed71a98437648 deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index f8113b9..c4466b3 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -1,8 +1,9 @@ -T -$src/app/ui/MainWindow/main_window.ui,1\e\1ed903fc02ba93edd480826414f531add48b5bbd -Y -)src/app/ui/TableView/table_widget_form.ui,5\0\502167feb8191c9abdaf85957a184430bf7dcb7d -: - -test.ipynb,9\0\90479d8bc9f8dfa7116261e4ed6ed71a98437648 \ No newline at end of file +9 + README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +O +Old app/Pattern_Builder_v1.2.py,8\3\8378625e135b1de6c43f244c12a28ac01d2c6f80 +S +#src/app/ui/AboutForm/UiAboutForm.py,4\2\42376656a1f9c16947feeb005deff2ee71f1c1c9 +W +'src/app/ui/TableView/UiTableViewForm.py,0\1\018c0c59d86470a55b8793dd4215666f062613c1 \ No newline at end of file diff --git a/Requirements.txt b/Requirements.txt index 54a5bed..c14247a 100644 --- a/Requirements.txt +++ b/Requirements.txt @@ -9,4 +9,5 @@ Python Matrix in .txt, .json file or even an image (.jpg, .jpeg, .png, .svg, .pd Tabler (.csv, .xls, .xlsx) Pattern image (.jpg, .jpeg, .png with white background, .png w/out background, .svg, .pdf) -PyQt5~=5.15.6 \ No newline at end of file +PyQt5~=5.15.6 +XlsxWriter~=3.0.3 \ No newline at end of file diff --git a/config/__pycache__/definitions.cpython-310.pyc b/config/__pycache__/definitions.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8a46ea00e986bae44ae6f84f67b4cc0ea9f4329 GIT binary patch literal 488 zcmYk3zfQw25XPN9jnhC-#RIT+pbr2DA=HJTG%8G1B$LK&>nd@g*pX-_MjoRXc_pt* zyaE%KG^#kupYG?g{hj3^3%Erh;X_#YVH0jBx@VTf57B8a1{b+9{iI(7M= zv6$W1jYYhE-D6H;6WkMKE|A}o&j!qE95OsrF;s(|0_FpqooEPj&a4+S4t}5u^t`tx z6XU2VHBM5N#;(O4&k`Xg<&JoXQd}$Ih+H9C~P1YT)JeKg9~lXli=vnE*lJ9#{~S^-$aVC;@TBLQ(rB*SG7V|i&3Rb6D6jH^}PHzes!_}Hsk}hkJFzMJCkfJ*YZ#Mp24mV}|9)1w15r~hjtP2>UPA{!L{}zuI literal 0 HcmV?d00001 diff --git a/config/definitions.py b/config/definitions.py new file mode 100644 index 0000000..cdaa15c --- /dev/null +++ b/config/definitions.py @@ -0,0 +1,9 @@ +import os +ROOT_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..')) +src_dir = os.path.join(ROOT_DIR, 'src') +app_dir = os.path.join(src_dir, 'app') +main_path = os.path.join(app_dir, 'ui', 'Main.py') +assets_dir = os.path.join(src_dir, 'assets') +img_dir = os.path.join(assets_dir, 'img') +txt_dir = os.path.join(assets_dir, 'txt') + diff --git a/src/app/Main.py b/src/app/Main.py index 88f193d..3210641 100644 --- a/src/app/Main.py +++ b/src/app/Main.py @@ -1,20 +1,19 @@ # This script is the main function of this application. +import sys +from PyQt5 import QtWidgets +from src.app.ui.MainWindow.UiMainWindow import UiMainWindow def main(): - print("Main function launched!") - """ - src = QtWidgets.QApplication(sys.argv) - # create window - window = QtWidgets.QMainWindow() + app = QtWidgets.QApplication(sys.argv) + window = QtWidgets.QMainWindow() ui = UiMainWindow(window) - # fill window - # ui.setupUi(window) - window.show() - sys.exit(src.exec_()) - """ + sys.exit(app.exec_()) + + + if __name__ == '__main__': main() diff --git a/src/app/exceptions/CustomException.py b/src/app/exceptions/CustomException.py index 4f1efd6..06177b6 100644 --- a/src/app/exceptions/CustomException.py +++ b/src/app/exceptions/CustomException.py @@ -23,3 +23,9 @@ class TableMaxItemError(CustomException): """ Exception raised when add attempt is made to fully load table. """ + + +class UnknownExtensionError(CustomException): + """ + Exception raised when a not valid extension is chosen. + """ diff --git a/src/app/exceptions/__pycache__/CustomException.cpython-310.pyc b/src/app/exceptions/__pycache__/CustomException.cpython-310.pyc index be9c2cc04661543d5117a2863b8a8c2acbc9a798..5143dd6855f3750d15c21daa610dc83a3129b33f 100644 GIT binary patch delta 200 zcmeC@86(y;8#hLkeu0=)pMO6-yXE903 zCo1ISmnf7a=47TQq{0*^WELwVXXF>B=1soCq$tV{G*1SIi}*kUi07xtHu(Uv0we$A ger9pmTO2mI`6;D2sdkJ&xnhuu1sDX_K~RJZ0Ay`3R{#J2 delta 84 zcmX@j*~h_~&&$ij00eByIg_L(^2##0Ow@K}OW_D+(Bzyf&n&rdt`f6gF$+)y2LlIV j5igM8r^!0Gj74GcVrJpV>sa`CIDldT3>}&{osAAd diff --git a/src/app/scripts/FileExport.py b/src/app/scripts/FileExport.py index e69de29..7595773 100644 --- a/src/app/scripts/FileExport.py +++ b/src/app/scripts/FileExport.py @@ -0,0 +1,58 @@ +import json +import xlsxwriter + + +def export_to_txt(matrix: list, path: str): + if path[-4:] != '.txt': + with open(path + '.txt', 'w', encoding='utf-8') as ef: + ef.write(str(matrix)) + else: + with open(path, 'w', encoding='utf-8') as ef: + ef.write(str(matrix)) + + +def export_to_json(matrix: list, path: str): + json_matrix = { + 'matrix': matrix + } + if path[-5:] != '.json': + with open(path + '.json', 'w', encoding='utf-8') as ef: + json.dump(json_matrix, ef) + else: + with open(path, 'w', encoding='utf-8') as ef: + json.dump(json_matrix, ef) + + +def format_csv(matrix: list, file): + for row in range(len(matrix)): + if row < 1: + file.write('col{}'.format(row)) + else: + file.write(',col{}'.format(row)) + for row, data in enumerate(matrix): + file.write('\n') + for i in range(len(data)): + if i < 1: + file.write(str(data[i])) + else: + file.write(',' + str(data[i])) + + +def export_to_csv(matrix: list, path: str): + if path[-4:] != '.csv': + with open(path + '.csv', 'w', encoding='utf-8') as ef: + format_csv(matrix, ef) + else: + with open(path, 'w', encoding='utf-8') as ef: + format_csv(matrix, ef) + + +def export_to_xlsx(matrix: list, path: str): + if path[-5:] != '.xlsx': + wb = xlsxwriter.Workbook(path + '.xlsx') + else: + wb = xlsxwriter.Workbook(path) + ws = wb.add_worksheet() + for row, data in enumerate(matrix): + ws.write_row(row, 0, data) + wb.close() diff --git a/src/app/scripts/__pycache__/FileExport.cpython-310.pyc b/src/app/scripts/__pycache__/FileExport.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..583eacc802040765599249b88b11a07b09aff2a6 GIT binary patch literal 1945 zcmb7E&u<$=6rNwZv7Oj4Q6Mc<5kv^IY8xq>03k#ng%cs7hYHJJIi7X1jkD{_jiOG5UPgnjjhBsMZm7+?aZ6^-t2tudoL-MOAOENFFx3R<}>yO zEoL8u#U~i)69~;T@37kB%WGVVP-q#-w$e&_KdPFV(fE1^8jmz>p$oc*l|Qpz(#y~+ z&1hD18JdFT4_Qz-$9Zfw_m7&^M1x#)oA#h3NI88Zz6FfWFw$QkGOoF1KZ%=6i$iJd zSkj0MrX~H|Gx>9MC^9kPR%Gmyk2zXWRGQKjV2Jj9ZD0;>Ur^RniUP-0PdjhPh0wIg^I&Yv`i6 z2-|1OR4~0b*!i&jWvHWOeJ5%4j>6cc^~T=UU)A?aqI)eHC2?Bcduk7oxDM28XyV3x zFY4&f)b}Rqd!J6%scF@l-EKW?nW&36pGTeW!JwNMyVZS~mqRyg*rb6!_i%Vhe^BM? zyvjE(tCFOtLN%8e;>=ZMe#1iZj71#iBOlWYNn~hif-N$H{AeE;S{+KuN61np$Ks{= zd3O=i zZy;)@rqDoe!$oomM^1MwvjVF{aAt}a-T^GGig?BGj-+`D`Z-jH{WM&A{SK1_RH~MZ z_@u#(QQEOLS<@U%R*V@+Sx(uu47RBuSTrJD$;=z0;U3?Hoj0Dg*+A`@S8xg{aL`Ey zh8P60lxX2vqNx=gCFXEHNe*k}rq+!iVFo-$^bAQD;AM hlsnY5gu+KhXx5$ZW4fq2slY&3xmK*KtgXIQ{0k;Mo&W#< literal 0 HcmV?d00001 diff --git a/src/app/ui/AboutForm/__pycache__/UiAboutForm.cpython-310.pyc b/src/app/ui/AboutForm/__pycache__/UiAboutForm.cpython-310.pyc index 97491508e4bbf96fbd9037f2f622d5a8af34de53..3a1f9f967aab217abe41cfd8c48c56aa01c5d583 100644 GIT binary patch delta 19 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 literal 0 HcmV?d00001 diff --git a/src/app/ui/TableView/__pycache__/UiTableViewForm.cpython-310.pyc b/src/app/ui/TableView/__pycache__/UiTableViewForm.cpython-310.pyc index a2c6170833c2f363f4c7d92c94d19c2e3e5b47e9..076e481d4d476c8e47ec4edc48358f551fc22dc5 100644 GIT binary patch delta 20 acmX?NcEpT3pO=@50SJ^Ov^H{EN&^5hl>`U? delta 20 acmX?NcEpT3pO=@50SMZ!X>R1Ulm-Agzy&D) diff --git a/src/assets/txt/about_lyl_lynx.txt b/src/assets/txt/about_lyl_lynx.txt index 66668c3..0b0d8ec 100644 --- a/src/assets/txt/about_lyl_lynx.txt +++ b/src/assets/txt/about_lyl_lynx.txt @@ -1,7 +1,7 @@ Hello World! -I am Grégory Ployart aka lyl-Lynx an I.T. engineering student at CESI engineering school. +I am Grégory Ployart aka greg-ynx an I.T. engineering student at CESI engineering school. You can contact me on : - Email : gregory.ployartwork@gmail.com - LinkedIn : https://www.linkedin.com/in/gr%C3%A9gory-ployart/ - - GitHub : https://github.com/lyl-Lynx \ No newline at end of file + - GitHub : https://github.com/greg-ynx \ No newline at end of file diff --git a/src/assets/txt/about_pattern_builder.txt b/src/assets/txt/about_pattern_builder.txt index 1a6f54c..db21453 100644 --- a/src/assets/txt/about_pattern_builder.txt +++ b/src/assets/txt/about_pattern_builder.txt @@ -12,4 +12,4 @@ open an issue or a merge request on the GitHub repository. if you have more questions about this application, you can contact me with this email address : -lyl-Lynx \ No newline at end of file +greg-ynx \ No newline at end of file diff --git a/src/assets/txt/help_pattern_builder.txt b/src/assets/txt/help_pattern_builder.txt index 54efc87..e51577d 100644 --- a/src/assets/txt/help_pattern_builder.txt +++ b/src/assets/txt/help_pattern_builder.txt @@ -1,6 +1,6 @@ If you encounter an issue with Pattern Builder's features, please open an issue on GitHub. - -> link : https://github.com/lyl-Lynx/Pattern-Builder + -> link : https://github.com/greg-ynx/Pattern-Builder You can also directly tell me about your issue on my mail address : -lyl-Lynx \ No newline at end of file +greg-ynx \ No newline at end of file diff --git a/src/setup/setup.py b/src/setup/setup.py new file mode 100644 index 0000000..c776e8f --- /dev/null +++ b/src/setup/setup.py @@ -0,0 +1,18 @@ +from cx_Freeze import setup, Executable + +base = None +executables = [Executable("Main.py", base=base)] +packages = ["idna", "PyQt5", "XlsxWriter"] +options = { + 'build_exe': { + 'packages': packages, + }, +} + +setup( + name="Pattern Builder", + options=options, + version="1.0", + description='Build any pattern you want!', + executables=executables +) From cca750fddeb454915216ce9072d08eb49dd06e70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Fri, 25 Mar 2022 18:01:28 +0100 Subject: [PATCH 2/6] Moved Main.py script and ReadMe completed --- .idea/Pattern Builder.iml | 3 + .../018c0c59d86470a55b8793dd4215666f062613c1 | 10 - .../8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d | 0 .idea/sonarlint/issuestore/index.pb | 6 +- src/app/Main.py => Main.py | 6 +- Old app/Pattern_Builder_v1.2.py | 297 ------------------ README.MD | 24 ++ Requirements.txt | 13 - __pycache__/Main.cpython-310.pyc | Bin 0 -> 579 bytes .../__pycache__/definitions.cpython-310.pyc | Bin 488 -> 729 bytes config/definitions.py | 8 + requirements.txt | 2 + src/app/ui/AboutForm/AboutForm.ui | 84 ----- src/app/ui/MainWindow/UiMainWindow.py | 6 +- src/setup/setup.py | 18 -- 15 files changed, 42 insertions(+), 435 deletions(-) delete mode 100644 .idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 delete mode 100644 .idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d rename src/app/Main.py => Main.py (99%) delete mode 100644 Old app/Pattern_Builder_v1.2.py delete mode 100644 Requirements.txt create mode 100644 __pycache__/Main.cpython-310.pyc create mode 100644 requirements.txt delete mode 100644 src/app/ui/AboutForm/AboutForm.ui delete mode 100644 src/setup/setup.py diff --git a/.idea/Pattern Builder.iml b/.idea/Pattern Builder.iml index 9a323b0..a9de233 100644 --- a/.idea/Pattern Builder.iml +++ b/.idea/Pattern Builder.iml @@ -7,4 +7,7 @@ + + \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 b/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 deleted file mode 100644 index 8eec046..0000000 --- a/.idea/sonarlint/issuestore/0/1/018c0c59d86470a55b8793dd4215666f062613c1 +++ /dev/null @@ -1,10 +0,0 @@ - -n python:S116M"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( -q python:S116y"ZRename this field "horizontalLayout_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( -o python:S116)"XRename this field "horizontalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( -l python:S116#"VRename this field "verticalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(ۙg -w python:S1170"[Rename this local variable "spacerItem" to match the regular expression ^[_a-z][a-z0-9_]*$.( -s python:S117|"\Rename this local variable "spacerItem1" to match the regular expression ^[_a-z][a-z0-9_]*$.( -c python:S100"KRename method "getById" to match the regular expression ^[a-z_][a-z0-9_]*$.( -~ python:S117"aRename this local variable "__sortingEnabled" to match the regular expression ^[_a-z][a-z0-9_]*$.( -i python:S100"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index c4466b3..fd1f04c 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -1,9 +1,5 @@ -9 - README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d O Old app/Pattern_Builder_v1.2.py,8\3\8378625e135b1de6c43f244c12a28ac01d2c6f80 S -#src/app/ui/AboutForm/UiAboutForm.py,4\2\42376656a1f9c16947feeb005deff2ee71f1c1c9 -W -'src/app/ui/TableView/UiTableViewForm.py,0\1\018c0c59d86470a55b8793dd4215666f062613c1 \ No newline at end of file +#src/app/ui/AboutForm/UiAboutForm.py,4\2\42376656a1f9c16947feeb005deff2ee71f1c1c9 \ No newline at end of file diff --git a/src/app/Main.py b/Main.py similarity index 99% rename from src/app/Main.py rename to Main.py index 3210641..4434ff8 100644 --- a/src/app/Main.py +++ b/Main.py @@ -1,11 +1,11 @@ # This script is the main function of this application. import sys -from PyQt5 import QtWidgets +from PyQt5 import QtWidgets from src.app.ui.MainWindow.UiMainWindow import UiMainWindow -def main(): +def main(): app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QMainWindow() ui = UiMainWindow(window) @@ -13,7 +13,5 @@ def main(): sys.exit(app.exec_()) - - if __name__ == '__main__': main() diff --git a/Old app/Pattern_Builder_v1.2.py b/Old app/Pattern_Builder_v1.2.py deleted file mode 100644 index 5c777b5..0000000 --- a/Old app/Pattern_Builder_v1.2.py +++ /dev/null @@ -1,297 +0,0 @@ -# -*- coding: utf-8 -*- - -# This program was meant to return a matrix from your chosen custom pattern - -from PyQt5 import QtCore, QtGui, QtWidgets - - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(480, 640) - self.centralwidget = QtWidgets.QWidget(MainWindow) - self.centralwidget.setObjectName("centralwidget") - self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) - self.verticalLayout.setObjectName("verticalLayout") - self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) - self.stackedWidget.setObjectName("stackedWidget") - -############################################################################## -#PAGE 1 - - self.page_1 = QtWidgets.QWidget() - self.page_1.setObjectName("page_1") - - # message "Set your matrix size" - self.sizeMessageLabel = QtWidgets.QLabel(self.page_1) - self.sizeMessageLabel.setGeometry(QtCore.QRect(10, 30, 151, 31)) - font = QtGui.QFont() - font.setPointSize(12) - self.sizeMessageLabel.setFont(font) - self.sizeMessageLabel.setObjectName("sizeMessageLabel") - - # spin box for the x size of the matrix - self.spinBox_x = QtWidgets.QSpinBox(self.page_1) - self.spinBox_x.setGeometry(QtCore.QRect(90, 180, 111, 51)) - font = QtGui.QFont() - font.setPointSize(36) - self.spinBox_x.setFont(font) - self.spinBox_x.setAlignment(QtCore.Qt.AlignCenter) - self.spinBox_x.setMaximum(40) - self.spinBox_x.setProperty("value", 0) - self.spinBox_x.setObjectName("spinBox_x") - - # label for x spin box - self.widthLabel = QtWidgets.QLabel(self.page_1) - self.widthLabel.setGeometry(QtCore.QRect(100, 240, 91, 31)) - self.widthLabel.setObjectName("widthLabel") - - # spin box for the y size of the matrix - self.spinBox_y = QtWidgets.QSpinBox(self.page_1) - self.spinBox_y.setGeometry(QtCore.QRect(250, 180, 111, 51)) - font = QtGui.QFont() - font.setPointSize(36) - self.spinBox_y.setFont(font) - self.spinBox_y.setAlignment(QtCore.Qt.AlignCenter) - self.spinBox_y.setMaximum(40) - self.spinBox_y.setProperty("value", 0) - self.spinBox_y.setObjectName("spinBox_y") - - # label for y spin box - self.heightLabel = QtWidgets.QLabel(self.page_1) - self.heightLabel.setGeometry(QtCore.QRect(270, 240, 91, 31)) - self.heightLabel.setObjectName("heightLabel") - - # line on the first page - self.lineSizePage = QtWidgets.QFrame(self.page_1) - self.lineSizePage.setGeometry(QtCore.QRect(10, 540, 441, 20)) - self.lineSizePage.setFrameShape(QtWidgets.QFrame.HLine) - self.lineSizePage.setFrameShadow(QtWidgets.QFrame.Sunken) - self.lineSizePage.setObjectName("lineSizePage") - - # horizontal layout for the ok button - self.horizontalLayoutWidget_1 = QtWidgets.QWidget(self.page_1) - self.horizontalLayoutWidget_1.setGeometry(QtCore.QRect(350, 560, 101, 51)) - self.horizontalLayoutWidget_1.setObjectName("horizontalLayoutWidget_1") - - self.hLayout_1 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_1) - self.hLayout_1.setContentsMargins(0, 0, 0, 0) - self.hLayout_1.setObjectName("hLayout_1") - - # creating the ok button - self.okButton_1 = QtWidgets.QPushButton(self.horizontalLayoutWidget_1) - self.okButton_1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) - self.okButton_1.setDefault(True) - self.okButton_1.setObjectName("okButton_1") - - - self.hLayout_1.addWidget(self.okButton_1) - - # label in between the spin box - self.xLabel = QtWidgets.QLabel(self.page_1) - self.xLabel.setGeometry(QtCore.QRect(210, 180, 31, 51)) - self.xLabel.setBaseSize(QtCore.QSize(0, 0)) - font = QtGui.QFont() - font.setPointSize(28) - self.xLabel.setFont(font) - self.xLabel.setLayoutDirection(QtCore.Qt.LeftToRight) - self.xLabel.setAlignment(QtCore.Qt.AlignCenter) - self.xLabel.setObjectName("xLabel") - - self.stackedWidget.addWidget(self.page_1) - -############################################################################## - -#PAGE 2 - - self.page_2 = QtWidgets.QWidget() - self.page_2.setObjectName("page_2") - - # travel to second page - self.okButton_1.clicked.connect(lambda: self.stackedWidget.setCurrentWidget(self.page_2)) - - - # message "Set your matrix pattern :" - self.patternMessageLabel = QtWidgets.QLabel(self.page_2) - self.patternMessageLabel.setGeometry(QtCore.QRect(10, 30, 181, 31)) - font = QtGui.QFont() - font.setPointSize(12) - self.patternMessageLabel.setFont(font) - self.patternMessageLabel.setObjectName("patternMessageLabel") - - - - # grid layout for the matrix button - self.gridLayoutWidget = QtWidgets.QWidget(self.page_2) - self.gridLayoutWidget.setGeometry(QtCore.QRect(-40, 0, 550, 550)) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.gridLayoutWidget.sizePolicy().hasHeightForWidth()) - self.gridLayoutWidget.setSizePolicy(sizePolicy) - self.gridLayoutWidget.setObjectName("gridLayoutWidget") - - self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) - self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetNoConstraint) - self.gridLayout.setContentsMargins(75, 75, 75, 75) - self.gridLayout.setSpacing(0) - self.gridLayout.setObjectName("gridLayout") - - # ok button for matrix function - self.okButton_1.clicked.connect(self.matrix) - - - # horizontal layout for back and ok buttons - self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.page_2) - self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(240, 560, 211, 51)) - self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") - - self.hLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) - self.hLayout_2.setContentsMargins(0, 0, 0, 0) - self.hLayout_2.setObjectName("hLayout_2") - - # creating and setting back button - self.backButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.backButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) - self.backButton_2.setAutoDefault(False) - self.backButton_2.setDefault(False) - self.backButton_2.setFlat(False) - self.backButton_2.setObjectName("backButton_2") - self.hLayout_2.addWidget(self.backButton_2) - self.backButton_2.clicked.connect(lambda: self.stackedWidget.setCurrentWidget(self.page_1)) - self.backButton_2.clicked.connect(self.deleteGrid) - - # creating and setting final ok button - self.okButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) - self.okButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) - self.okButton_2.setDefault(True) - self.okButton_2.setObjectName("okButton_2") - self.okButton_2.clicked.connect(self.finalMatrix) - self.hLayout_2.addWidget(self.okButton_2) - - - # line on the second page - self.linePatternPage = QtWidgets.QFrame(self.page_2) - self.linePatternPage.setGeometry(QtCore.QRect(10, 540, 441, 20)) - self.linePatternPage.setFrameShape(QtWidgets.QFrame.HLine) - self.linePatternPage.setFrameShadow(QtWidgets.QFrame.Sunken) - self.linePatternPage.setObjectName("linePatternPage") - - self.stackedWidget.addWidget(self.page_2) - -############################################################################## - - self.verticalLayout.addWidget(self.stackedWidget) - MainWindow.setCentralWidget(self.centralwidget) - - self.retranslateUi(MainWindow) - self.stackedWidget.setCurrentIndex(0) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - - def matrix(self): - """ - Generate a matrix - - """ - print("Matrix loading...") - x = self.spinBox_x.value() - y = self.spinBox_y.value() - for i in range(int(x)): - for j in range(int(y)): - self.button = QtWidgets.QPushButton(self.gridLayoutWidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHeightForWidth(self.button.sizePolicy().hasHeightForWidth()) - self.button.setSizePolicy(sizePolicy) - self.button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) - self.button.setObjectName("button") - self.button.setText("0") - self.button.setStyleSheet("background-color : red") - self.button.clicked.connect(self.clicked) - self.button.setObjectName("button{}{}".format(i, j)) - self.gridLayout.addWidget(self.button, i, j) - - - def deleteGrid(self): - """ - Delete the matrix grid - - """ - x = self.spinBox_x.value() - y = self.spinBox_y.value() - for i in range(int(x)): - for j in range(int(y)): - removeButton = MainWindow.findChild(QtWidgets.QPushButton, "button{}{}".format(i, j)) - removeButton.deleteLater() - - - def clicked(QMainWindow): - """ - Change button color and ID when pressed - - Returns - ------- - bool - True when button is red and turned to blue. - False when button is blue and turned to red. - - """ - button = MainWindow.sender() - namebp = button.objectName() - print("{} pressed".format(namebp)) - if button.text()=="0": - button.setText("1") - button.setStyleSheet("background-color : blue") - return True - else : - button.setText("0") - button.setStyleSheet("background-color : red") - return False - - - def finalMatrix(self): - """ - Matrix returned to python console - - Returns - ------- - matrix : list of list (array) - - """ - matrix = [] - line = [] - x = self.spinBox_x.value() - y = self.spinBox_y.value() - for i in range(x): - matrix.append([]) - line = [] - for j in range(int(y)): - button = MainWindow.findChild(QtWidgets.QPushButton, "button{}{}".format(i, j)) - line.append(int(button.text())) - matrix[i] = line - print(matrix) - return matrix - - - # method naming the elements - def retranslateUi(self, MainWindow): - _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "Pattern Builder")) - self.sizeMessageLabel.setText(_translate("MainWindow", "Set your matrix size :")) - self.widthLabel.setText(_translate("MainWindow", "Size x (horizontal)")) - self.heightLabel.setText(_translate("MainWindow", "Size y (vertical)")) - self.okButton_1.setText(_translate("MainWindow", "Ok")) - self.xLabel.setText(_translate("MainWindow", "X")) - self.patternMessageLabel.setText(_translate("MainWindow", "Set your matrix pattern :")) - self.backButton_2.setText(_translate("MainWindow", "Back")) - self.okButton_2.setText(_translate("MainWindow", "Ok")) - - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - MainWindow = QtWidgets.QMainWindow() - ui = Ui_MainWindow() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) diff --git a/README.MD b/README.MD index e69de29..567cc88 100644 --- a/README.MD +++ b/README.MD @@ -0,0 +1,24 @@ +# Pattern Builder by greg-ynx +Pattern Builder is a tool that graphically constructs matrix. +## How to use Pattern Builder ? + +![Pattern Builder UI](../readme/pbui.png) +### Sizes +Select the size of your matrix with the width and eight select components. +- Width : Number of columns (max = 16). +- Eight : Number of rows (max = 16). +### Colors +You can add up to 16 colors to your pattern. Then select your color with the select component. +### Reset pattern +Click on the "Reset pattern" button in order to get back to the initial pattern. +### Export +You can export your pattern into an array. +Pattern Builder currently supports : +- Text file (.txt) +- JSON file (.json) +- CSV file (.csv) +- Tabler file (.xlsx) + +## Credits +This application is built with Python programming language and QtDesigner software. +Dependencies used are PyQt5 and XlsxWriter. \ No newline at end of file diff --git a/Requirements.txt b/Requirements.txt deleted file mode 100644 index c14247a..0000000 --- a/Requirements.txt +++ /dev/null @@ -1,13 +0,0 @@ -This application will build a matrix of (n,m)-size with k-colors. -First we need to input our columns and rows range with number boxes. The matrix should generate on change! -There is another window with the list of usable colors, you can add color to the list with the default palette or -with a custom color that you have picked (Hexadecimal and RGB code could be used). -Then you just have to click on a color in the list and click on the matrix in order to build your pattern. - -This application can export your pattern as a : -Python Matrix in .txt, .json file or even an image (.jpg, .jpeg, .png, .svg, .pdf) -Tabler (.csv, .xls, .xlsx) -Pattern image (.jpg, .jpeg, .png with white background, .png w/out background, .svg, .pdf) - -PyQt5~=5.15.6 -XlsxWriter~=3.0.3 \ No newline at end of file diff --git a/__pycache__/Main.cpython-310.pyc b/__pycache__/Main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f579a5b751061dd0c8e94e3b16cb3f346ef76c1e GIT binary patch literal 579 zcmYjPO>fjN5cN3DZdy`6+ zDR>-ILCxk2F%#hrG7sfMOukdSFT-1cyKpvUGQGzhBmW{mz%V~!ns-<%*?^_rf&tbZvw^I^hAX&*HC@4GGT=B%H`5i_L<1SX%R3_p zoFqHiJ8|*sW7k!xEUao97nr4Stk9R&?%C`~gZ6VBGgs}xF?pk`3+0V0c@nsw=sGu9 zj8Yx#)i0u--nsSf={m@Q}a?W4`tMwcl{ xO?#C-`AWAhdNldJRa4ZG^U=#zc`*(;sL?_t5ApXP#=DImhL}b{6zu~0{Rj6$lj#5e literal 0 HcmV?d00001 diff --git a/config/__pycache__/definitions.cpython-310.pyc b/config/__pycache__/definitions.cpython-310.pyc index a8a46ea00e986bae44ae6f84f67b4cc0ea9f4329..71402d1c5c3c1e1a69225edbb01f4f8d22c9bed2 100644 GIT binary patch delta 447 zcmX|+%}&BV5XX176iR_okqE%Pzw?`aW_I^W`BV)*m(!VCy`Pf@Pt1+o*@q-#$UO%CCkH{yRTha@ z)mW31ia3f$L>#nLT|*@jkX}(56O!~5>8N5dQXsQ-Q_{_@D2tk;Tue2UvY3`=pbmLt zV3JsDkZ=p`ro5~uvyxk0RFG3%hDpUp<&28%7HlK$uxe)hetht)%3oA>mck!Hz8_AX zXngoGdW;iD#)bKpKLexQxj1dvR-@gyzN)pL&}p8ZS$6l%YS{H&yWP0zLa85+6Oui7 z9QA!9`(ZK|PypI`o_1NgwXIsW32F5Ewi5)-6q3?L&x6!>NS=3m1g0EK;hFCt1(p*I wZ7@`#wa$ZI9m$yLZ&EoD33jb1<2!o@;FjhQ`i - - About_Form - - - - 0 - 0 - 650 - 600 - - - - - 0 - 0 - - - - - 650 - 600 - - - - - 650 - 600 - - - - About... - - - - ../../../assets/img/lyl8Lynx_logo.png../../../assets/img/lyl8Lynx_logo.png - - - - - - - - true - - - Qt::NoFocus - - - true - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Close - - - - - - - - - - diff --git a/src/app/ui/MainWindow/UiMainWindow.py b/src/app/ui/MainWindow/UiMainWindow.py index aa39c78..c475d6c 100644 --- a/src/app/ui/MainWindow/UiMainWindow.py +++ b/src/app/ui/MainWindow/UiMainWindow.py @@ -14,7 +14,7 @@ import webbrowser -from config.definitions import img_dir, txt_dir +from config.definitions import img_dir, txt_dir, doc_dir from src.app.exceptions.CustomException import UnknownExtensionError from src.app.ui.TableView.UiTableViewForm import UiTableViewForm from src.app.ui.AboutForm.UiAboutForm import UiAboutForm @@ -380,7 +380,6 @@ def __init__(self, main_window): self.menubar.addAction(self.menu_help.menuAction()) self.retranslate_ui(main_window) - QtCore.QMetaObject.connectSlotsByName(main_window) def get_width(self): @@ -447,8 +446,7 @@ def get_matrix(self): def export_as(self): options = QFileDialog.Options() - options |= QFileDialog.DontUseNativeDialog - file_name, ext = QFileDialog.getSaveFileName(QWidget(), "QFileDialog.getSaveFileName()", "", + file_name, ext = QFileDialog.getSaveFileName(QWidget(), "Export as", doc_dir, "Text Files (*.txt) ;; JSON Files (*.json) ;; CSV Files (*.csv) " ";; Tabler files (*.xlsx)", options=options) diff --git a/src/setup/setup.py b/src/setup/setup.py deleted file mode 100644 index c776e8f..0000000 --- a/src/setup/setup.py +++ /dev/null @@ -1,18 +0,0 @@ -from cx_Freeze import setup, Executable - -base = None -executables = [Executable("Main.py", base=base)] -packages = ["idna", "PyQt5", "XlsxWriter"] -options = { - 'build_exe': { - 'packages': packages, - }, -} - -setup( - name="Pattern Builder", - options=options, - version="1.0", - description='Build any pattern you want!', - executables=executables -) From a796ad674702500a194be164f4b7a413870605a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Fri, 25 Mar 2022 20:02:05 +0100 Subject: [PATCH 3/6] first whoops --- .gitignore | 143 ++++++++++++++++++ .../8378625e135b1de6c43f244c12a28ac01d2c6f80 | 34 ----- .idea/sonarlint/issuestore/index.pb | 2 - 3 files changed, 143 insertions(+), 36 deletions(-) create mode 100644 .gitignore delete mode 100644 .idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..197837b --- /dev/null +++ b/.gitignore @@ -0,0 +1,143 @@ +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# JetBrains idea folder +.idea + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + diff --git a/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 b/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 deleted file mode 100644 index afd7d8b..0000000 --- a/.idea/sonarlint/issuestore/8/3/8378625e135b1de6c43f244c12a28ac01d2c6f80 +++ /dev/null @@ -1,34 +0,0 @@ - -c python:S1192"KDefine a constant instead of duplicating this literal "button{}{}" 3 times.(å- -h python:S1162"QRename this field "spinBox_y" to match the regular expression ^[_a-z][_a-z0-9]*$.( -l python:S116"TRename this field "backButton_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( -l python:S116"URename this field "stackedWidget" to match the regular expression ^[_a-z][_a-z0-9]*$.( -p python:S116B"TRename this field "lineSizePage" to match the regular expression ^[_a-z][_a-z0-9]*$.(֨ -n python:S116-"RRename this field "widthLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( -w python:S116s"[Rename this field "patternMessageLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.(̮ -w python:S116I"`Rename this field "horizontalLayoutWidget_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( -r python:S116"VRename this field "verticalLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.( -o python:S116"WRename this field "linePatternPage" to match the regular expression ^[_a-z][_a-z0-9]*$.(܌ -h python:S116M"QRename this field "hLayout_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( -m python:S116""QRename this field "spinBox_x" to match the regular expression ^[_a-z][_a-z0-9]*$.( -e python:S116["NRename this field "xLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( -t python:S116"XRename this field "sizeMessageLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.(۽ -o python:S116"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(画 -x python:S116"`Rename this field "horizontalLayoutWidget_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( -o python:S116}"XRename this field "gridLayoutWidget" to match the regular expression ^[_a-z][_a-z0-9]*$.( -o python:S116"RRename this field "okButton_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( -o python:S116="SRename this field "heightLabel" to match the regular expression ^[_a-z][_a-z0-9]*$.( -i python:S116R"RRename this field "okButton_1" to match the regular expression ^[_a-z][_a-z0-9]*$.( -i python:S116"QRename this field "hLayout_2" to match the regular expression ^[_a-z][_a-z0-9]*$.( - python:S101"gRename class "Ui_MainWindow" to match the regular expression ^_?([A-Z_][a-zA-Z0-9]*|[a-z_][a-z0-9_]*)$.( -\ python:S5720"CRename "QMainWindow" to "self" or add the missing "self" parameter.(ڥ -r python:S117 "VRename this parameter "MainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.(Ǵ -r python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.( -g python:S100 "KRename method "setupUi" to match the regular expression ^[a-z_][a-z0-9_]*$.(Ǵ -r python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.(^ -u python:S117"]Rename this local variable "removeButton" to match the regular expression ^[_a-z][a-z0-9_]*$.( -k python:S100"NRename method "deleteGrid" to match the regular expression ^[a-z_][a-z0-9_]*$.(ϸ -o python:S117"WRename this parameter "QMainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.(ڥ -g python:S100"ORename method "finalMatrix" to match the regular expression ^[a-z_][a-z0-9_]*$.(و -s python:S117"VRename this parameter "MainWindow" to match the regular expression ^[_a-z][a-z0-9_]*$.( -n python:S100"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index fd1f04c..bb06f12 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -1,5 +1,3 @@ -O -Old app/Pattern_Builder_v1.2.py,8\3\8378625e135b1de6c43f244c12a28ac01d2c6f80 S #src/app/ui/AboutForm/UiAboutForm.py,4\2\42376656a1f9c16947feeb005deff2ee71f1c1c9 \ No newline at end of file From d38ba86878c0b8123649729d440fb6b34b8ab696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Fri, 25 Mar 2022 20:10:47 +0100 Subject: [PATCH 4/6] test whoops --- .idea/.gitignore | 3 --- .idea/Pattern Builder.iml | 13 ------------- .idea/inspectionProfiles/Project_Default.xml | 13 ------------- .idea/inspectionProfiles/profiles_settings.xml | 6 ------ .idea/misc.xml | 4 ---- .idea/modules.xml | 8 -------- .../4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 | 7 ------- .idea/sonarlint/issuestore/index.pb | 3 --- .idea/vcs.xml | 6 ------ 9 files changed, 63 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/Pattern Builder.iml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 delete mode 100644 .idea/sonarlint/issuestore/index.pb delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/Pattern Builder.iml b/.idea/Pattern Builder.iml deleted file mode 100644 index a9de233..0000000 --- a/.idea/Pattern Builder.iml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 1c3e090..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index dc9ea49..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index ca68723..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 b/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 deleted file mode 100644 index 1196dcb..0000000 --- a/.idea/sonarlint/issuestore/4/2/42376656a1f9c16947feeb005deff2ee71f1c1c9 +++ /dev/null @@ -1,7 +0,0 @@ - -l python:S116'"URename this field "plainTextEdit" to match the regular expression ^[_a-z][_a-z0-9]*$.( -n python:S116!"RRename this field "gridLayout" to match the regular expression ^[_a-z][_a-z0-9]*$.(ž -x python:S116$"\Rename this field "textArea_grid_layout" to match the regular expression ^[_a-z][_a-z0-9]*$.( -w python:S117"[Rename this local variable "sizePolicy" to match the regular expression ^[_a-z][a-z0-9_]*$.(ӊ -w python:S1172"[Rename this local variable "spacerItem" to match the regular expression ^[_a-z][a-z0-9_]*$.( -m python:S100E"QRename method "retranslateUi" to match the regular expression ^[a-z_][a-z0-9_]*$.(ڢ \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb deleted file mode 100644 index bb06f12..0000000 --- a/.idea/sonarlint/issuestore/index.pb +++ /dev/null @@ -1,3 +0,0 @@ - -S -#src/app/ui/AboutForm/UiAboutForm.py,4\2\42376656a1f9c16947feeb005deff2ee71f1c1c9 \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From a213f5e2af29be22272b385bb48b52fdb66e59a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Fri, 25 Mar 2022 22:14:20 +0100 Subject: [PATCH 5/6] readme fold --- README.MD | 2 +- readme/pbui.png | Bin 0 -> 15297 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 readme/pbui.png diff --git a/README.MD b/README.MD index 567cc88..fd6d671 100644 --- a/README.MD +++ b/README.MD @@ -2,7 +2,7 @@ Pattern Builder is a tool that graphically constructs matrix. ## How to use Pattern Builder ? -![Pattern Builder UI](../readme/pbui.png) +![Pattern Builder UI](readme/pbui.png) ### Sizes Select the size of your matrix with the width and eight select components. - Width : Number of columns (max = 16). diff --git a/readme/pbui.png b/readme/pbui.png new file mode 100644 index 0000000000000000000000000000000000000000..77f913d2ac39ed2bc268c9d60bfd897999368525 GIT binary patch literal 15297 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 NLC5%9@tI4v{~w(Cn!f-5 literal 0 HcmV?d00001 From 0c9fd1057ae6ae1fea373065c98a2252a69e9930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Ployart?= Date: Sat, 26 Mar 2022 01:51:12 +0100 Subject: [PATCH 6/6] First release --- README.MD | 5 +++++ __pycache__/Main.cpython-310.pyc | Bin 579 -> 0 bytes config/__pycache__/definitions.cpython-310.pyc | Bin 729 -> 0 bytes .../CustomException.cpython-310.pyc | Bin 1227 -> 0 bytes .../__pycache__/FileExport.cpython-310.pyc | Bin 1945 -> 0 bytes src/app/ui/AboutForm/UiAboutForm.py | 4 ++-- .../__pycache__/UiAboutForm.cpython-310.pyc | Bin 2403 -> 0 bytes src/app/ui/MainWindow/UiMainWindow.py | 8 ++++---- .../__pycache__/UiMainWindow.cpython-310.pyc | Bin 13419 -> 0 bytes src/app/ui/TableView/UiTableViewForm.py | 10 +--------- .../UiTableViewForm.cpython-310.pyc | Bin 6980 -> 0 bytes .../img/pattern_builder_logo_c_800px.ico | Bin 0 -> 265278 bytes 12 files changed, 12 insertions(+), 15 deletions(-) delete mode 100644 __pycache__/Main.cpython-310.pyc delete mode 100644 config/__pycache__/definitions.cpython-310.pyc delete mode 100644 src/app/exceptions/__pycache__/CustomException.cpython-310.pyc delete mode 100644 src/app/scripts/__pycache__/FileExport.cpython-310.pyc delete mode 100644 src/app/ui/AboutForm/__pycache__/UiAboutForm.cpython-310.pyc delete mode 100644 src/app/ui/MainWindow/__pycache__/UiMainWindow.cpython-310.pyc delete mode 100644 src/app/ui/TableView/__pycache__/UiTableViewForm.cpython-310.pyc create mode 100644 src/assets/img/pattern_builder_logo_c_800px.ico diff --git a/README.MD b/README.MD index fd6d671..91176ef 100644 --- a/README.MD +++ b/README.MD @@ -1,16 +1,21 @@ # Pattern Builder by greg-ynx Pattern Builder is a tool that graphically constructs matrix. + ## How to use Pattern Builder ? ![Pattern Builder UI](readme/pbui.png) + ### Sizes Select the size of your matrix with the width and eight select components. - Width : Number of columns (max = 16). - Eight : Number of rows (max = 16). + ### Colors You can add up to 16 colors to your pattern. Then select your color with the select component. + ### Reset pattern Click on the "Reset pattern" button in order to get back to the initial pattern. + ### Export You can export your pattern into an array. Pattern Builder currently supports : diff --git a/__pycache__/Main.cpython-310.pyc b/__pycache__/Main.cpython-310.pyc deleted file mode 100644 index f579a5b751061dd0c8e94e3b16cb3f346ef76c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmYjPO>fjN5cN3DZdy`6+ zDR>-ILCxk2F%#hrG7sfMOukdSFT-1cyKpvUGQGzhBmW{mz%V~!ns-<%*?^_rf&tbZvw^I^hAX&*HC@4GGT=B%H`5i_L<1SX%R3_p zoFqHiJ8|*sW7k!xEUao97nr4Stk9R&?%C`~gZ6VBGgs}xF?pk`3+0V0c@nsw=sGu9 zj8Yx#)i0u--nsSf={m@Q}a?W4`tMwcl{ xO?#C-`AWAhdNldJRa4ZG^U=#zc`*(;sL?_t5ApXP#=DImhL}b{6zu~0{Rj6$lj#5e diff --git a/config/__pycache__/definitions.cpython-310.pyc b/config/__pycache__/definitions.cpython-310.pyc deleted file mode 100644 index 71402d1c5c3c1e1a69225edbb01f4f8d22c9bed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmYjO&2G~`5Z<+&*m0X5N?Lw|xc5K~a6^CyO-d^@iRGjMR+bjmJ89N(?8rYr`ZV#8 zSKv{6GcXV ziM>K~SF1wFYf<#k7QWrLdK!Hgu>u_E(7448TMo{rJ4d^-KsV(dG?pCdxp$620Yc*TH0 z@CB!0pTkLj+=37}Q~`1eIf4!34bLHR8#>4x&k=GAUF5Fk4d}gPyPGLi{%ZtC`#9G- z7!;cXz$PsSCLy#iKU{4eR;4rZ!Fj3*ml=IA>~S17%&p8y1$;46nyc$9o|U{TRGOV- zDR+ju8E(j;$g@;Z6<=d?8LeU=w45s;Ry`r+2CAIaTS9!SWPbIeBLtXKh)ZT;6zRi{ z;^1IYJg>+6?Ev8kLgR;rE<|hYNT-r22 zamkJRGWqAL_ll*(6JzAox{V=bQ4ocG@4uE>%0>%&Ll_zN(o`BQ4)1VJYMuc(r;X!h zl+H8Fot);1FEV(q++OXQ4YBZVFX~m7_BOpVTu`HVYE*Y04Rb1W3Qo*oV6CwiukR2E zDpyW%a&TTaQahKR=!}c&I^3E?qtY!DxJ@FxQle(1r)0&kJRjn_o0Up{+hm?qdA{Vi zkx*OPsI-sT9^qWm^^92@SlVe+`|zFqpv^)L&YjXFwqvb${|;}ZKlx8G$2L&cef603k#ng%cs7hYHJJIi7X1jkD{_jiOG5UPgnjjhBsMZm7+?aZ6^-t2tudoL-MOAOENFFx3R<}>yO zEoL8u#U~i)69~;T@37kB%WGVVP-q#-w$e&_KdPFV(fE1^8jmz>p$oc*l|Qpz(#y~+ z&1hD18JdFT4_Qz-$9Zfw_m7&^M1x#)oA#h3NI88Zz6FfWFw$QkGOoF1KZ%=6i$iJd zSkj0MrX~H|Gx>9MC^9kPR%Gmyk2zXWRGQKjV2Jj9ZD0;>Ur^RniUP-0PdjhPh0wIg^I&Yv`i6 z2-|1OR4~0b*!i&jWvHWOeJ5%4j>6cc^~T=UU)A?aqI)eHC2?Bcduk7oxDM28XyV3x zFY4&f)b}Rqd!J6%scF@l-EKW?nW&36pGTeW!JwNMyVZS~mqRyg*rb6!_i%Vhe^BM? zyvjE(tCFOtLN%8e;>=ZMe#1iZj71#iBOlWYNn~hif-N$H{AeE;S{+KuN61np$Ks{= zd3O=i zZy;)@rqDoe!$oomM^1MwvjVF{aAt}a-T^GGig?BGj-+`D`Z-jH{WM&A{SK1_RH~MZ z_@u#(QQEOLS<@U%R*V@+Sx(uu47RBuSTrJD$;=z0;U3?Hoj0Dg*+A`@S8xg{aL`Ey zh8P60lxX2vqNx=gCFXEHNe*k}rq+!iVFo-$^bAQD;AM hlsnY5gu+KhXx5$ZW4fq2slY&3xmK*KtgXIQ{0k;Mo&W#< diff --git a/src/app/ui/AboutForm/UiAboutForm.py b/src/app/ui/AboutForm/UiAboutForm.py index 36c4b1d..4c213ed 100644 --- a/src/app/ui/AboutForm/UiAboutForm.py +++ b/src/app/ui/AboutForm/UiAboutForm.py @@ -6,7 +6,8 @@ # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. -import sys +# +# Some modifications made to this generated class by greg-ynx. from PyQt5 import QtCore, QtGui, QtWidgets @@ -68,5 +69,4 @@ def set_text(self, txt_file_path): def retranslateUi(self, about_form): _translate = QtCore.QCoreApplication.translate - #about_form.setWindowTitle(_translate("About_Form", "About...")) self.close_button.setText(_translate("About_Form", "Close")) diff --git a/src/app/ui/AboutForm/__pycache__/UiAboutForm.cpython-310.pyc b/src/app/ui/AboutForm/__pycache__/UiAboutForm.cpython-310.pyc deleted file mode 100644 index 3a1f9f967aab217abe41cfd8c48c56aa01c5d583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2403 zcmZuzTXWM!6kgqI`AP_G2oz`wq{XCA=xtis=|CV{I>oUGlvd*zjiTMea%IU~t%o?H zJi$|EI{gdsWB<~=_9=g%4@}QlDX!D0JX-CZbM{=nJ?ps9s1kUttX|*Qs1x!RE*2jX z7I)!IZoxna)k5OnR}Zz3?&u@KF-E3iYUB~21~uOhYBKA!;gqPhP1@EG>>{1EAxk}R zKjutYJ@IG~$VyMV4Co#ciH{PCj}D8w@FrJbV8qcVadfIt{S9%9+=gRPiT|ED`;nt3bw8)57vOQ z1|C#V15iJtHCk6W{YZ`1X69j8$+T1D4ai(Cyj%zRI_zx}*4Kw0XE%U$c6hU(tSNui zi&gH&8hEzgUG@oTLqD@ysfja)^mg`XPNf9k((K5pLW_%V34Q}q1V6#RH2{gM?(u;B z;7tKdvL)EQxW}32BGC;M^|@?}LobM)18)G8DWcVT z!YOxRMRIB&_>6gUD+;H|+q?~_X;JlB@9{>wpD%a~gM(s>J)iL>f{kQlbARkbG>Gvbo|U_(`yH*s&-hZ6n*)hk1OBB-^r6bxho%E!GZ2|dAH1kwh_T*Mn# zd&-2D14AwsySBqvBpXu%3iLZOVc{;njQTBsiE}Ce2)bhrD%}wKkij5iYROkn%0xC` zU>?Swgntc;zoQ3t`cD}Ry#517*@#6V>AT%$Tm3GN>BJX793}nkR1D&%584Ie5db&{ zDdYWazP_=xb6~IPriqts@JuaR)ycPdY3g@ zyP(!3tqwfo<9A7euePGC=tx<`6?~VqrlM4Vf6!Vqc5KK;>>fXOwh%??K6nfh0rvo2 zF4Xwl_~Xo>p6Zzf9om4t19t-UXN|ms3(th#Yv|6{L2i@e;wzxz?`L>bS1~(M;|JD6 z?B4jQtx20jevBY#o6?NOERrVl5t^g54z-?xxNY*!!4du?3{u;55GMlapz4zkcaVP@ zhP&`4=>HNVsi|Fldotu>2%QKSk0)Mzz@Z6O}~L$L{OqG|#~ zJUF*lz7waT(=H)$B0#_E%Bt&*0Gt4DSJqwk*NGSA9R3ZOz(jG>zK}s>Tcr_Gfd^Bi z(I&QT->O?2sqL~fl4&BX?zAVqP+@aSUfz&PvFg-H^8XY|``g^9@9;iIFom|=(p$zq D*AkKF diff --git a/src/app/ui/MainWindow/UiMainWindow.py b/src/app/ui/MainWindow/UiMainWindow.py index c475d6c..94cf266 100644 --- a/src/app/ui/MainWindow/UiMainWindow.py +++ b/src/app/ui/MainWindow/UiMainWindow.py @@ -7,7 +7,7 @@ # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. # -# Some modifications made to this generated class by lyl-Lynx. +# Some modifications made to this generated class by greg-ynx. import os import sys @@ -55,7 +55,7 @@ def __init__(self, main_window): self.about_lyl_lynx_widget = QtWidgets.QWidget() self.about_lyl_lynx_form = UiAboutForm(self.about_lyl_lynx_widget, - "About lyl-Lynx", + "About greg-ynx", os.path.join(img_dir, "lyl8Lynx_logo.png"), os.path.join(txt_dir, "about_lyl_lynx.txt")) @@ -469,7 +469,7 @@ def export_as(self): def retranslate_ui(self, main_window): _translate = QtCore.QCoreApplication.translate - main_window.setWindowTitle(_translate("main_window", "Pattern Builder by lyl-Lynx")) + main_window.setWindowTitle(_translate("main_window", "Pattern Builder by greg-ynx")) self.toolBox_title.setText(_translate("main_window", "Tool box")) self.toolBox_sizes_title.setText(_translate("main_window", "Sizes")) self.width_label.setText(_translate("main_window", "Width")) @@ -483,7 +483,7 @@ def retranslate_ui(self, main_window): self.menu_help.setTitle(_translate("main_window", "Help")) self.action_help.setText(_translate("main_window", "Pattern builder help")) self.action_about_pb.setText(_translate("main_window", "About Pattern builder")) - self.action_about_author.setText(_translate("main_window", "About lyl-Lynx")) + self.action_about_author.setText(_translate("main_window", "About greg-ynx")) self.action_join_us.setText(_translate("main_window", "Join us on GitHub !")) diff --git a/src/app/ui/MainWindow/__pycache__/UiMainWindow.cpython-310.pyc b/src/app/ui/MainWindow/__pycache__/UiMainWindow.cpython-310.pyc deleted file mode 100644 index b746c9f1acad3c8629448e6d3e21410dc7c2f656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13419 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 diff --git a/src/app/ui/TableView/UiTableViewForm.py b/src/app/ui/TableView/UiTableViewForm.py index ce8277f..cd55836 100644 --- a/src/app/ui/TableView/UiTableViewForm.py +++ b/src/app/ui/TableView/UiTableViewForm.py @@ -7,9 +7,8 @@ # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. # -# Some modifications made to this generated class by lyl-Lynx. +# Some modifications made to this generated class by greg-ynx. -import sys from PyQt5 import QtCore, QtGui, QtWidgets from src.app.exceptions.CustomException import IdNotFound, ProtectedRowError, TableMaxItemError @@ -239,10 +238,3 @@ def retranslateUi(self, table_view_form): item.setText(_translate("table_view_form", "(0,0,255)")) self.table_widget.setSortingEnabled(__sortingEnabled) self.close_button.setText(_translate("table_view_form", "Close")) - -if __name__ == "__main__": - app = QtWidgets.QApplication(sys.argv) - widget = QtWidgets.QWidget() - ui = UiTableViewForm(widget) - widget.show() - sys.exit(app.exec_()) diff --git a/src/app/ui/TableView/__pycache__/UiTableViewForm.cpython-310.pyc b/src/app/ui/TableView/__pycache__/UiTableViewForm.cpython-310.pyc deleted file mode 100644 index 076e481d4d476c8e47ec4edc48358f551fc22dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6980 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