Add a GitHub link. Also improve .spec files (no need to copy
source files). Also distinguish from running binary or script in the displayed version.
This commit is contained in:
@@ -5,6 +5,11 @@ The first release is [3.0.0] because this is actually the third major version (c
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- The software version displayed has now a `.Dev` appended when running from script (_e.g._ 3.1.0.Dev) to differentiate from an actual binary executable. The `.Dev` thus implies that the
|
||||
running version of the software could not correspond to a particular release.
|
||||
- The `*.spec` files files can be executed without copying the source code in
|
||||
their folder.
|
||||
- Add a link to the GitHub repository in the action bar.
|
||||
- Add support for signals with multiple-value acf ([#9](https://github.com/AresValley/Artemis/pull/9)). This breaks the backward compatibility because the database changed structure.
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -12,7 +12,8 @@ In short, ARTEMIS is a signals hunter software and a useful aid for radio listen
|
||||
|
||||
- [Run the software](#Run-the-software)
|
||||
- [Run from binary](#Run-from-binary)
|
||||
- [Run from source code](#Run-from-source-code-OS-independent)
|
||||
- [Run from source code](#Run-from-source-code)
|
||||
- [Compile from source code](#Compile-from-source-code)
|
||||
- [Database](#database)
|
||||
- [Syntax](#syntax)
|
||||
- [Multiple Items fields (Location, Modulation)](#multiple-items-fields-location-modulation)
|
||||
@@ -49,6 +50,9 @@ pip install -r requirements.txt --user
|
||||
python3 artemis.py
|
||||
```
|
||||
|
||||
### Compile from source code
|
||||
If you want to compile Artemis yourself from the source code follow the instructions in the [spec_files/README](spec_files/README.md) file.
|
||||
|
||||
## Database
|
||||
|
||||
The database (db.csv) is directly extracted from sigidwiki.com with a DB parser and reworked to a standard format defined as follow. Artemis DB is a human-readable csv file where the delimiter is the character `*` (Asterisk, Unicode: U+002A). The new entry (separation between signals) is the End Of Line (EOL) escape sequence `\n`. Every signal is directly connected to spectra and audio sample stored in **Spectra** and **Audio** folders, respectively. Every signal is composed of 12 columns:
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
import glob, os
|
||||
|
||||
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
|
||||
data_file.append(('cacert.pem', '.'))
|
||||
SRC_PATH = "../../src/"
|
||||
|
||||
a = Analysis(['artemis.py'],
|
||||
data_file = [
|
||||
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
|
||||
if f.split('/')[-1] != "artemis.py"
|
||||
].append((SRC_PATH + 'cacert.pem', '.'))
|
||||
|
||||
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
|
||||
pathex=[os.getcwd()],
|
||||
binaries=[],
|
||||
datas=data_file,
|
||||
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
pyz = PYZ(a.pure, # noqa: 821
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
exe = EXE(pyz, # noqa: 821
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
import glob, os
|
||||
|
||||
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
|
||||
data_file.append(('cacert.pem', '.'))
|
||||
SRC_PATH = "../../src/"
|
||||
|
||||
a = Analysis(['artemis.py'],
|
||||
data_file = [
|
||||
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
|
||||
if f.split('/')[-1] != "artemis.py"
|
||||
].append((SRC_PATH + 'cacert.pem', '.'))
|
||||
|
||||
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
|
||||
pathex=[os.getcwd()],
|
||||
binaries=[],
|
||||
datas=data_file,
|
||||
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
pyz = PYZ(a.pure, # noqa: 821
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
exe = EXE(pyz, # noqa: 821
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
@@ -31,7 +39,7 @@ exe = EXE(pyz,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False)
|
||||
coll = COLLECT(exe,
|
||||
coll = COLLECT(exe, # noqa: 821
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
## ARTEMIS 3 .SPEC FILES
|
||||
|
||||
Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyinstaller.org/) to build a single standalone executable (or a one-dir package). The extreme versatility of this package is the fact that every external dependency is already embedded into the bundle. The interpreter of Python 3 is also included.
|
||||
Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyinstaller.org/) to build a single standalone executable (or a one-dir package). Every external dependency is already embedded into the bundle. The interpreter of Python 3 is also included.
|
||||
|
||||
## Requirements
|
||||
- Python 3.7.0+
|
||||
@@ -15,37 +15,24 @@ Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyins
|
||||
**IMPORTANT:** *To generate the standalone and the one-dir package, you must use an operating system that coincides with the target one (pyinstaller doesn't allow cross-compilation).*
|
||||
|
||||
## Package Building (standalone aka one-file, high portability, **suggested**)
|
||||
1. Download a fresh copy of the git repository.
|
||||
2. Choose the target OS in `spec_files` folder and copy the whole content (except the Artemis_onedir.spec file) into `src`
|
||||
3. Open a terminal into `src` and run:
|
||||
1. Download/clone the git repository.
|
||||
2. In the `spec_files/<your OS>` folder open a terminal and type
|
||||
```
|
||||
pyinstaller Artemis.spec
|
||||
```
|
||||
4. Copy the `src/themes` folder into `src/dist`.
|
||||
5. The ready-to-use compiled software is now present into `src/dist` folder.
|
||||
3. An Artemis executable should be produced in the `dist/` folder. The `build/` folder
|
||||
can be deleted.
|
||||
|
||||
## Package Building (one-dir, shorter startup time, low portability)
|
||||
1. Download a fresh copy of the git repository.
|
||||
2. Choose the target OS in `spec_files` folder and copy the whole content (except the Artemis.spec file) into `src`
|
||||
3. Open a terminal into `src` and run:
|
||||
1. Download/clone the git repository.
|
||||
2. In the `spec_files/<your OS>` folder open a terminal and type
|
||||
```
|
||||
pyinstaller Artemis_onedir.spec
|
||||
```
|
||||
4. Copy the `src/themes` folder into `src/dist/Artemis`.
|
||||
5. The ready-to-use compiled software is now present into `src/dist` folder as a bundle. All the libraries are clearly present.
|
||||
3. An Artemis executable should be produced in `dist/Artemis/`. The `build/` can
|
||||
be deleted.
|
||||
|
||||
## License
|
||||
This program (ARTEMIS 3, 2014-2019) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses
|
||||
|
||||
## Thanks
|
||||
* **Marco Dalla Tiezza** - *Artemis I-II developer, DB parsing, Website*
|
||||
* [**Alessandro Ceccato**](https://github.com/alessandro90 "GitHub profile") - *Artemis III lead developer*
|
||||
* **Paolo Romani (IZ1MLL)** - *Lead β Tester, RF specialist*
|
||||
* **Carl Colena** - *Sigidwiki admin, β Tester, Signals expert*
|
||||
* **Marco Bortoli** - *macOS deployment, β Tester*
|
||||
* **Pierpaolo Pravatto** - *Wiki page, β Tester*
|
||||
* **Francesco Capostagno, Luca, Pietro** - *β Tester*
|
||||
You can save a copy of the executable in a folder of you choice. At startup it will ask you to download
|
||||
the database and also warn you that the `themes` folder is missing. To avoid this,
|
||||
copy `src/Data` and `src/themes` in the folder containing the executable.
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
import glob,os
|
||||
|
||||
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
|
||||
data_file.append(('cacert.pem', '.'))
|
||||
SRC_PATH = "../../src/"
|
||||
|
||||
a = Analysis(['artemis.py'],
|
||||
data_file = [
|
||||
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
|
||||
if f.split('/')[-1] != "artemis.py"
|
||||
].append((SRC_PATH + 'cacert.pem', '.'))
|
||||
|
||||
a = Analysis(SRC_PATH + ['artemis.py'], # noqa: 821
|
||||
pathex=[os.getcwd()],
|
||||
binaries=[],
|
||||
datas=data_file,
|
||||
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
pyz = PYZ(a.pure, # noqa: 821
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
exe = EXE(pyz, # noqa: 821
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
@@ -30,8 +38,9 @@ exe = EXE(pyz,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False , icon='Artemis3.ico')
|
||||
coll = COLLECT(exe,
|
||||
console=False,
|
||||
icon='Artemis3.ico')
|
||||
coll = COLLECT(exe, # noqa: 821
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
import glob,os
|
||||
|
||||
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
|
||||
data_file.append(('cacert.pem', '.'))
|
||||
SRC_PATH = "../../src/"
|
||||
|
||||
a = Analysis(['artemis.py'],
|
||||
data_file = [
|
||||
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
|
||||
if f.split('/')[-1] != "artemis.py"
|
||||
].append((SRC_PATH + 'cacert.pem', '.'))
|
||||
|
||||
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
|
||||
pathex=[os.getcwd()],
|
||||
binaries=[],
|
||||
datas=data_file,
|
||||
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
pyz = PYZ(a.pure, # noqa: 821
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
exe = EXE(pyz, # noqa: 821
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
@@ -33,4 +41,5 @@ exe = EXE(pyz,
|
||||
strip=False,
|
||||
upx=True,
|
||||
runtime_tmpdir=None,
|
||||
console=False , icon='Artemis3.ico')
|
||||
console=False,
|
||||
icon='Artemis3.ico')
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
|
||||
block_cipher = None
|
||||
import glob, os
|
||||
|
||||
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
|
||||
data_file.append(('themes','./themes'))
|
||||
data_file.append(('cacert.pem', '.'))
|
||||
|
||||
a = Analysis(['artemis.py'],
|
||||
SRC_PATH = "../../src/"
|
||||
|
||||
data_file = [
|
||||
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
|
||||
if f.split('/')[-1] != "artemis.py"
|
||||
].extend(((SRC_PATH + 'cacert.pem', '.'), ('themes', './themes')))
|
||||
|
||||
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
|
||||
pathex=[os.getcwd()],
|
||||
binaries=[],
|
||||
datas=data_file,
|
||||
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
pyz = PYZ(a.pure, # noqa: 821
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
exe = EXE(pyz, # noqa: 821
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
@@ -30,15 +38,15 @@ exe = EXE(pyz,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False )
|
||||
coll = COLLECT(exe,
|
||||
console=False)
|
||||
coll = COLLECT(exe, # noqa: 821
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=True,
|
||||
name='Artemis')
|
||||
app = BUNDLE(coll,
|
||||
app = BUNDLE(coll, # noqa: 821
|
||||
name='Artemis.app',
|
||||
icon='Artemis3.icns',
|
||||
bundle_identifier=None)
|
||||
|
||||
@@ -43,7 +43,14 @@ from utilities import (checksum_ok,
|
||||
|
||||
# import default_imgs_rc
|
||||
|
||||
__VERSION__ = "3.0.1"
|
||||
__LATEST_VERSION__ = "3.0.1"
|
||||
|
||||
if hasattr(sys, '_MEIPASS'):
|
||||
__VERSION__ = __LATEST_VERSION__
|
||||
else:
|
||||
__VERSION__ = __LATEST_VERSION__ + ".Dev"
|
||||
|
||||
|
||||
qt_creator_file = resource_path("artemis.ui")
|
||||
Ui_MainWindow, _ = uic.loadUiType(qt_creator_file)
|
||||
|
||||
@@ -78,6 +85,9 @@ class Artemis(QMainWindow, Ui_MainWindow):
|
||||
self.action_rtl_sdr_com.triggered.connect(
|
||||
lambda: webbrowser.open(Constants.RTL_SDL_LINK)
|
||||
)
|
||||
self.action_github.triggered.connect(
|
||||
lambda: webbrowser.open(Constants.GITHUB_REPO)
|
||||
)
|
||||
self.db = None
|
||||
self.current_signal_name = ''
|
||||
self.signal_names = []
|
||||
|
||||
@@ -9520,6 +9520,7 @@ QSlider::handle:horizontal {
|
||||
<addaction name="action_aresvalley_com"/>
|
||||
<addaction name="action_forum"/>
|
||||
<addaction name="action_rtl_sdr_com"/>
|
||||
<addaction name="action_github"/>
|
||||
</widget>
|
||||
<addaction name="menuFile"/>
|
||||
<addaction name="menuUpdates"/>
|
||||
@@ -9572,6 +9573,11 @@ QSlider::handle:horizontal {
|
||||
<string>RTL-SDR.com</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_github">
|
||||
<property name="text">
|
||||
<string>GitHub</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
||||
@@ -114,6 +114,7 @@ class Constants:
|
||||
ADD_SIGNAL_LINK = "https://www.sigidwiki.com/index.php/Special:FormEdit/Signal/?preload=Signal_Identification_Wiki:Signal_form_preload_text"
|
||||
FORUM_LINK = "https://aresvalley.com/community/"
|
||||
ARESVALLEY_LINK = "https://aresvalley.com/"
|
||||
GITHUB_REPO = "https://github.com/AresValley/Artemis"
|
||||
RTL_SDL_LINK = "https://www.rtl-sdr.com/"
|
||||
UPDATING_STR = "Updating..."
|
||||
ACF_DOCS = "https://aresvalley.com/documentation/"
|
||||
|
||||
@@ -60,19 +60,3 @@ This folder contains a third option to run Artemis 3 on your pc. The method of i
|
||||
> ### MacOS:
|
||||
>
|
||||
> 1. To Be Completed...
|
||||
|
||||
## License
|
||||
This program (ARTEMIS 3, 2014-2019) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses
|
||||
|
||||
## Thanks
|
||||
* **Marco Dalla Tiezza** - *Artemis I-II developer, DB parsing, Website*
|
||||
* [**Alessandro Ceccato**](https://github.com/alessandro90 "GitHub profile") - *Artemis III lead developer*
|
||||
* **Paolo Romani (IZ1MLL)** - *Lead β Tester, RF specialist*
|
||||
* **Carl Colena** - *Sigidwiki admin, β Tester, Signals expert*
|
||||
* **Marco Bortoli** - *macOS deployment, β Tester*
|
||||
* **Pierpaolo Pravatto** - *Wiki page, β Tester*
|
||||
* **Francesco Capostagno, Luca, Pietro** - *β Tester*
|
||||
|
||||
Reference in New Issue
Block a user