q2rad 0.1.165__tar.gz → 0.1.166__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of q2rad might be problematic. Click here for more details.
- {q2rad-0.1.165 → q2rad-0.1.166}/PKG-INFO +1 -1
- {q2rad-0.1.165 → q2rad-0.1.166}/pyproject.toml +1 -1
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2appmanager.py +22 -21
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2rad.py +103 -56
- q2rad-0.1.166/q2rad/version.py +1 -0
- q2rad-0.1.165/q2rad/version.py +0 -1
- {q2rad-0.1.165 → q2rad-0.1.166}/LICENSE +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/README.md +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/__init__.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/__main__.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2actions.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2appselector.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2constants.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2forms.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2lines.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2market.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2modules.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2packages.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2queries.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2raddb.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2reports.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2stylesettings.py +0 -0
- {q2rad-0.1.165 → q2rad-0.1.166}/q2rad/q2utils.py +0 -0
|
@@ -35,31 +35,32 @@ class AppManager(Q2Form):
|
|
|
35
35
|
app_data = q2app.q2_app.selected_application
|
|
36
36
|
self.add_control("/")
|
|
37
37
|
if self.add_control("/h", "Platform"):
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
if not q2app.q2_app.frozen:
|
|
39
|
+
self.add_control(
|
|
40
|
+
"upgrade",
|
|
41
|
+
"Check updates",
|
|
42
|
+
control="button",
|
|
43
|
+
datalen=10,
|
|
44
|
+
valid=q2app.q2_app.update_packages,
|
|
45
|
+
)
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
self.add_control("/s")
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
self.add_control(
|
|
50
|
+
"reinstall_",
|
|
51
|
+
"Reinstall",
|
|
52
|
+
control="button",
|
|
53
|
+
valid=self.reinstall,
|
|
54
|
+
)
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
self.add_control(
|
|
57
|
+
"reinstall_git",
|
|
58
|
+
"Reinstall from GitHub",
|
|
59
|
+
control="button",
|
|
60
|
+
valid=self.update_from_git,
|
|
61
|
+
)
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
self.add_control("/s")
|
|
63
64
|
|
|
64
65
|
self.add_control(
|
|
65
66
|
"reload_assets",
|
|
@@ -18,7 +18,6 @@ import re
|
|
|
18
18
|
import threading
|
|
19
19
|
|
|
20
20
|
if __name__ == "__main__":
|
|
21
|
-
|
|
22
21
|
sys.path.insert(0, ".")
|
|
23
22
|
|
|
24
23
|
|
|
@@ -201,11 +200,11 @@ def explain_error(tb=None, errtype=None):
|
|
|
201
200
|
|
|
202
201
|
class Q2RadApp(Q2App):
|
|
203
202
|
def __init__(self, title=""):
|
|
204
|
-
|
|
205
203
|
_logger.warning("About to start")
|
|
206
204
|
super().__init__(title)
|
|
207
205
|
self.settings_title = "q2RAD"
|
|
208
206
|
self.style_file = "q2rad.qss"
|
|
207
|
+
self.frozen = getattr(sys, "frozen", False)
|
|
209
208
|
self.db = None
|
|
210
209
|
|
|
211
210
|
self.db_data = None
|
|
@@ -497,11 +496,10 @@ class Q2RadApp(Q2App):
|
|
|
497
496
|
|
|
498
497
|
self.create_form_menu()
|
|
499
498
|
|
|
500
|
-
self.
|
|
501
|
-
self.
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
)
|
|
499
|
+
if self.frozen:
|
|
500
|
+
self.dev_mode = False
|
|
501
|
+
|
|
502
|
+
self.dev_mode = self.selected_application.get("dev_mode") or os.path.isdir(self.q2market_path) or os.path.isfile(".dev")
|
|
505
503
|
# self.dev_mode = False
|
|
506
504
|
|
|
507
505
|
if self.dev_mode:
|
|
@@ -510,6 +508,9 @@ class Q2RadApp(Q2App):
|
|
|
510
508
|
self.add_menu("Dev|Querys", self.run_queries, toolbar=self.dev_mode)
|
|
511
509
|
self.add_menu("Dev|Reports", self.run_reports, toolbar=self.dev_mode)
|
|
512
510
|
self.add_menu("Dev|Packages", self.run_packages, toolbar=self.dev_mode)
|
|
511
|
+
if not self.frozen:
|
|
512
|
+
self.add_menu("Dev|-")
|
|
513
|
+
self.add_menu("Dev|Make binary", self.make_binary)
|
|
513
514
|
self.build_menu()
|
|
514
515
|
# self.show_toolbar(False)
|
|
515
516
|
pass
|
|
@@ -605,48 +606,44 @@ class Q2RadApp(Q2App):
|
|
|
605
606
|
if os.path.isfile("poetry.lock"):
|
|
606
607
|
return
|
|
607
608
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
# create run_q2rad
|
|
621
|
-
self.write_restore_file(
|
|
622
|
-
"run_q2rad",
|
|
623
|
-
("" if "win32" in sys.platform else "#!/bin/bash\n")
|
|
624
|
-
+ (
|
|
625
|
-
"start q2rad\\scripts\\pythonw.exe -m q2rad"
|
|
626
|
-
if "win32" in sys.platform
|
|
627
|
-
else "q2rad/bin/q2rad\n"
|
|
628
|
-
),
|
|
629
|
-
)
|
|
630
|
-
if "win32" in sys.platform:
|
|
631
|
-
open("run_q2rad.vbs", "w").write(
|
|
632
|
-
'WScript.CreateObject("WScript.Shell").Run '
|
|
633
|
-
'"q2rad\\scripts\\pythonw.exe -m q2rad", 0, false'
|
|
609
|
+
if not self.frozen:
|
|
610
|
+
# create update_q2rad.sh
|
|
611
|
+
self.write_restore_file(
|
|
612
|
+
"update_q2rad",
|
|
613
|
+
("" if "win32" in sys.platform else "#!/bin/bash\n")
|
|
614
|
+
+ ("q2rad\\scripts\\activate " if "win32" in sys.platform else "source q2rad/bin/activate")
|
|
615
|
+
+ "&& pip install --upgrade --force-reinstall q2gui"
|
|
616
|
+
+ "&& pip install --upgrade --force-reinstall q2db"
|
|
617
|
+
+ "&& pip install --upgrade --force-reinstall q2report"
|
|
618
|
+
+ "&& pip install --upgrade --force-reinstall q2terminal"
|
|
619
|
+
+ "&& pip install --upgrade --force-reinstall q2rad",
|
|
634
620
|
)
|
|
635
621
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
"
|
|
641
|
-
'oLink.TargetPath = cu & "\\run_q2rad.vbs"\n'
|
|
642
|
-
'oLink.WorkingDirectory = cu & ""\n'
|
|
643
|
-
'oLink.Description = "q2RAD"\n'
|
|
644
|
-
'oLink.IconLocation = cu & "\\assets\\q2rad.ico"\n'
|
|
645
|
-
"oLink.Save\n"
|
|
622
|
+
# create run_q2rad
|
|
623
|
+
self.write_restore_file(
|
|
624
|
+
"run_q2rad",
|
|
625
|
+
("" if "win32" in sys.platform else "#!/bin/bash\n")
|
|
626
|
+
+ ("start q2rad\\scripts\\pythonw.exe -m q2rad" if "win32" in sys.platform else "q2rad/bin/q2rad\n"),
|
|
646
627
|
)
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
628
|
+
if "win32" in sys.platform:
|
|
629
|
+
open("run_q2rad.vbs", "w").write(
|
|
630
|
+
'WScript.CreateObject("WScript.Shell").Run ' '"q2rad\\scripts\\pythonw.exe -m q2rad", 0, false'
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
open("make_shortcut.vbs", "w").write(
|
|
634
|
+
'Set oWS = WScript.CreateObject("WScript.Shell")\n'
|
|
635
|
+
'Set oLink = oWS.CreateShortcut(oWS.SpecialFolders("Desktop") & "\\q2RAD.lnk")\n'
|
|
636
|
+
'cu = WScript.CreateObject("Scripting.FileSystemObject").'
|
|
637
|
+
"GetParentFolderName(WScript.ScriptFullName)\n"
|
|
638
|
+
'oLink.TargetPath = cu & "\\run_q2rad.vbs"\n'
|
|
639
|
+
'oLink.WorkingDirectory = cu & ""\n'
|
|
640
|
+
'oLink.Description = "q2RAD"\n'
|
|
641
|
+
'oLink.IconLocation = cu & "\\assets\\q2rad.ico"\n'
|
|
642
|
+
"oLink.Save\n"
|
|
643
|
+
)
|
|
644
|
+
if sys.platform != "darwin":
|
|
645
|
+
if q2AskYN("Should I make a desktop shortcut?") == 2:
|
|
646
|
+
self.make_desktop_shortcut()
|
|
650
647
|
self.process_events()
|
|
651
648
|
|
|
652
649
|
def get_package_versions(self, package):
|
|
@@ -664,6 +661,8 @@ class Q2RadApp(Q2App):
|
|
|
664
661
|
return latest_version, current_version
|
|
665
662
|
|
|
666
663
|
def update_packages(self, packages_list=q2_modules, force=False):
|
|
664
|
+
if self.frozen:
|
|
665
|
+
return
|
|
667
666
|
upgraded = []
|
|
668
667
|
w = Q2WaitShow(len(packages_list))
|
|
669
668
|
for package in packages_list:
|
|
@@ -682,9 +681,7 @@ class Q2RadApp(Q2App):
|
|
|
682
681
|
|
|
683
682
|
latest_version, new_current_version = self.get_package_versions(package)
|
|
684
683
|
if latest_version:
|
|
685
|
-
upgraded.append(
|
|
686
|
-
f"{package} - " f"<b>{current_version}</b> => " f"<b>{latest_version}</b>"
|
|
687
|
-
)
|
|
684
|
+
upgraded.append(f"{package} - " f"<b>{current_version}</b> => " f"<b>{latest_version}</b>")
|
|
688
685
|
else:
|
|
689
686
|
upgraded.append(f"Error occured while updating package <b>{package}</b>!")
|
|
690
687
|
w.close()
|
|
@@ -697,6 +694,8 @@ class Q2RadApp(Q2App):
|
|
|
697
694
|
self.restart()
|
|
698
695
|
|
|
699
696
|
def update_from_git(self, package="", source="git"):
|
|
697
|
+
if self.frozen:
|
|
698
|
+
return
|
|
700
699
|
if os.path.isfile("poetry.lock"):
|
|
701
700
|
q2mess("poetry.lock presents - update from git is impossible!")
|
|
702
701
|
return
|
|
@@ -719,10 +718,7 @@ class Q2RadApp(Q2App):
|
|
|
719
718
|
continue
|
|
720
719
|
if package and package != package:
|
|
721
720
|
continue
|
|
722
|
-
trm.run(
|
|
723
|
-
f"{executable} -m pip install --upgrade --force-reinstall --no-deps"
|
|
724
|
-
f" {_source_suffix}{package}{_source_postfix}"
|
|
725
|
-
)
|
|
721
|
+
trm.run(f"{executable} -m pip install --upgrade --force-reinstall --no-deps" f" {_source_suffix}{package}{_source_postfix}")
|
|
726
722
|
if trm.exit_code != 0:
|
|
727
723
|
q2mess(f"Error occured while updateing <b>{package}</b>! See output for details.")
|
|
728
724
|
w.close()
|
|
@@ -737,6 +733,8 @@ class Q2RadApp(Q2App):
|
|
|
737
733
|
self.close()
|
|
738
734
|
|
|
739
735
|
def pip_install(self, package, latest_version):
|
|
736
|
+
if self.frozen:
|
|
737
|
+
return
|
|
740
738
|
q2working(
|
|
741
739
|
lambda: subprocess.check_call(
|
|
742
740
|
[
|
|
@@ -754,6 +752,8 @@ class Q2RadApp(Q2App):
|
|
|
754
752
|
)
|
|
755
753
|
|
|
756
754
|
def pip_uninstall(self, package):
|
|
755
|
+
if self.frozen:
|
|
756
|
+
return
|
|
757
757
|
q2working(
|
|
758
758
|
lambda: subprocess.check_call(
|
|
759
759
|
[
|
|
@@ -771,6 +771,8 @@ class Q2RadApp(Q2App):
|
|
|
771
771
|
|
|
772
772
|
def check_app_update(self, force_update=False):
|
|
773
773
|
# self.update_app_packages()
|
|
774
|
+
if self.frozen:
|
|
775
|
+
return
|
|
774
776
|
|
|
775
777
|
if not os.path.isdir(self.q2market_path) and self.app_url and self.app_version or force_update:
|
|
776
778
|
try:
|
|
@@ -797,12 +799,14 @@ class Q2RadApp(Q2App):
|
|
|
797
799
|
self.open_selected_app()
|
|
798
800
|
|
|
799
801
|
def update_app_packages(self):
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
]
|
|
802
|
+
if self.frozen:
|
|
803
|
+
return
|
|
804
|
+
extra_packages = [x["package_name"] for x in q2cursor("select * from packages", self.db_logic).records()]
|
|
803
805
|
self.check_packages_update(extra_packages)
|
|
804
806
|
|
|
805
807
|
def check_packages_update(self, packages_list=q2_modules):
|
|
808
|
+
if self.frozen:
|
|
809
|
+
return
|
|
806
810
|
if len(packages_list) == 0:
|
|
807
811
|
return
|
|
808
812
|
can_upgrade = False
|
|
@@ -898,6 +902,49 @@ class Q2RadApp(Q2App):
|
|
|
898
902
|
def run_packages(self):
|
|
899
903
|
Q2Packages().run()
|
|
900
904
|
|
|
905
|
+
def make_binary(self):
|
|
906
|
+
folder = "make"
|
|
907
|
+
if q2ask("Are you about to start buidlign binary executabele file of Q2RAD!<br>Are You Sure?") != 2:
|
|
908
|
+
return
|
|
909
|
+
|
|
910
|
+
if not os.path.isdir(folder):
|
|
911
|
+
os.mkdir(folder)
|
|
912
|
+
if not os.path.isdir(folder):
|
|
913
|
+
return
|
|
914
|
+
|
|
915
|
+
main = "from q2rad.q2rad import Q2RadApp;app = Q2RadApp();app.run()"
|
|
916
|
+
open(f"{folder}/main.py", "w").write(main)
|
|
917
|
+
|
|
918
|
+
trm = Q2Terminal(callback=print)
|
|
919
|
+
pynstaller_executable = os.path.dirname(sys.executable) + "/pyinstaller"
|
|
920
|
+
|
|
921
|
+
if not os.path.isfile("poetry.lock"):
|
|
922
|
+
trm.run(f"{pynstaller_executable} -v")
|
|
923
|
+
if trm.exit_code != 0:
|
|
924
|
+
pip_executable = os.path.dirname(sys.executable) + "/pip"
|
|
925
|
+
trm.run(f"{pip_executable} install pyinstaller")
|
|
926
|
+
if trm.exit_code != 0:
|
|
927
|
+
q2mess("Pyinstaller not installed!")
|
|
928
|
+
return
|
|
929
|
+
|
|
930
|
+
packages = " ".join(
|
|
931
|
+
[
|
|
932
|
+
f" --collect-all {x['name']}"
|
|
933
|
+
for x in q2cursor("select package_name as name from packages where 'pyinstaller'<>package_name ", self.db_logic).records()
|
|
934
|
+
]
|
|
935
|
+
)
|
|
936
|
+
trm.run(f"cd {folder}")
|
|
937
|
+
w = q2wait()
|
|
938
|
+
# trm.run(f"pyinstaller --onefile --noconsole {packages} main.py")
|
|
939
|
+
trm.run(f"{pynstaller_executable} -y --noconsole {packages} main.py")
|
|
940
|
+
w.close()
|
|
941
|
+
|
|
942
|
+
if trm.exit_code != 0:
|
|
943
|
+
q2mess("Error occured while making binary! See output for details.")
|
|
944
|
+
else:
|
|
945
|
+
q2mess(f"Success! You binary is located in <b>{os.path.abspath(folder)}</b>")
|
|
946
|
+
trm.close()
|
|
947
|
+
|
|
901
948
|
def run_form(self, name, order="", where=""):
|
|
902
949
|
form = q2working(lambda: self.get_form(name, where=where, order=order), "Loading form...")
|
|
903
950
|
form.run()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.166"
|
q2rad-0.1.165/q2rad/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.165"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|