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:
Alessandro
2019-09-07 21:37:26 +02:00
parent 1509e04c93
commit 44747464da
12 changed files with 125 additions and 86 deletions

View File

@@ -5,6 +5,11 @@ The first release is [3.0.0] because this is actually the third major version (c
## [Unreleased] ## [Unreleased]
### Added ### 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. - 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 ### Fixed

View File

@@ -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 the software](#Run-the-software)
- [Run from binary](#Run-from-binary) - [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) - [Database](#database)
- [Syntax](#syntax) - [Syntax](#syntax)
- [Multiple Items fields (Location, Modulation)](#multiple-items-fields-location-modulation) - [Multiple Items fields (Location, Modulation)](#multiple-items-fields-location-modulation)
@@ -49,6 +50,9 @@ pip install -r requirements.txt --user
python3 artemis.py 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 ## 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: 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:

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*- # -*- mode: python -*-
import glob
import os
block_cipher = None block_cipher = None
import glob, os
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] SRC_PATH = "../../src/"
data_file.append(('cacert.pem', '.'))
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()], pathex=[os.getcwd()],
binaries=[], binaries=[],
datas=data_file, datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False, win_private_assemblies=False,
cipher=block_cipher, cipher=block_cipher,
noarchive=False) noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, pyz = PYZ(a.pure, # noqa: 821
cipher=block_cipher) a.zipped_data,
exe = EXE(pyz, cipher=block_cipher)
exe = EXE(pyz, # noqa: 821
a.scripts, a.scripts,
a.binaries, a.binaries,
a.zipfiles, a.zipfiles,

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*- # -*- mode: python -*-
import glob
import os
block_cipher = None block_cipher = None
import glob, os
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] SRC_PATH = "../../src/"
data_file.append(('cacert.pem', '.'))
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()], pathex=[os.getcwd()],
binaries=[], binaries=[],
datas=data_file, datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False, win_private_assemblies=False,
cipher=block_cipher, cipher=block_cipher,
noarchive=False) noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, pyz = PYZ(a.pure, # noqa: 821
cipher=block_cipher) a.zipped_data,
exe = EXE(pyz, cipher=block_cipher)
exe = EXE(pyz, # noqa: 821
a.scripts, a.scripts,
[], [],
exclude_binaries=True, exclude_binaries=True,
@@ -31,7 +39,7 @@ exe = EXE(pyz,
strip=False, strip=False,
upx=True, upx=True,
console=False) console=False)
coll = COLLECT(exe, coll = COLLECT(exe, # noqa: 821
a.binaries, a.binaries,
a.zipfiles, a.zipfiles,
a.datas, a.datas,

View File

@@ -6,7 +6,7 @@
## ARTEMIS 3 .SPEC FILES ## 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 ## Requirements
- Python 3.7.0+ - 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).* **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**) ## Package Building (standalone aka one-file, high portability, **suggested**)
1. Download a fresh copy of the git repository. 1. Download/clone 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` 2. In the `spec_files/<your OS>` folder open a terminal and type
3. Open a terminal into `src` and run:
``` ```
pyinstaller Artemis.spec pyinstaller Artemis.spec
``` ```
4. Copy the `src/themes` folder into `src/dist`. 3. An Artemis executable should be produced in the `dist/` folder. The `build/` folder
5. The ready-to-use compiled software is now present into `src/dist` folder. can be deleted.
## Package Building (one-dir, shorter startup time, low portability) ## Package Building (one-dir, shorter startup time, low portability)
1. Download a fresh copy of the git repository. 1. Download/clone the git repository.
2. Choose the target OS in `spec_files` folder and copy the whole content (except the Artemis.spec file) into `src` 2. In the `spec_files/<your OS>` folder open a terminal and type
3. Open a terminal into `src` and run:
``` ```
pyinstaller Artemis_onedir.spec pyinstaller Artemis_onedir.spec
``` ```
4. Copy the `src/themes` folder into `src/dist/Artemis`. 3. An Artemis executable should be produced in `dist/Artemis/`. The `build/` can
5. The ready-to-use compiled software is now present into `src/dist` folder as a bundle. All the libraries are clearly present. 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 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,
You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses copy `src/Data` and `src/themes` in the folder containing the executable.
## 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*

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*- # -*- mode: python -*-
import glob
import os
block_cipher = None block_cipher = None
import glob,os
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] SRC_PATH = "../../src/"
data_file.append(('cacert.pem', '.'))
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()], pathex=[os.getcwd()],
binaries=[], binaries=[],
datas=data_file, datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False, win_private_assemblies=False,
cipher=block_cipher, cipher=block_cipher,
noarchive=False) noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, pyz = PYZ(a.pure, # noqa: 821
cipher=block_cipher) a.zipped_data,
exe = EXE(pyz, cipher=block_cipher)
exe = EXE(pyz, # noqa: 821
a.scripts, a.scripts,
[], [],
exclude_binaries=True, exclude_binaries=True,
@@ -30,8 +38,9 @@ exe = EXE(pyz,
bootloader_ignore_signals=False, bootloader_ignore_signals=False,
strip=False, strip=False,
upx=True, upx=True,
console=False , icon='Artemis3.ico') console=False,
coll = COLLECT(exe, icon='Artemis3.ico')
coll = COLLECT(exe, # noqa: 821
a.binaries, a.binaries,
a.zipfiles, a.zipfiles,
a.datas, a.datas,

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*- # -*- mode: python -*-
import glob
import os
block_cipher = None block_cipher = None
import glob,os
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] SRC_PATH = "../../src/"
data_file.append(('cacert.pem', '.'))
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()], pathex=[os.getcwd()],
binaries=[], binaries=[],
datas=data_file, datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False, win_private_assemblies=False,
cipher=block_cipher, cipher=block_cipher,
noarchive=False) noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, pyz = PYZ(a.pure, # noqa: 821
cipher=block_cipher) a.zipped_data,
exe = EXE(pyz, cipher=block_cipher)
exe = EXE(pyz, # noqa: 821
a.scripts, a.scripts,
a.binaries, a.binaries,
a.zipfiles, a.zipfiles,
@@ -33,4 +41,5 @@ exe = EXE(pyz,
strip=False, strip=False,
upx=True, upx=True,
runtime_tmpdir=None, runtime_tmpdir=None,
console=False , icon='Artemis3.ico') console=False,
icon='Artemis3.ico')

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*- # -*- mode: python -*-
import glob
import os
block_cipher = None 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()], pathex=[os.getcwd()],
binaries=[], binaries=[],
datas=data_file, datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False, win_private_assemblies=False,
cipher=block_cipher, cipher=block_cipher,
noarchive=False) noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, pyz = PYZ(a.pure, # noqa: 821
cipher=block_cipher) a.zipped_data,
exe = EXE(pyz, cipher=block_cipher)
exe = EXE(pyz, # noqa: 821
a.scripts, a.scripts,
[], [],
exclude_binaries=True, exclude_binaries=True,
@@ -30,15 +38,15 @@ exe = EXE(pyz,
bootloader_ignore_signals=False, bootloader_ignore_signals=False,
strip=False, strip=False,
upx=True, upx=True,
console=False ) console=False)
coll = COLLECT(exe, coll = COLLECT(exe, # noqa: 821
a.binaries, a.binaries,
a.zipfiles, a.zipfiles,
a.datas, a.datas,
strip=False, strip=False,
upx=True, upx=True,
name='Artemis') name='Artemis')
app = BUNDLE(coll, app = BUNDLE(coll, # noqa: 821
name='Artemis.app', name='Artemis.app',
icon='Artemis3.icns', icon='Artemis3.icns',
bundle_identifier=None) bundle_identifier=None)

View File

@@ -43,7 +43,14 @@ from utilities import (checksum_ok,
# import default_imgs_rc # 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") qt_creator_file = resource_path("artemis.ui")
Ui_MainWindow, _ = uic.loadUiType(qt_creator_file) Ui_MainWindow, _ = uic.loadUiType(qt_creator_file)
@@ -78,6 +85,9 @@ class Artemis(QMainWindow, Ui_MainWindow):
self.action_rtl_sdr_com.triggered.connect( self.action_rtl_sdr_com.triggered.connect(
lambda: webbrowser.open(Constants.RTL_SDL_LINK) lambda: webbrowser.open(Constants.RTL_SDL_LINK)
) )
self.action_github.triggered.connect(
lambda: webbrowser.open(Constants.GITHUB_REPO)
)
self.db = None self.db = None
self.current_signal_name = '' self.current_signal_name = ''
self.signal_names = [] self.signal_names = []

View File

@@ -9520,6 +9520,7 @@ QSlider::handle:horizontal {
<addaction name="action_aresvalley_com"/> <addaction name="action_aresvalley_com"/>
<addaction name="action_forum"/> <addaction name="action_forum"/>
<addaction name="action_rtl_sdr_com"/> <addaction name="action_rtl_sdr_com"/>
<addaction name="action_github"/>
</widget> </widget>
<addaction name="menuFile"/> <addaction name="menuFile"/>
<addaction name="menuUpdates"/> <addaction name="menuUpdates"/>
@@ -9572,6 +9573,11 @@ QSlider::handle:horizontal {
<string>RTL-SDR.com</string> <string>RTL-SDR.com</string>
</property> </property>
</action> </action>
<action name="action_github">
<property name="text">
<string>GitHub</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@@ -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" 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/" FORUM_LINK = "https://aresvalley.com/community/"
ARESVALLEY_LINK = "https://aresvalley.com/" ARESVALLEY_LINK = "https://aresvalley.com/"
GITHUB_REPO = "https://github.com/AresValley/Artemis"
RTL_SDL_LINK = "https://www.rtl-sdr.com/" RTL_SDL_LINK = "https://www.rtl-sdr.com/"
UPDATING_STR = "Updating..." UPDATING_STR = "Updating..."
ACF_DOCS = "https://aresvalley.com/documentation/" ACF_DOCS = "https://aresvalley.com/documentation/"

View File

@@ -60,19 +60,3 @@ This folder contains a third option to run Artemis 3 on your pc. The method of i
> ### MacOS: > ### MacOS:
> >
> 1. To Be Completed... > 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*