diff --git a/ECD.py b/ECD.py deleted file mode 100644 index 15f09c4..0000000 --- a/ECD.py +++ /dev/null @@ -1,16 +0,0 @@ -import os -import sys -sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'libs')) -# os.environ['PROJ_LIB'] = os.path.join(os.path.dirname(__file__), 'share/proj') -# os.environ['GDAL_DATA'] = os.path.join(os.path.dirname(__file__), 'share') -os.environ['ECD_BASEDIR'] = os.path.dirname(__file__) -BASE_DIR = os.path.dirname(__file__) -from rscder import MulStart -import logging - -logging.basicConfig(level=logging.INFO, filename=os.path.join(BASE_DIR, 'log.txt'), filemode='a', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') - -if __name__ == '__main__': - - t = MulStart() - t.run() \ No newline at end of file diff --git a/__init__.py b/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/innosetup.iss b/innosetup.iss deleted file mode 100644 index 4382a4d..0000000 --- a/innosetup.iss +++ /dev/null @@ -1,48 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Easy Change Detection" -#define MyAppVersion "0.2.0" -#define MyAppPublisher "西安理工大学-ImgSciGroup" -#define MyAppURL "https://jsj.xaut.edu.cn/info/1052/2455.htm" -#define MyAppExeName "ECD.exe" - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{78EB8520-9F1F-4396-909F-69DA29AEE98F} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={autopf}\{#MyAppName} -DisableProgramGroupPage=yes -; Uncomment the following line to run in non administrative install mode (install for current user only.) -;PrivilegesRequired=lowest -OutputBaseFilename=ECDInstaller -SetupIconFile=D:\CVEO\2021-12-22-CDGUI\rscder\logo.ico -Compression=lzma -SolidCompression=yes -WizardStyle=modern - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "D:\CVEO\2021-12-22-CDGUI\rscder\package\dist-0.2.0\program\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "D:\CVEO\2021-12-22-CDGUI\rscder\package\dist-0.2.0\program\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent - diff --git a/keygen.py b/keygen.py deleted file mode 100644 index 56f9565..0000000 --- a/keygen.py +++ /dev/null @@ -1,16 +0,0 @@ -import os - -os.environ['PROJ_LIB'] = os.path.join(os.path.dirname(__file__), 'share/proj') -os.environ['GDAL_DATA'] = os.path.join(os.path.dirname(__file__), 'share') -os.environ['ECD_BASEDIR'] = os.path.dirname(__file__) -BASE_DIR = os.path.dirname(__file__) - -from rscder.gui.keygen import LicenseGen -from PyQt5.QtWidgets import QApplication -import sys - -if __name__ == "__main__": - app =QApplication(sys.argv) - license = LicenseGen() - license.show() - sys.exit(app.exec_()) \ No newline at end of file diff --git a/logs/2023_03_25_11_00_10_log.txt b/logs/2023_03_25_11_00_10_log.txt new file mode 100644 index 0000000..4549556 --- /dev/null +++ b/logs/2023_03_25_11_00_10_log.txt @@ -0,0 +1,5 @@ +2023-03-25 11:00:10,230 - root - INFO - lic data:2033-01-01 00:00:00 +2023-03-25 11:00:10,230 - root - INFO - remain_days: 3569 +2023-03-25 11:00:11,182 - root - INFO - lic data:2033-01-01 00:00:00 +2023-03-25 11:00:11,182 - root - INFO - remain_days: 3569 +2023-03-25 11:00:30,172 - root - INFO - nothing diff --git a/logs/2023_03_25_11_02_32_log.txt b/logs/2023_03_25_11_02_32_log.txt new file mode 100644 index 0000000..5184a37 --- /dev/null +++ b/logs/2023_03_25_11_02_32_log.txt @@ -0,0 +1,4 @@ +2023-03-25 11:02:32,812 - root - INFO - lic data:2033-01-01 00:00:00 +2023-03-25 11:02:32,812 - root - INFO - remain_days: 3569 +2023-03-25 11:02:33,761 - root - INFO - lic data:2033-01-01 00:00:00 +2023-03-25 11:02:33,761 - root - INFO - remain_days: 3569 diff --git a/plugins/misc/__init__.py b/plugins/misc/__init__.py index e208f54..30c59f7 100644 --- a/plugins/misc/__init__.py +++ b/plugins/misc/__init__.py @@ -1,3 +1,3 @@ -from misc.main import * -from misc.utils import * -from misc.table_layer import * \ No newline at end of file +from .main import * +from .utils import * +from .table_layer import * \ No newline at end of file diff --git a/plugins/misc/table_layer.py b/plugins/misc/table_layer.py index 0ffc5e6..a8fbf9a 100644 --- a/plugins/misc/table_layer.py +++ b/plugins/misc/table_layer.py @@ -5,7 +5,7 @@ from osgeo import gdal from rscder.utils.project import Project import os from rscder.utils.project import BasicLayer, ResultPointLayer -from misc.utils import format_now +from .utils import format_now def table_layer(pth:str,layer:BasicLayer, name, cdpath=None, th=0, method_info:dict=dict(), send_message = None): diff --git a/rscder/ECD.py b/rscder/ECD.py new file mode 100644 index 0000000..8be20dc --- /dev/null +++ b/rscder/ECD.py @@ -0,0 +1,22 @@ +import os +import sys +# sys.path.insert(0, os.path.join('..', os.path.dirname(__file__), 'libs')) +# os.environ['PROJ_LIB'] = os.path.join(os.path.dirname(__file__), 'share/proj') +# os.environ['GDAL_DATA'] = os.path.join(os.path.dirname(__file__), 'share') +os.environ['ECD_BASEDIR'] = os.path.join( os.path.dirname(__file__), '..') +BASE_DIR = os.path.join( os.path.dirname(__file__), '..') + +from .mul.mulstart import MulStart +import logging +from plugins.misc import format_now + +logging.basicConfig(level=logging.INFO, filename=os.path.join(BASE_DIR, 'logs', format_now() + '_log.txt'), filemode='a', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') + + +def main(): + t = MulStart() + t.run() + +if __name__ == '__main__': + + main() \ No newline at end of file diff --git a/rscder/__init__.py b/rscder/__init__.py index c34d767..e69de29 100644 --- a/rscder/__init__.py +++ b/rscder/__init__.py @@ -1 +0,0 @@ -from .mul.mulstart import MulStart \ No newline at end of file diff --git a/rscder/keygen.py b/rscder/keygen.py new file mode 100644 index 0000000..7a227e8 --- /dev/null +++ b/rscder/keygen.py @@ -0,0 +1,19 @@ +import os + +# os.environ['PROJ_LIB'] = os.path.join(os.path.dirname(__file__), 'share/proj') +# os.environ['GDAL_DATA'] = os.path.join(os.path.dirname(__file__), 'share') +os.environ['ECD_BASEDIR'] = os.path.join( os.path.dirname(__file__), '..') +BASE_DIR = os.path.join( os.path.dirname(__file__), '..') + +from rscder.gui.keygen import LicenseGen +from PyQt5.QtWidgets import QApplication +import sys + +def main(): + app =QApplication(sys.argv) + license = LicenseGen() + license.show() + sys.exit(app.exec_()) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/rscder/utils/icons.py b/rscder/utils/icons.py index da7e36a..6b380e0 100644 --- a/rscder/utils/icons.py +++ b/rscder/utils/icons.py @@ -1,7 +1,7 @@ from PyQt5.QtGui import QIcon from PyQt5.QtCore import QObject from .misc import singleton - +import os @singleton class IconInstance(QObject): @@ -9,57 +9,55 @@ class IconInstance(QObject): def __init__(self, parent) -> None: super().__init__(parent) - self.GRID_ON = QIcon('./icons/鏍肩綉寮.png') - self.AI_DETECT = QIcon('./icons/AI鍙樺寲妫娴.png') - self.EVALUATION = QIcon('./icons/绮惧害璇勪及.png') - self.SPLASH = QIcon('./icons/splash.png') - self.HELP = QIcon('./icons/甯姪.png') - self.LOGO = QIcon('./icons/鍙樺寲妫娴.png') - self.CHANGE = QIcon('./icons/鍙樺寲妫娴.png') - self.OK = QIcon('./icons/ok.svg') - self.CANCEL = QIcon('./icons/cancel.svg') - self.PLUGINS = QIcon('./icons/鎻掍欢閰嶇疆.png') - self.CREATE = QIcon('./icons/鍒涘缓宸ョ▼.png') - self.OPEN = QIcon('./icons/鎵撳紑宸ョ▼.png') - self.SAVE = QIcon('./icons/宸ョ▼淇濆瓨.png') - self.TOOLS = QIcon('./icons/宸ュ叿.png') - self.TOOLBOX = QIcon('./icons/宸ュ叿绠.png') - self.LOCATION = QIcon('./icons/瀹氫綅.png') - self.UNSUPERVISED = QIcon('./icons/闈炵洃鐫.png') - self.ROAD_CHANGE = QIcon('./icons/閬撹矾鍙樺寲.png') - self.LANDSIDE = QIcon('./icons/娴峰哺鍙樺寲.png') - self.SUPERVISED = QIcon('./icons/鐩戠潱.png') - self.VIEW_SETTING = QIcon('./icons/瑙嗗浘璁剧疆.png') - self.FILTER = QIcon('./icons/婊ゆ尝.png') - self.PAN = QIcon('./icons/骞崇Щ.png') - self.CLOUD_REMOVE = QIcon('./icons/鍘讳簯.png') - self.WEAK_SUPERVISED = QIcon('./icons/寮辩洃鐫.png') - self.DELETE = QIcon('./icons/鍒犻櫎.png') - self.VECTOR = QIcon('./icons/鐭㈤噺.png') - self.WATER_CHANGE = QIcon('./icons/姘翠綋鍙樺寲.png') - self.ZOOM_TO = QIcon('./icons/缂╂斁鍒.png') + self.GRID_ON = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏍肩綉寮.png')) + self.AI_DETECT = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/AI鍙樺寲妫娴.png')) + self.EVALUATION = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/绮惧害璇勪及.png')) + self.SPLASH = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/splash.png')) + self.HELP = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/甯姪.png')) + self.LOGO = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍙樺寲妫娴.png')) + self.CHANGE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍙樺寲妫娴.png')) + self.OK = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/ok.svg')) + self.CANCEL = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/cancel.svg')) + self.PLUGINS = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鎻掍欢閰嶇疆.png')) + self.CREATE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍒涘缓宸ョ▼.png')) + self.OPEN = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鎵撳紑宸ョ▼.png')) + self.SAVE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/宸ョ▼淇濆瓨.png')) + self.TOOLS = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/宸ュ叿.png')) + self.TOOLBOX = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/宸ュ叿绠.png')) + self.LOCATION = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/瀹氫綅.png')) + self.UNSUPERVISED = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/闈炵洃鐫.png')) + self.ROAD_CHANGE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/閬撹矾鍙樺寲.png')) + self.LANDSIDE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/娴峰哺鍙樺寲.png')) + self.SUPERVISED = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鐩戠潱.png')) + self.VIEW_SETTING = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/瑙嗗浘璁剧疆.png')) + self.FILTER = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/婊ゆ尝.png')) + self.PAN = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/骞崇Щ.png')) + self.CLOUD_REMOVE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍘讳簯.png')) + self.WEAK_SUPERVISED = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/寮辩洃鐫.png')) + self.DELETE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍒犻櫎.png')) + self.VECTOR = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鐭㈤噺.png')) + self.WATER_CHANGE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/姘翠綋鍙樺寲.png')) + self.ZOOM_TO = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/缂╂斁鍒.png')) - self.LAYER = QIcon('./icons/鍥惧眰.png') - self.GRID_OFF = QIcon('./icons/鏍肩綉鍏抽棴.png') - self.DOCUMENT = QIcon('./icons/鏂囨。.png') - self.FILE = QIcon('./icons/鏂囦欢.png') - self.SELECT = QIcon('./icons/閫夋嫨瑕佺礌.png') - self.RASTER = QIcon('./icons/褰卞儚.png') - self.VEGETATION = QIcon('./icons/妞嶈鍙樺寲.png') - self.NOISE = QIcon('./icons/鍣0澶勭悊.png') - self.ARITHMETIC1 = QIcon('./icons/Algorithm_icon/鍔熻兘-01.png') - self.ARITHMETIC2 = QIcon('./icons/Algorithm_icon/鍔熻兘-02.png') - self.ARITHMETIC3 = QIcon('./icons/Algorithm_icon/鍔熻兘-03.png') + self.LAYER = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍥惧眰.png')) + self.GRID_OFF = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏍肩綉鍏抽棴.png')) + self.DOCUMENT = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏂囨。.png')) + self.FILE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏂囦欢.png')) + self.SELECT = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/閫夋嫨瑕佺礌.png')) + self.RASTER = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/褰卞儚.png')) + self.VEGETATION = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/妞嶈鍙樺寲.png')) + self.NOISE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鍣0澶勭悊.png')) + self.ARITHMETIC1 = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/Algorithm_icon/鍔熻兘-01.png')) + self.ARITHMETIC2 = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/Algorithm_icon/鍔熻兘-02.png')) + self.ARITHMETIC3 = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/Algorithm_icon/鍔熻兘-03.png')) # self.ARITHMETIC3.QSize() - self.DATA_LOAD = QIcon('./icons/鏁版嵁鍔犺浇.png') + self.DATA_LOAD = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏁版嵁鍔犺浇.png')) + self.EXCIT = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/閫鍑.png')) + self.ZOOM_IN = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/鏀惧ぇ.png')) + self.ZOOM_OUT = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/缂╁皬.png')) - self.EXCIT = QIcon('./icons/閫鍑.png') - - self.ZOOM_IN = QIcon('./icons/鏀惧ぇ.png') - self.ZOOM_OUT = QIcon('./icons/缂╁皬.png') - - self.TABLE = QIcon('./icons/table.png') + self.TABLE = QIcon(os.path.join(os.environ['ECD_BASEDIR'] , './icons/table.png')) def __getattr__(self, name: str) -> QIcon: try: diff --git a/setup.py b/setup.py index c2612aa..dab23c7 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,18 @@ -from distutils.core import setup -import shutil -from Cython.Build import cythonize -import sys -import os +from setuptools import setup, find_packages -for plugin in os.listdir('plugins'): - if os.path.isdir(os.path.join('plugins', plugin)): - setup( - name = plugin, - ext_modules = cythonize(os.path.join('plugins', plugin, '*.py'), exclude=[ f'plugins/{plugin}/__init__.py']), - script_args = ['build_ext', '-b', 'plugin-build'], - ) - shutil.copy(os.path.join('plugins', plugin, '__init__.py'), os.path.join('plugin-build', plugin, '__init__.py')) - \ No newline at end of file +setup( + name='rscder', + version='1.0', + author='Wang Tong', + author_email='copper.w@foxmail.com', + description='RSCDER', + long_description=open('ReadMe.md', 'r'), + packages=find_packages(), + ext_package=[], + entry_points=dict( + console_scripts=[ + 'rscder = rscder.ECD:main', + 'keygen = rscder.keygen:main' + ] + ) +) \ No newline at end of file diff --git a/setup_plugins.py b/setup_plugins.py new file mode 100644 index 0000000..fa4ddf6 --- /dev/null +++ b/setup_plugins.py @@ -0,0 +1,15 @@ +from distutils.core import setup +import shutil +from Cython.Build import cythonize +import sys +import os + +for plugin in os.listdir('plugins'): + if os.path.isdir(os.path.join('plugins', plugin)): + setup( + name = plugin, + ext_modules = cythonize(os.path.join('plugins', plugin, '*.py'), exclude=[ f'plugins/{plugin}/__init__.py']), + script_args = ['build_ext', '-b', 'plugin-build'], + ) + shutil.copy(os.path.join('plugins', plugin, '__init__.py'), os.path.join('plugin-build', plugin, '__init__.py')) + \ No newline at end of file diff --git a/test-data/AAA.tif.ovr b/test-data/AAA.tif.ovr index 2fc0fa2..5aaab0e 100644 Binary files a/test-data/AAA.tif.ovr and b/test-data/AAA.tif.ovr differ diff --git a/test-data/BBB.tif.ovr b/test-data/BBB.tif.ovr index eb7f4fc..8ff043a 100644 Binary files a/test-data/BBB.tif.ovr and b/test-data/BBB.tif.ovr differ