Compare commits
103 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 10310d18cf | |||
| a74d8c9f6b | |||
| c54dfbbcda | |||
| afbcf35d1c | |||
| 300ba49e8d | |||
| dae1118bf3 | |||
| ecc537475a | |||
| caef6ad1cd | |||
| ffbfb3b133 | |||
| f979e3c4a7 | |||
| 2d7ff1367e | |||
| a829516a33 | |||
| 86d47c83b4 | |||
| 735acb000e | |||
| 62042cfa33 | |||
| 873929b3f6 | |||
| e52a62e689 | |||
| bafaf8a5ae | |||
| f4ed9a9eac | |||
| 71bf19b21c | |||
| 1181e68f27 | |||
| 0722bdad52 | |||
| 92c88f6c0a | |||
| 67a5f49ba2 | |||
| d715b1d534 | |||
| 23e378f977 | |||
| f27d664f61 | |||
| 16c665d199 | |||
| 0b11b1b1d3 | |||
| e699d2e081 | |||
| 9f25842c79 | |||
| fddca6522e | |||
| df0b06ccb7 | |||
| e9aa4203b5 | |||
| 418e071a8d | |||
| 4ca8ac338e | |||
| acbd1080d5 | |||
| ae62a73b58 | |||
| 95cd09c7f2 | |||
| 0b49dc0398 | |||
| 4b28f9eca5 | |||
| 5a18b3f9fb | |||
| 8b9042e2d6 | |||
| 826b829941 | |||
| a36ed10fe2 | |||
| 8d0d93d10e | |||
| ca537f5e9f | |||
| e0c3592868 | |||
| 3a9750015d | |||
| 38ddf11479 | |||
| 15ee95360f | |||
| 308a45efe0 | |||
| ad060dad81 | |||
| 35139c6d84 | |||
| 942d960a90 | |||
| b4c95e4313 | |||
| 293781079a | |||
| 003120d998 | |||
| 57f84c8e2b | |||
| 231c75715a | |||
| 0a1a08a1a5 | |||
| 775008be48 | |||
| b0937ffe18 | |||
| ea9cc62329 | |||
| f6c59d33bd | |||
| 6725df3d26 | |||
| dfdf23315b | |||
| 3a139fc87a | |||
| 04e3dc9c3e | |||
| ca66c6401c | |||
| 1ca079041f | |||
| e922df7635 | |||
| f30cf20400 | |||
| d4155ff348 | |||
| 75fded07d3 | |||
| 61cddd5ba4 | |||
| 24e9b15e42 | |||
| 9bbaba3f72 | |||
| 8c8218bdd8 | |||
| b8c3b4ce91 | |||
| bf7d057d6e | |||
| c4db1a9a00 | |||
| ecfbbe5219 | |||
| 2620435e92 | |||
| 0886dc1995 | |||
| 9a3d7dd992 | |||
| 6224c9cf75 | |||
| a5e1d0206b | |||
| c5531a5177 | |||
| 536f017fd4 | |||
| 5c313af3ab | |||
| 046fe83193 | |||
| e861308d70 | |||
| 6dcf4b96d2 | |||
| f00f5e23c1 | |||
| 2e8cde4193 | |||
| 7caa7c83b8 | |||
| 08d8beed64 | |||
| e5347eb4b6 | |||
| 64022c18b6 | |||
| 42c8d1c0bb | |||
| 6ab3d32e3b | |||
| 2b62734437 |
@@ -2,10 +2,9 @@
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include "Radio.hpp"
|
||||
#include "varicode.h"
|
||||
|
||||
|
||||
const int PACKET_TIMEOUT_SECONDS = 300;
|
||||
|
||||
APRSISClient::APRSISClient(QString host, quint16 port, QObject *parent):
|
||||
QTcpSocket(parent),
|
||||
@@ -13,7 +12,7 @@ APRSISClient::APRSISClient(QString host, quint16 port, QObject *parent):
|
||||
m_port(port)
|
||||
{
|
||||
connect(&m_timer, &QTimer::timeout, this, &APRSISClient::sendReports);
|
||||
m_timer.setInterval(60*1000); // every minute
|
||||
m_timer.setInterval(60*1000); // every 60 seconds
|
||||
m_timer.start();
|
||||
}
|
||||
|
||||
@@ -184,32 +183,24 @@ QPair<QString, QString> APRSISClient::grid2aprs(QString grid){
|
||||
};
|
||||
}
|
||||
|
||||
void APRSISClient::enqueueSpot(QString theircall, QString grid, quint64 frequency, int snr){
|
||||
void APRSISClient::enqueueSpot(QString theircall, QString grid, QString comment){
|
||||
if(m_localCall.isEmpty()) return;
|
||||
|
||||
auto geo = APRSISClient::grid2aprs(grid);
|
||||
auto spotFrame = QString("%1>%2,APRS,TCPIP*:=%3/%4nFT8CALL %5 %6MHz %7dB\n");
|
||||
auto spotFrame = QString("%1>%2,APRS,TCPIP*:=%3/%4nFT8CALL %5\n");
|
||||
spotFrame = spotFrame.arg(theircall);
|
||||
spotFrame = spotFrame.arg(m_localCall);
|
||||
spotFrame = spotFrame.arg(geo.first);
|
||||
spotFrame = spotFrame.arg(geo.second);
|
||||
spotFrame = spotFrame.arg(m_localGrid.left(4));
|
||||
spotFrame = spotFrame.arg(Radio::frequency_MHz_string(frequency));
|
||||
spotFrame = spotFrame.arg(Varicode::formatSNR(snr));
|
||||
spotFrame = spotFrame.arg(comment.left(43));
|
||||
enqueueRaw(spotFrame);
|
||||
}
|
||||
|
||||
void APRSISClient::enqueueMessage(QString tocall, QString message){
|
||||
if(m_localCall.isEmpty()) return;
|
||||
|
||||
auto messageFrame = QString("%1>APRS,TCPIP*::%2:%3\n");
|
||||
messageFrame = messageFrame.arg(m_localCall);
|
||||
messageFrame = messageFrame.arg(tocall + QString(" ").repeated(9-tocall.length()));
|
||||
messageFrame = messageFrame.arg(message);
|
||||
enqueueRaw(messageFrame);
|
||||
}
|
||||
|
||||
void APRSISClient::enqueueThirdParty(QString theircall, QString payload){
|
||||
if(!isPasscodeValid()){
|
||||
return;
|
||||
}
|
||||
|
||||
auto frame = QString("%1>%2,APRS,TCPIP*:%3\n");
|
||||
frame = frame.arg(theircall);
|
||||
frame = frame.arg(m_localCall);
|
||||
@@ -218,12 +209,16 @@ void APRSISClient::enqueueThirdParty(QString theircall, QString payload){
|
||||
}
|
||||
|
||||
void APRSISClient::enqueueRaw(QString aprsFrame){
|
||||
m_frameQueue.enqueue(aprsFrame);
|
||||
m_frameQueue.enqueue({ aprsFrame, QDateTime::currentDateTimeUtc() });
|
||||
}
|
||||
|
||||
void APRSISClient::processQueue(bool disconnect){
|
||||
// don't process queue if we haven't set our local callsign
|
||||
if(m_localCall.isEmpty()) return;
|
||||
|
||||
// don't process queue if there's nothing to process
|
||||
if(m_frameQueue.isEmpty()) return;
|
||||
|
||||
// 1. connect (and read)
|
||||
// 2. login (and read)
|
||||
// 3. for each raw frame in queue, send
|
||||
@@ -237,19 +232,74 @@ void APRSISClient::processQueue(bool disconnect){
|
||||
}
|
||||
}
|
||||
|
||||
auto re = QRegExp("(full|unavailable|busy)");
|
||||
auto line = QString(readLine());
|
||||
if(line.toLower().indexOf(re) >= 0){
|
||||
qDebug() << "APRSISClient Connection Busy:" << line;
|
||||
return;
|
||||
}
|
||||
|
||||
if(write(loginFrame(m_localCall).toLocal8Bit()) == -1){
|
||||
qDebug() << "APRSISClient Write Login Error:" << errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!waitForReadyRead(5000)){
|
||||
qDebug() << "APRSISClient Login Error: Server Not Responding";
|
||||
return;
|
||||
}
|
||||
|
||||
line = QString(readAll());
|
||||
if(line.toLower().indexOf(re) >= 0){
|
||||
qDebug() << "APRSISClient Server Busy:" << line;
|
||||
return;
|
||||
}
|
||||
|
||||
QQueue<QPair<QString, QDateTime>> delayed;
|
||||
|
||||
while(!m_frameQueue.isEmpty()){
|
||||
if(write(m_frameQueue.head().toLocal8Bit()) == -1){
|
||||
auto pair = m_frameQueue.head();
|
||||
auto frame = pair.first;
|
||||
auto timestamp = pair.second;
|
||||
|
||||
// if the packet is older than the timeout, drop it.
|
||||
if(timestamp.secsTo(QDateTime::currentDateTimeUtc()) > PACKET_TIMEOUT_SECONDS){
|
||||
qDebug() << "APRSISClient Packet Timeout:" << frame;
|
||||
m_frameQueue.dequeue();
|
||||
continue;
|
||||
}
|
||||
|
||||
// random delay 25% of the time for throttling (a skip will add 60 seconds to the processing time)
|
||||
if(qrand() % 100 <= 25){
|
||||
qDebug() << "APRSISClient Throttle: Skipping Frame";
|
||||
delayed.enqueue(m_frameQueue.dequeue());
|
||||
continue;
|
||||
}
|
||||
|
||||
QByteArray data = frame.toLocal8Bit();
|
||||
if(write(data) == -1){
|
||||
qDebug() << "APRSISClient Write Error:" << errorString();
|
||||
return;
|
||||
}
|
||||
|
||||
auto frame = m_frameQueue.dequeue();
|
||||
qDebug() << "APRISISClient Write:" << frame;
|
||||
qDebug() << "APRSISClient Write:" << data;
|
||||
if(waitForReadyRead(5000)){
|
||||
line = QString(readLine());
|
||||
|
||||
qDebug() << "APRSISClient Read:" << line;
|
||||
|
||||
if(line.toLower().indexOf(re) >= 0){
|
||||
qDebug() << "APRSISClient Cannot Write Error:" << line;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_frameQueue.dequeue();
|
||||
}
|
||||
|
||||
// enqueue the delayed frames for later processing
|
||||
while(!delayed.isEmpty()){
|
||||
m_frameQueue.enqueue(delayed.dequeue());
|
||||
}
|
||||
|
||||
if(disconnect){
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef APRSISCLIENT_H
|
||||
#define APRSISCLIENT_H
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QDateTime>
|
||||
#include <QTcpSocket>
|
||||
#include <QQueue>
|
||||
#include <QPair>
|
||||
@@ -16,29 +18,50 @@ public:
|
||||
static QPair<float, float> grid2deg(QString grid);
|
||||
static QPair<QString, QString> grid2aprs(QString grid);
|
||||
|
||||
void setLocalStation(QString mycall, QString mygrid){
|
||||
m_localCall = mycall;
|
||||
m_localGrid = mygrid;
|
||||
void setServer(QString host, quint16 port){
|
||||
if(state() == QTcpSocket::ConnectedState){
|
||||
disconnectFromHost();
|
||||
}
|
||||
|
||||
m_host = host;
|
||||
m_port = port;
|
||||
}
|
||||
|
||||
void enqueueSpot(QString theircall, QString grid, quint64 frequency, int snr);
|
||||
void enqueueMessage(QString tocall, QString message);
|
||||
void setPaused(bool paused){
|
||||
m_paused = paused;
|
||||
}
|
||||
|
||||
void setLocalStation(QString mycall, QString mygrid, QString passcode){
|
||||
m_localCall = mycall;
|
||||
m_localGrid = mygrid;
|
||||
m_localPasscode = passcode;
|
||||
}
|
||||
|
||||
bool isPasscodeValid(){ return m_localPasscode == QString::number(hashCallsign(m_localCall)); }
|
||||
|
||||
void enqueueSpot(QString theircall, QString grid, QString comment);
|
||||
void enqueueThirdParty(QString theircall, QString payload);
|
||||
void enqueueRaw(QString aprsFrame);
|
||||
|
||||
void processQueue(bool disconnect=false);
|
||||
void processQueue(bool disconnect=true);
|
||||
|
||||
public slots:
|
||||
void sendReports(){ processQueue(true); }
|
||||
void sendReports(){
|
||||
if(m_paused) return;
|
||||
|
||||
processQueue(true);
|
||||
}
|
||||
|
||||
private:
|
||||
QString m_localCall;
|
||||
QString m_localGrid;
|
||||
QString m_localPasscode;
|
||||
|
||||
QQueue<QString> m_frameQueue;
|
||||
QQueue<QPair<QString, QDateTime>> m_frameQueue;
|
||||
QString m_host;
|
||||
quint16 m_port;
|
||||
QTimer m_timer;
|
||||
bool m_paused;
|
||||
};
|
||||
|
||||
#endif // APRSISCLIENT_H
|
||||
|
||||
@@ -24,12 +24,22 @@ if (CPACK_GENERATOR MATCHES "NSIS")
|
||||
set (CPACK_SET_DESTDIR FALSE)
|
||||
set (CPACK_STRIP_FILES FALSE) # breaks Qt packaging on Windows
|
||||
|
||||
set (CPACK_NSIS_INSTALL_ROOT "C:\\FT8Call")
|
||||
# set (CPACK_NSIS_INSTALL_ROOT "C:\\FT8Call")
|
||||
|
||||
if(CMAKE_CL_64)
|
||||
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
|
||||
set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} (Win64)")
|
||||
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} (Win64)")
|
||||
else()
|
||||
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
|
||||
set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
||||
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
|
||||
endif()
|
||||
|
||||
# set the install/unistall icon used for the installer itself
|
||||
# There is a bug in NSI that does not handle full unix paths properly.
|
||||
set (CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\wsjtx.ico")
|
||||
set (CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\wsjtx.ico")
|
||||
set (CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\ft8call.ico")
|
||||
set (CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\ft8call.ico")
|
||||
# set the package header icon for MUI
|
||||
set (CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR@/icons/windows-icons\\installer_logo.bmp")
|
||||
# tell cpack to create links to the doc files
|
||||
@@ -57,11 +67,12 @@ endif ()
|
||||
if ("${CPACK_GENERATOR}" STREQUAL "DragNDrop")
|
||||
set (CPACK_DMG_VOLUME_NAME "@PROJECT_NAME@")
|
||||
set (CPACK_DMG_BACKGROUND_IMAGE "@PROJECT_SOURCE_DIR@/icons/Darwin/DragNDrop Background.png")
|
||||
set (CPACK_DMG_DS_STORE "@PROJECT_SOURCE_DIR@/Darwin/wsjtx_DMG.DS_Store")
|
||||
set (CPACK_DMG_DS_STORE "@PROJECT_SOURCE_DIR@/Darwin/ft8call_DMG.DS_Store")
|
||||
set (CPACK_BUNDLE_NAME "@WSJTX_BUNDLE_NAME@")
|
||||
set (CPACK_PACKAGE_ICON "@PROJECT_BINARY_DIR@/wsjtx.icns")
|
||||
set (CPACK_BUNDLE_ICON "@PROJECT_BINARY_DIR@/wsjtx.icns")
|
||||
set (CPACK_BUNDLE_STARTUP_COMMAND "@PROJECT_SOURCE_DIR@/Mac-wsjtx-startup.sh")
|
||||
set (CPACK_PACKAGE_ICON "@PROJECT_BINARY_DIR@/ft8call.icns")
|
||||
set (CPACK_BUNDLE_ICON "@PROJECT_BINARY_DIR@/ft8call.icns")
|
||||
set (CPACK_BUNDLE_STARTUP_COMMAND "@PROJECT_SOURCE_DIR@/Mac-ft8call-startup.sh")
|
||||
set (CPACK_PACKAGING_INSTALL_PREFIX "/")
|
||||
endif ()
|
||||
|
||||
if ("${CPACK_GENERATOR}" STREQUAL "WIX")
|
||||
|
||||
@@ -305,6 +305,8 @@ set (wsjtx_CXXSRCS
|
||||
WsprTxScheduler.cpp
|
||||
varicode.cpp
|
||||
SelfDestructMessageBox.cpp
|
||||
messagereplydialog.cpp
|
||||
keyeater.cpp
|
||||
APRSISClient.cpp
|
||||
mainwindow.cpp
|
||||
Configuration.cpp
|
||||
@@ -668,6 +670,7 @@ set (wsjtx_UISRCS
|
||||
widegraph.ui
|
||||
logqso.ui
|
||||
Configuration.ui
|
||||
messagereplydialog.ui
|
||||
)
|
||||
|
||||
set (UDP_library_CXXSRCS
|
||||
@@ -721,7 +724,7 @@ set (TOP_LEVEL_RESOURCES
|
||||
mouse_commands.txt
|
||||
prefixes.txt
|
||||
cty.dat
|
||||
icons/Darwin/wsjtx.iconset/icon_128x128.png
|
||||
icons/Darwin/FT8Call.iconset/icon_128x128.png
|
||||
contrib/gpl-v3-logo.svg
|
||||
artwork/splash.png
|
||||
)
|
||||
@@ -821,6 +824,7 @@ endif (WIN32)
|
||||
#
|
||||
if (APPLE)
|
||||
set (WSJTX_BUNDLE_VERSION ${wsjtx_VERSION})
|
||||
set (CMAKE_INSTALL_PREFIX "/")
|
||||
|
||||
# make sure CMAKE_INSTALL_PREFIX ends in /
|
||||
string (LENGTH "${CMAKE_INSTALL_PREFIX}" LEN)
|
||||
@@ -1399,6 +1403,7 @@ if (UNIX)
|
||||
endif (NOT APPLE)
|
||||
endif (UNIX)
|
||||
|
||||
|
||||
#
|
||||
# installation
|
||||
#
|
||||
@@ -1479,7 +1484,6 @@ if (APPLE)
|
||||
)
|
||||
endif (APPLE)
|
||||
|
||||
|
||||
#
|
||||
# uninstall support
|
||||
#
|
||||
@@ -1517,18 +1521,25 @@ configure_file (
|
||||
|
||||
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
# install a desktop file so wsjtx appears in the application start
|
||||
# install a desktop file so ft8call appears in the application start
|
||||
# menu with an icon
|
||||
install (
|
||||
FILES ft8call.desktop message_aggregator.desktop
|
||||
DESTINATION share/applications
|
||||
FILES ft8call.desktop
|
||||
DESTINATION /usr/share/applications
|
||||
#COMPONENT runtime
|
||||
)
|
||||
install (
|
||||
FILES icons/Unix/wsjtx_icon.png
|
||||
DESTINATION share/pixmaps
|
||||
FILES icons/Unix/ft8call_icon.png
|
||||
DESTINATION /usr/share/pixmaps
|
||||
#COMPONENT runtime
|
||||
)
|
||||
|
||||
execute_process(COMMAND ln -s /opt/ft8call/bin/ft8call lft8call)
|
||||
|
||||
install(FILES
|
||||
${CMAKE_BINARY_DIR}/lft8call DESTINATION /usr/bin/ RENAME ft8call
|
||||
#COMPONENT runtime
|
||||
)
|
||||
endif (NOT WIN32 AND NOT APPLE)
|
||||
|
||||
|
||||
|
||||
@@ -156,6 +156,7 @@
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QStandardPaths>
|
||||
#include <QSound>
|
||||
#include <QFont>
|
||||
#include <QFontDialog>
|
||||
#include <QColorDialog>
|
||||
@@ -433,7 +434,7 @@ private:
|
||||
void insert_station ();
|
||||
|
||||
Q_SLOT void on_font_push_button_clicked ();
|
||||
Q_SLOT void on_decoded_text_font_push_button_clicked ();
|
||||
Q_SLOT void on_tableFontButton_clicked();
|
||||
Q_SLOT void on_PTT_port_combo_box_activated (int);
|
||||
Q_SLOT void on_CAT_port_combo_box_activated (int);
|
||||
Q_SLOT void on_CAT_serial_baud_combo_box_currentIndexChanged (int);
|
||||
@@ -454,21 +455,37 @@ private:
|
||||
Q_SLOT void on_PTT_method_button_group_buttonClicked (int);
|
||||
Q_SLOT void on_station_message_line_edit_textChanged(QString const&);
|
||||
Q_SLOT void on_qth_message_line_edit_textChanged(QString const&);
|
||||
Q_SLOT void on_cq_message_line_edit_textChanged(QString const&);
|
||||
Q_SLOT void on_reply_message_line_edit_textChanged(QString const&);
|
||||
Q_SLOT void on_add_macro_line_edit_editingFinished ();
|
||||
Q_SLOT void delete_macro ();
|
||||
void delete_selected_macros (QModelIndexList);
|
||||
Q_SLOT void on_save_path_select_push_button_clicked (bool);
|
||||
Q_SLOT void on_azel_path_select_push_button_clicked (bool);
|
||||
Q_SLOT void on_sound_dm_path_select_push_button_clicked();
|
||||
Q_SLOT void on_sound_dm_path_test_push_button_clicked();
|
||||
Q_SLOT void on_sound_dm_path_reset_push_button_clicked();
|
||||
Q_SLOT void on_sound_am_path_select_push_button_clicked();
|
||||
Q_SLOT void on_sound_am_path_test_push_button_clicked();
|
||||
Q_SLOT void on_sound_am_path_reset_push_button_clicked();
|
||||
Q_SLOT void on_calibration_intercept_spin_box_valueChanged (double);
|
||||
Q_SLOT void on_calibration_slope_ppm_spin_box_valueChanged (double);
|
||||
Q_SLOT void handle_transceiver_update (TransceiverState const&, unsigned sequence_number);
|
||||
Q_SLOT void handle_transceiver_failure (QString const& reason);
|
||||
Q_SLOT void on_pbCQmsg_clicked();
|
||||
Q_SLOT void on_pbMyCall_clicked();
|
||||
Q_SLOT void on_pbTxMsg_clicked();
|
||||
Q_SLOT void on_pbNewDXCC_clicked();
|
||||
Q_SLOT void on_pbNewCall_clicked();
|
||||
Q_SLOT void on_tableBackgroundButton_clicked();
|
||||
Q_SLOT void on_tableSelectedRowBackgroundButton_clicked();
|
||||
Q_SLOT void on_tableForegroundButton_clicked();
|
||||
Q_SLOT void on_rxBackgroundButton_clicked();
|
||||
Q_SLOT void on_rxForegroundButton_clicked();
|
||||
Q_SLOT void on_rxFontButton_clicked();
|
||||
Q_SLOT void on_composeBackgroundButton_clicked();
|
||||
Q_SLOT void on_composeForegroundButton_clicked();
|
||||
Q_SLOT void on_composeFontButton_clicked();
|
||||
Q_SLOT void on_txForegroundButton_clicked();
|
||||
Q_SLOT void on_txFontButton_clicked();
|
||||
|
||||
Q_SLOT void on_cbFox_clicked (bool);
|
||||
Q_SLOT void on_cbHound_clicked (bool);
|
||||
Q_SLOT void on_cbx2ToneSpacing_clicked(bool);
|
||||
@@ -499,11 +516,23 @@ private:
|
||||
QDir default_azel_directory_;
|
||||
QDir azel_directory_;
|
||||
|
||||
QString sound_dm_path_; // directed message sound file
|
||||
QString sound_am_path_; // alert message sound file
|
||||
|
||||
QFont font_;
|
||||
QFont next_font_;
|
||||
|
||||
QFont decoded_text_font_;
|
||||
QFont next_decoded_text_font_;
|
||||
QFont table_font_;
|
||||
QFont next_table_font_;
|
||||
|
||||
QFont rx_text_font_;
|
||||
QFont next_rx_text_font_;
|
||||
|
||||
QFont tx_text_font_;
|
||||
QFont next_tx_text_font_;
|
||||
|
||||
QFont compose_text_font_;
|
||||
QFont next_compose_text_font_;
|
||||
|
||||
bool restart_sound_input_device_;
|
||||
bool restart_sound_output_device_;
|
||||
@@ -555,17 +584,33 @@ private:
|
||||
QString my_callsign_;
|
||||
QString my_grid_;
|
||||
QString my_station_;
|
||||
int my_dBm_;
|
||||
QString my_qth_;
|
||||
QString cq_;
|
||||
QString reply_;
|
||||
int callsign_aging_;
|
||||
int activity_aging_;
|
||||
QColor color_CQ_;
|
||||
QColor next_color_CQ_;
|
||||
QColor color_MyCall_;
|
||||
QColor next_color_MyCall_;
|
||||
QColor color_ReceivedMsg_;
|
||||
QColor next_color_ReceivedMsg_;
|
||||
QColor color_cq_;
|
||||
QColor next_color_cq_;
|
||||
QColor color_mycall_;
|
||||
QColor next_color_mycall_;
|
||||
|
||||
QColor color_table_background_;
|
||||
QColor next_color_table_background_;
|
||||
QColor color_table_highlight_;
|
||||
QColor next_color_table_highlight_;
|
||||
QColor color_table_foreground_;
|
||||
QColor next_color_table_foreground_;
|
||||
|
||||
QColor color_rx_background_;
|
||||
QColor next_color_rx_background_;
|
||||
QColor color_rx_foreground_;
|
||||
QColor next_color_rx_foreground_;
|
||||
QColor color_compose_background_;
|
||||
QColor next_color_compose_background_;
|
||||
QColor color_compose_foreground_;
|
||||
QColor next_color_compose_foreground_;
|
||||
QColor color_tx_foreground_;
|
||||
QColor next_color_tx_foreground_;
|
||||
QColor color_DXCC_;
|
||||
QColor next_color_DXCC_;
|
||||
QColor color_NewCall_;
|
||||
@@ -577,10 +622,11 @@ private:
|
||||
double degrade_;
|
||||
double txDelay_;
|
||||
bool id_after_73_;
|
||||
bool tx_QSY_allowed_;
|
||||
bool tx_qsy_allowed_;
|
||||
bool spot_to_reporting_networks_;
|
||||
bool transmit_directed_;
|
||||
bool autoreply_off_at_startup_;
|
||||
bool relay_disabled_;
|
||||
bool monitor_off_at_startup_;
|
||||
bool monitor_last_used_;
|
||||
bool log_as_DATA_;
|
||||
@@ -606,6 +652,11 @@ private:
|
||||
bool x4ToneSpacing_;
|
||||
bool use_dynamic_info_;
|
||||
QString opCall_;
|
||||
|
||||
QString aprs_server_name_;
|
||||
QString aprs_passcode_;
|
||||
port_type aprs_server_port_;
|
||||
|
||||
QString udp_server_name_;
|
||||
port_type udp_server_port_;
|
||||
// QString n1mm_server_name () const;
|
||||
@@ -665,13 +716,23 @@ bool Configuration::restart_audio_output () const {return m_->restart_sound_outp
|
||||
auto Configuration::type_2_msg_gen () const -> Type2MsgGen {return m_->type_2_msg_gen_;}
|
||||
bool Configuration::use_dynamic_grid() const {return m_->use_dynamic_info_; }
|
||||
QString Configuration::my_callsign () const {return m_->my_callsign_;}
|
||||
QColor Configuration::color_CQ () const {return m_->color_CQ_;}
|
||||
QColor Configuration::color_MyCall () const {return m_->color_MyCall_;}
|
||||
QColor Configuration::color_ReceivedMsg () const {return m_->color_ReceivedMsg_;}
|
||||
QColor Configuration::color_table_background() const { return m_->color_table_background_; }
|
||||
QColor Configuration::color_table_highlight() const { return m_->color_table_highlight_; }
|
||||
QColor Configuration::color_table_foreground() const { return m_->color_table_foreground_; }
|
||||
QColor Configuration::color_CQ () const {return m_->color_cq_;}
|
||||
QColor Configuration::color_MyCall () const {return m_->color_mycall_;}
|
||||
QColor Configuration::color_rx_background () const {return m_->color_rx_background_;}
|
||||
QColor Configuration::color_rx_foreground () const {return m_->color_rx_foreground_;}
|
||||
QColor Configuration::color_tx_foreground () const {return m_->color_tx_foreground_;}
|
||||
QColor Configuration::color_compose_background () const {return m_->color_compose_background_;}
|
||||
QColor Configuration::color_compose_foreground () const {return m_->color_compose_foreground_;}
|
||||
QColor Configuration::color_DXCC () const {return m_->color_DXCC_;}
|
||||
QColor Configuration::color_NewCall () const {return m_->color_NewCall_;}
|
||||
QFont Configuration::table_font () const {return m_->table_font_;}
|
||||
QFont Configuration::text_font () const {return m_->font_;}
|
||||
QFont Configuration::decoded_text_font () const {return m_->decoded_text_font_;}
|
||||
QFont Configuration::rx_text_font () const {return m_->rx_text_font_;}
|
||||
QFont Configuration::tx_text_font () const {return m_->tx_text_font_;}
|
||||
QFont Configuration::compose_text_font () const {return m_->compose_text_font_;}
|
||||
qint32 Configuration::id_interval () const {return m_->id_interval_;}
|
||||
qint32 Configuration::ntrials() const {return m_->ntrials_;}
|
||||
qint32 Configuration::aggressive() const {return m_->aggressive_;}
|
||||
@@ -679,7 +740,7 @@ double Configuration::degrade() const {return m_->degrade_;}
|
||||
double Configuration::txDelay() const {return m_->txDelay_;}
|
||||
qint32 Configuration::RxBandwidth() const {return m_->RxBandwidth_;}
|
||||
bool Configuration::id_after_73 () const {return m_->id_after_73_;}
|
||||
bool Configuration::tx_QSY_allowed () const {return m_->tx_QSY_allowed_;}
|
||||
bool Configuration::tx_qsy_allowed () const {return m_->tx_qsy_allowed_;}
|
||||
bool Configuration::spot_to_reporting_networks () const
|
||||
{
|
||||
// rig must be open and working to spot externally
|
||||
@@ -695,6 +756,7 @@ void Configuration::set_spot_to_reporting_networks (bool spot)
|
||||
|
||||
bool Configuration::transmit_directed() const { return m_->transmit_directed_; }
|
||||
bool Configuration::autoreply_off_at_startup () const {return m_->autoreply_off_at_startup_;}
|
||||
bool Configuration::relay_off() const { return m_->relay_disabled_; }
|
||||
bool Configuration::monitor_off_at_startup () const {return m_->monitor_off_at_startup_;}
|
||||
bool Configuration::monitor_last_used () const {return m_->rig_is_dummy_ || m_->monitor_last_used_;}
|
||||
bool Configuration::log_as_DATA () const {return m_->log_as_DATA_;}
|
||||
@@ -720,6 +782,9 @@ bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
|
||||
bool Configuration::x4ToneSpacing() const {return m_->x4ToneSpacing_;}
|
||||
bool Configuration::split_mode () const {return m_->split_mode ();}
|
||||
QString Configuration::opCall() const {return m_->opCall_;}
|
||||
QString Configuration::aprs_server_name () const {return m_->aprs_server_name_;}
|
||||
auto Configuration::aprs_server_port () const -> port_type {return m_->aprs_server_port_;}
|
||||
QString Configuration::aprs_passcode() const { return m_->aprs_passcode_; }
|
||||
QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
|
||||
auto Configuration::udp_server_port () const -> port_type {return m_->udp_server_port_;}
|
||||
bool Configuration::accept_udp_requests () const {return m_->accept_udp_requests_;}
|
||||
@@ -741,6 +806,8 @@ QStringListModel * Configuration::macros () {return &m_->macros_;}
|
||||
QStringListModel const * Configuration::macros () const {return &m_->macros_;}
|
||||
QDir Configuration::save_directory () const {return m_->save_directory_;}
|
||||
QDir Configuration::azel_directory () const {return m_->azel_directory_;}
|
||||
QString Configuration::sound_dm_path() const {return m_->sound_dm_path_;}
|
||||
QString Configuration::sound_am_path() const {return m_->sound_am_path_;}
|
||||
QString Configuration::rig_name () const {return m_->rig_params_.rig_name;}
|
||||
bool Configuration::pwrBandTxMemory () const {return m_->pwrBandTxMemory_;}
|
||||
bool Configuration::pwrBandTuneMemory () const {return m_->pwrBandTuneMemory_;}
|
||||
@@ -865,16 +932,17 @@ QString Configuration::my_station() const
|
||||
return station;
|
||||
}
|
||||
|
||||
int Configuration::my_dBm() const {
|
||||
return m_->my_dBm_;
|
||||
}
|
||||
|
||||
QString Configuration::my_qth() const
|
||||
{
|
||||
return m_->my_qth_;
|
||||
}
|
||||
|
||||
QString Configuration::reply() const
|
||||
QString Configuration::cq_message() const
|
||||
{
|
||||
return m_->cq_;
|
||||
}
|
||||
|
||||
QString Configuration::reply_message() const
|
||||
{
|
||||
return m_->reply_;
|
||||
}
|
||||
@@ -1040,6 +1108,7 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory,
|
||||
ui_->station_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this});
|
||||
ui_->qth_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this});
|
||||
ui_->reply_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this});
|
||||
ui_->cq_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this});
|
||||
|
||||
ui_->udp_server_port_spin_box->setMinimum (1);
|
||||
ui_->udp_server_port_spin_box->setMaximum (std::numeric_limits<port_type>::max ());
|
||||
@@ -1221,40 +1290,6 @@ void Configuration::impl::initialize_models ()
|
||||
pal.setColor (QPalette::Base, Qt::white);
|
||||
}
|
||||
|
||||
QMap<int, int> dbm2mw = {
|
||||
{0 , 1},
|
||||
{3 , 2},
|
||||
{7 , 5},
|
||||
{10 , 10},
|
||||
{13 , 20},
|
||||
{17 , 50},
|
||||
{20 , 100},
|
||||
{23 , 200},
|
||||
{27 , 500},
|
||||
{30 , 1000}, // 1W
|
||||
{33 , 2000}, // 2W
|
||||
{37 , 5000}, // 5W
|
||||
{40 , 10000}, // 10W
|
||||
{43 , 20000}, // 20W
|
||||
{47 , 50000}, // 50W
|
||||
{50 , 100000}, // 100W
|
||||
{53 , 200000}, // 200W
|
||||
{57 , 500000}, // 500W
|
||||
{60 , 1000000}, // 1000W
|
||||
};
|
||||
|
||||
ui_->station_power_combo_box->clear();
|
||||
ui_->station_power_combo_box->addItem(QString(""), -1);
|
||||
|
||||
foreach(auto dbm, dbm2mw.keys()){
|
||||
ui_->station_power_combo_box->addItem(QString("%1 (%2 dBm)").arg(Varicode::formatPWR(dbm)).arg(dbm), dbm);
|
||||
|
||||
if(dbm == my_dBm_){
|
||||
ui_->station_power_combo_box->setCurrentIndex(ui_->station_power_combo_box->count()-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ui_->callsign_line_edit->setPalette (pal);
|
||||
ui_->grid_line_edit->setPalette (pal);
|
||||
ui_->auto_switch_bands_check_box->setChecked(auto_switch_bands_);
|
||||
@@ -1264,13 +1299,20 @@ void Configuration::impl::initialize_models ()
|
||||
ui_->activity_aging_spin_box->setValue(activity_aging_);
|
||||
ui_->station_message_line_edit->setText (my_station_.toUpper());
|
||||
ui_->qth_message_line_edit->setText (my_qth_.toUpper());
|
||||
ui_->cq_message_line_edit->setText(cq_.toUpper());
|
||||
ui_->reply_message_line_edit->setText (reply_.toUpper());
|
||||
ui_->use_dynamic_grid->setChecked(use_dynamic_info_);
|
||||
ui_->labCQ->setStyleSheet(QString("background: %1").arg(color_CQ_.name()));
|
||||
ui_->labMyCall->setStyleSheet(QString("background: %1").arg(color_MyCall_.name()));
|
||||
ui_->labTx->setStyleSheet(QString("background: %1").arg(color_ReceivedMsg_.name()));
|
||||
ui_->labDXCC->setStyleSheet(QString("background: %1").arg(color_DXCC_.name()));
|
||||
ui_->labNewCall->setStyleSheet(QString("background: %1").arg(color_NewCall_.name()));
|
||||
|
||||
ui_->tableBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_background_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->tableSelectionBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_highlight_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->labCQ->setStyleSheet(QString("background: %1; color: %2").arg(next_color_cq_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->labMyCall->setStyleSheet(QString("background: %1; color: %2").arg(next_color_mycall_.name()).arg(next_color_table_foreground_.name()));
|
||||
|
||||
ui_->rxLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_rx_foreground_.name()));
|
||||
ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_rx_foreground_.name()));
|
||||
ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_tx_foreground_.name()));
|
||||
ui_->composeLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_compose_background_.name()).arg(color_compose_foreground_.name()));
|
||||
|
||||
ui_->CW_id_interval_spin_box->setValue (id_interval_);
|
||||
ui_->sbNtrials->setValue (ntrials_);
|
||||
ui_->sbTxDelay->setValue (txDelay_);
|
||||
@@ -1280,11 +1322,14 @@ void Configuration::impl::initialize_models ()
|
||||
ui_->PTT_method_button_group->button (rig_params_.ptt_type)->setChecked (true);
|
||||
ui_->save_path_display_label->setText (save_directory_.absolutePath ());
|
||||
ui_->azel_path_display_label->setText (azel_directory_.absolutePath ());
|
||||
ui_->sound_dm_path_display_label->setText(sound_dm_path_);
|
||||
ui_->sound_am_path_display_label->setText(sound_am_path_);
|
||||
ui_->CW_id_after_73_check_box->setChecked (id_after_73_);
|
||||
ui_->tx_QSY_check_box->setChecked (tx_QSY_allowed_);
|
||||
ui_->tx_qsy_check_box->setChecked (tx_qsy_allowed_);
|
||||
ui_->psk_reporter_check_box->setChecked (spot_to_reporting_networks_);
|
||||
ui_->transmit_directed_check_box->setChecked(transmit_directed_);
|
||||
ui_->autoreply_off_check_box->setChecked (autoreply_off_at_startup_);
|
||||
ui_->relay_disabled_check_box->setChecked(relay_disabled_);
|
||||
ui_->monitor_off_check_box->setChecked (monitor_off_at_startup_);
|
||||
ui_->monitor_last_used_check_box->setChecked (monitor_last_used_);
|
||||
ui_->log_as_RTTY_check_box->setChecked (log_as_DATA_);
|
||||
@@ -1338,6 +1383,9 @@ void Configuration::impl::initialize_models ()
|
||||
ui_->TX_audio_source_button_group->button (rig_params_.audio_source)->setChecked (true);
|
||||
ui_->CAT_poll_interval_spin_box->setValue (rig_params_.poll_interval);
|
||||
ui_->opCallEntry->setText (opCall_);
|
||||
ui_->aprs_server_line_edit->setText (aprs_server_name_);
|
||||
ui_->aprs_server_port_spin_box->setValue (aprs_server_port_);
|
||||
ui_->aprs_passcode_line_edit->setText(aprs_passcode_);
|
||||
ui_->udp_server_line_edit->setText (udp_server_name_);
|
||||
ui_->udp_server_port_spin_box->setValue (udp_server_port_);
|
||||
ui_->accept_udp_requests_check_box->setChecked (accept_udp_requests_);
|
||||
@@ -1390,38 +1438,87 @@ void Configuration::impl::read_settings ()
|
||||
my_callsign_ = settings_->value ("MyCall", QString {}).toString ();
|
||||
my_grid_ = settings_->value ("MyGrid", QString {}).toString ();
|
||||
my_station_ = settings_->value("MyStation", QString {}).toString();
|
||||
my_dBm_ = settings_->value("MyPower", -1).toInt();
|
||||
callsign_aging_ = settings_->value ("CallsignAging", 0).toInt ();
|
||||
activity_aging_ = settings_->value ("ActivityAging", 2).toInt ();
|
||||
my_qth_ = settings_->value("MyQTH", QString {}).toString();
|
||||
cq_ = settings_->value("CQMessage", QString {"CQCQCQ"}).toString();
|
||||
reply_ = settings_->value("Reply", QString {"HW CPY?"}).toString();
|
||||
next_color_CQ_ = color_CQ_ = settings_->value("colorCQ","#66ff66").toString();
|
||||
next_color_MyCall_ = color_MyCall_ = settings_->value("colorMyCall","#ff6666").toString();
|
||||
next_color_ReceivedMsg_ = color_ReceivedMsg_ = settings_->value("colorReceivedMsg","#ffeaa7").toString();
|
||||
next_color_cq_ = color_cq_ = settings_->value("colorCQ","#66ff66").toString();
|
||||
next_color_mycall_ = color_mycall_ = settings_->value("colorMyCall","#ff6666").toString();
|
||||
next_color_rx_background_ = color_rx_background_ = settings_->value("color_rx_background","#ffeaa7").toString();
|
||||
next_color_rx_foreground_ = color_rx_foreground_ = settings_->value("color_rx_foreground","#000000").toString();
|
||||
next_color_compose_background_ = color_compose_background_ = settings_->value("color_compose_background","#ffffff").toString();
|
||||
next_color_compose_foreground_ = color_compose_foreground_ = settings_->value("color_compose_foreground","#000000").toString();
|
||||
next_color_tx_foreground_ = color_tx_foreground_ = settings_->value("color_tx_foreground","#ff0000").toString();
|
||||
next_color_DXCC_ = color_DXCC_ = settings_->value("colorDXCC","#ff00ff").toString();
|
||||
next_color_NewCall_ = color_NewCall_ = settings_->value("colorNewCall","#ffaaff").toString();
|
||||
|
||||
next_color_table_background_ = color_table_background_ = settings_->value("colorTableBackground", "#ffffff").toString();
|
||||
next_color_table_highlight_ = color_table_highlight_ = settings_->value("colorTableHighlight", "#3498db").toString();
|
||||
next_color_table_foreground_ = color_table_foreground_ = settings_->value("colorTableForeground","#000000").toString();
|
||||
|
||||
if (next_font_.fromString (settings_->value ("Font", QGuiApplication::font ().toString ()).toString ())
|
||||
&& next_font_ != font_)
|
||||
{
|
||||
font_ = next_font_;
|
||||
Q_EMIT self_->text_font_changed (font_);
|
||||
Q_EMIT self_->gui_text_font_changed (font_);
|
||||
}
|
||||
else
|
||||
{
|
||||
next_font_ = font_;
|
||||
}
|
||||
if (next_decoded_text_font_.fromString (settings_->value ("DecodedTextFont", "Courier, 10").toString ())
|
||||
&& next_decoded_text_font_ != decoded_text_font_)
|
||||
ui_->font_push_button->setText(QString("Application Font (%1 %2)").arg(next_font_.family()).arg(next_font_.pointSize()));
|
||||
|
||||
if (next_tx_text_font_.fromString (settings_->value ("TXTextFont", QGuiApplication::font ().toString ()).toString ())
|
||||
&& next_tx_text_font_ != tx_text_font_)
|
||||
{
|
||||
decoded_text_font_ = next_decoded_text_font_;
|
||||
Q_EMIT self_->decoded_text_font_changed (decoded_text_font_);
|
||||
tx_text_font_ = next_tx_text_font_;
|
||||
Q_EMIT self_->tx_text_font_changed (tx_text_font_);
|
||||
}
|
||||
else
|
||||
{
|
||||
next_decoded_text_font_ = decoded_text_font_;
|
||||
next_tx_text_font_ = tx_text_font_;
|
||||
}
|
||||
|
||||
ui_->txFontButton->setText(QString("Font (%1 %2)").arg(next_tx_text_font_.family()).arg(next_tx_text_font_.pointSize()));
|
||||
|
||||
if (next_rx_text_font_.fromString (settings_->value ("RXTextFont", QGuiApplication::font ().toString ()).toString ())
|
||||
&& next_rx_text_font_ != rx_text_font_)
|
||||
{
|
||||
rx_text_font_ = next_rx_text_font_;
|
||||
Q_EMIT self_->rx_text_font_changed (rx_text_font_);
|
||||
}
|
||||
else
|
||||
{
|
||||
next_rx_text_font_ = rx_text_font_;
|
||||
}
|
||||
|
||||
ui_->rxFontButton->setText(QString("Font (%1 %2)").arg(next_rx_text_font_.family()).arg(next_rx_text_font_.pointSize()));
|
||||
|
||||
if (next_compose_text_font_.fromString (settings_->value ("composeTextFont", QGuiApplication::font ().toString ()).toString ())
|
||||
&& next_compose_text_font_ != compose_text_font_)
|
||||
{
|
||||
compose_text_font_ = next_compose_text_font_;
|
||||
Q_EMIT self_->compose_text_font_changed (compose_text_font_);
|
||||
}
|
||||
else
|
||||
{
|
||||
next_compose_text_font_ = compose_text_font_;
|
||||
}
|
||||
ui_->composeFontButton->setText(QString("Font (%1 %2)").arg(next_compose_text_font_.family()).arg(next_compose_text_font_.pointSize()));
|
||||
|
||||
if (next_table_font_.fromString (settings_->value ("tableFont", QGuiApplication::font ().toString ()).toString ())
|
||||
&& next_table_font_ != table_font_)
|
||||
{
|
||||
table_font_ = next_table_font_;
|
||||
Q_EMIT self_->table_font_changed (table_font_);
|
||||
}
|
||||
else
|
||||
{
|
||||
next_table_font_ = table_font_;
|
||||
}
|
||||
ui_->tableFontButton->setText(QString("Font (%1 %2)").arg(next_table_font_.family()).arg(next_table_font_.pointSize()));
|
||||
|
||||
id_interval_ = settings_->value ("IDint", 0).toInt ();
|
||||
ntrials_ = settings_->value ("nTrials", 6).toInt ();
|
||||
txDelay_ = settings_->value ("TxDelay",0.2).toDouble();
|
||||
@@ -1429,6 +1526,8 @@ void Configuration::impl::read_settings ()
|
||||
RxBandwidth_ = settings_->value ("RxBandwidth", 2500).toInt ();
|
||||
save_directory_ = settings_->value ("SaveDir", default_save_directory_.absolutePath ()).toString ();
|
||||
azel_directory_ = settings_->value ("AzElDir", default_azel_directory_.absolutePath ()).toString ();
|
||||
sound_dm_path_ = settings_->value ("SoundDMPath", "").toString ();
|
||||
sound_am_path_ = settings_->value ("SoundAMPath", "").toString ();
|
||||
|
||||
{
|
||||
//
|
||||
@@ -1490,11 +1589,12 @@ void Configuration::impl::read_settings ()
|
||||
|
||||
transmit_directed_ = settings_->value ("TransmitDirected", true).toBool();
|
||||
autoreply_off_at_startup_ = settings_->value ("AutoreplyOFF", false).toBool ();
|
||||
relay_disabled_ = settings_->value ("RelayOFF", false).toBool ();
|
||||
monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool ();
|
||||
monitor_last_used_ = settings_->value ("MonitorLastUsed", false).toBool ();
|
||||
spot_to_reporting_networks_ = settings_->value ("PSKReporter", true).toBool ();
|
||||
id_after_73_ = settings_->value ("After73", false).toBool ();
|
||||
tx_QSY_allowed_ = settings_->value ("TxQSYAllowed", false).toBool ();
|
||||
tx_qsy_allowed_ = settings_->value ("TxQSYAllowed", false).toBool ();
|
||||
use_dynamic_info_ = settings_->value ("AutoGrid", false).toBool ();
|
||||
|
||||
auto loadedMacros = settings_->value ("Macros", QStringList {"TNX 73 GL"}).toStringList();
|
||||
@@ -1551,6 +1651,9 @@ void Configuration::impl::read_settings ()
|
||||
disable_TX_on_73_ = settings_->value ("73TxDisable", false).toBool ();
|
||||
beacon_ = settings_->value ("TxBeacon", 30).toInt ();
|
||||
watchdog_ = settings_->value ("TxWatchdog", 0).toInt ();
|
||||
if(watchdog_){
|
||||
watchdog_ = qMax(5, watchdog_);
|
||||
}
|
||||
TX_messages_ = settings_->value ("Tx2QSO", true).toBool ();
|
||||
enable_VHF_features_ = settings_->value("VHFUHF",false).toBool ();
|
||||
decode_at_52s_ = settings_->value("Decode52",false).toBool ();
|
||||
@@ -1563,6 +1666,9 @@ void Configuration::impl::read_settings ()
|
||||
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
|
||||
rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> ();
|
||||
opCall_ = settings_->value ("OpCall", "").toString ();
|
||||
aprs_server_name_ = settings_->value ("aprsServer", "rotate.aprs2.net").toString ();
|
||||
aprs_server_port_ = settings_->value ("aprsServerPort", 14580).toUInt ();
|
||||
aprs_passcode_ = settings_->value ("aprsPasscode", "").toString();
|
||||
udp_server_name_ = settings_->value ("UDPServer", "127.0.0.1").toString ();
|
||||
udp_server_port_ = settings_->value ("UDPServerPort", 2237).toUInt ();
|
||||
n1mm_server_name_ = settings_->value ("N1MMServer", "127.0.0.1").toString ();
|
||||
@@ -1586,18 +1692,32 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("MyCall", my_callsign_);
|
||||
settings_->setValue ("MyGrid", my_grid_);
|
||||
settings_->setValue ("MyStation", my_station_);
|
||||
settings_->setValue ("MyPower", my_dBm_);
|
||||
settings_->setValue ("MyQTH", my_qth_);
|
||||
settings_->setValue ("CQMessage", cq_);
|
||||
settings_->setValue ("Reply", reply_);
|
||||
settings_->setValue ("CallsignAging", callsign_aging_);
|
||||
settings_->setValue ("ActivityAging", activity_aging_);
|
||||
settings_->setValue("colorCQ",color_CQ_);
|
||||
settings_->setValue("colorMyCall",color_MyCall_);
|
||||
settings_->setValue("colorReceivedMsg",color_ReceivedMsg_);
|
||||
settings_->setValue("colorCQ",color_cq_);
|
||||
settings_->setValue("colorMyCall",color_mycall_);
|
||||
settings_->setValue("color_rx_background",color_rx_background_);
|
||||
settings_->setValue("color_rx_foreground",color_rx_foreground_);
|
||||
settings_->setValue("color_compose_background",color_compose_background_);
|
||||
settings_->setValue("color_compose_foreground",color_compose_foreground_);
|
||||
settings_->setValue("color_tx_foreground",color_tx_foreground_);
|
||||
settings_->setValue("colorDXCC",color_DXCC_);
|
||||
settings_->setValue("colorNewCall",color_NewCall_);
|
||||
|
||||
settings_->setValue("colorTableBackground",color_table_background_);
|
||||
settings_->setValue("colorTableHighlight",color_table_highlight_);
|
||||
settings_->setValue("colorTableForeground",color_table_foreground_);
|
||||
|
||||
|
||||
settings_->setValue ("Font", font_.toString ());
|
||||
settings_->setValue ("DecodedTextFont", decoded_text_font_.toString ());
|
||||
settings_->setValue ("RXTextFont", rx_text_font_.toString ());
|
||||
settings_->setValue ("TXTextFont", tx_text_font_.toString ());
|
||||
settings_->setValue ("composeTextFont", compose_text_font_.toString ());
|
||||
settings_->setValue ("tableFont", table_font_.toString());
|
||||
|
||||
settings_->setValue ("IDint", id_interval_);
|
||||
settings_->setValue ("nTrials", ntrials_);
|
||||
settings_->setValue ("TxDelay", txDelay_);
|
||||
@@ -1607,6 +1727,8 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("PTTport", rig_params_.ptt_port);
|
||||
settings_->setValue ("SaveDir", save_directory_.absolutePath ());
|
||||
settings_->setValue ("AzElDir", azel_directory_.absolutePath ());
|
||||
settings_->setValue ("SoundDMPath", sound_dm_path_);
|
||||
settings_->setValue ("SoundAMPath", sound_am_path_);
|
||||
|
||||
if (default_audio_input_device_selected_)
|
||||
{
|
||||
@@ -1631,11 +1753,12 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("Type2MsgGen", QVariant::fromValue (type_2_msg_gen_));
|
||||
settings_->setValue ("TransmitDirected", transmit_directed_);
|
||||
settings_->setValue ("AutoreplyOFF", autoreply_off_at_startup_);
|
||||
settings_->setValue ("RelayOFF", relay_disabled_);
|
||||
settings_->setValue ("MonitorOFF", monitor_off_at_startup_);
|
||||
settings_->setValue ("MonitorLastUsed", monitor_last_used_);
|
||||
settings_->setValue ("PSKReporter", spot_to_reporting_networks_);
|
||||
settings_->setValue ("After73", id_after_73_);
|
||||
settings_->setValue ("TxQSYAllowed", tx_QSY_allowed_);
|
||||
settings_->setValue ("TxQSYAllowed", tx_qsy_allowed_);
|
||||
settings_->setValue ("Macros", macros_.stringList ());
|
||||
settings_->setValue (versionedFrequenciesSettingsKey, QVariant::fromValue (frequencies_.frequency_list ()));
|
||||
settings_->setValue ("stations", QVariant::fromValue (stations_.station_list ()));
|
||||
@@ -1677,6 +1800,9 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
|
||||
settings_->setValue ("x4ToneSpacing", x4ToneSpacing_);
|
||||
settings_->setValue ("OpCall", opCall_);
|
||||
settings_->setValue ("aprsServer", aprs_server_name_);
|
||||
settings_->setValue ("aprsServerPort", aprs_server_port_);
|
||||
settings_->setValue ("aprsPasscode", aprs_passcode_);
|
||||
settings_->setValue ("UDPServer", udp_server_name_);
|
||||
settings_->setValue ("UDPServerPort", udp_server_port_);
|
||||
settings_->setValue ("N1MMServer", n1mm_server_name_);
|
||||
@@ -1950,20 +2076,45 @@ void Configuration::impl::accept ()
|
||||
if (next_font_ != font_)
|
||||
{
|
||||
font_ = next_font_;
|
||||
Q_EMIT self_->text_font_changed (font_);
|
||||
Q_EMIT self_->gui_text_font_changed (font_);
|
||||
}
|
||||
|
||||
if (next_decoded_text_font_ != decoded_text_font_)
|
||||
if (next_tx_text_font_ != tx_text_font_)
|
||||
{
|
||||
decoded_text_font_ = next_decoded_text_font_;
|
||||
Q_EMIT self_->decoded_text_font_changed (decoded_text_font_);
|
||||
tx_text_font_ = next_tx_text_font_;
|
||||
Q_EMIT self_->tx_text_font_changed (tx_text_font_);
|
||||
}
|
||||
|
||||
color_CQ_ = next_color_CQ_;
|
||||
color_MyCall_ = next_color_MyCall_;
|
||||
color_ReceivedMsg_ = next_color_ReceivedMsg_;
|
||||
if (next_rx_text_font_ != rx_text_font_)
|
||||
{
|
||||
rx_text_font_ = next_rx_text_font_;
|
||||
Q_EMIT self_->rx_text_font_changed (rx_text_font_);
|
||||
}
|
||||
|
||||
if (next_compose_text_font_ != compose_text_font_)
|
||||
{
|
||||
compose_text_font_ = next_compose_text_font_;
|
||||
Q_EMIT self_->compose_text_font_changed (compose_text_font_);
|
||||
}
|
||||
|
||||
if (next_table_font_ != table_font_)
|
||||
{
|
||||
table_font_ = next_table_font_;
|
||||
Q_EMIT self_->table_font_changed (table_font_);
|
||||
}
|
||||
|
||||
color_cq_ = next_color_cq_;
|
||||
color_mycall_ = next_color_mycall_;
|
||||
color_rx_background_ = next_color_rx_background_;
|
||||
color_rx_foreground_ = next_color_rx_foreground_;
|
||||
color_compose_background_ = next_color_compose_background_;
|
||||
color_compose_foreground_ = next_color_compose_foreground_;
|
||||
color_tx_foreground_ = next_color_tx_foreground_;
|
||||
color_DXCC_ = next_color_DXCC_;
|
||||
color_NewCall_ = next_color_NewCall_;
|
||||
color_table_background_ = next_color_table_background_;
|
||||
color_table_highlight_ = next_color_table_highlight_;
|
||||
color_table_foreground_ = next_color_table_foreground_;
|
||||
|
||||
Q_EMIT self_->colors_changed();
|
||||
|
||||
@@ -2049,8 +2200,8 @@ void Configuration::impl::accept ()
|
||||
my_callsign_ = ui_->callsign_line_edit->text ();
|
||||
my_grid_ = ui_->grid_line_edit->text ();
|
||||
my_station_ = ui_->station_message_line_edit->text().toUpper();
|
||||
cq_ = ui_->cq_message_line_edit->text().toUpper();
|
||||
reply_ = ui_->reply_message_line_edit->text().toUpper();
|
||||
my_dBm_ = ui_->station_power_combo_box->currentData().toInt();
|
||||
my_qth_ = ui_->qth_message_line_edit->text().toUpper();
|
||||
callsign_aging_ = ui_->callsign_aging_spin_box->value();
|
||||
activity_aging_ = ui_->activity_aging_spin_box->value();
|
||||
@@ -2062,9 +2213,10 @@ void Configuration::impl::accept ()
|
||||
degrade_ = ui_->sbDegrade->value ();
|
||||
RxBandwidth_ = ui_->sbBandwidth->value ();
|
||||
id_after_73_ = ui_->CW_id_after_73_check_box->isChecked ();
|
||||
tx_QSY_allowed_ = ui_->tx_QSY_check_box->isChecked ();
|
||||
tx_qsy_allowed_ = ui_->tx_qsy_check_box->isChecked ();
|
||||
transmit_directed_ = ui_->transmit_directed_check_box->isChecked();
|
||||
autoreply_off_at_startup_ = ui_->autoreply_off_check_box->isChecked ();
|
||||
relay_disabled_ = ui_->relay_disabled_check_box->isChecked();
|
||||
monitor_off_at_startup_ = ui_->monitor_off_check_box->isChecked ();
|
||||
monitor_last_used_ = ui_->monitor_last_used_check_box->isChecked ();
|
||||
type_2_msg_gen_ = static_cast<Type2MsgGen> (ui_->type_2_msg_gen_combo_box->currentIndex ());
|
||||
@@ -2084,6 +2236,8 @@ void Configuration::impl::accept ()
|
||||
data_mode_ = static_cast<DataMode> (ui_->TX_mode_button_group->checkedId ());
|
||||
save_directory_ = ui_->save_path_display_label->text ();
|
||||
azel_directory_ = ui_->azel_path_display_label->text ();
|
||||
sound_dm_path_ = ui_->sound_dm_path_display_label->text();
|
||||
sound_am_path_ = ui_->sound_am_path_display_label->text();
|
||||
enable_VHF_features_ = ui_->enable_VHF_features_check_box->isChecked ();
|
||||
decode_at_52s_ = ui_->decode_at_52s_check_box->isChecked ();
|
||||
single_decode_ = ui_->single_decode_check_box->isChecked ();
|
||||
@@ -2098,6 +2252,10 @@ void Configuration::impl::accept ()
|
||||
pwrBandTuneMemory_ = ui_->checkBoxPwrBandTuneMemory->isChecked ();
|
||||
opCall_=ui_->opCallEntry->text();
|
||||
|
||||
aprs_server_name_ = ui_->aprs_server_line_edit->text();
|
||||
aprs_server_port_ = ui_->aprs_server_port_spin_box->value();
|
||||
aprs_passcode_ = ui_->aprs_passcode_line_edit->text();
|
||||
|
||||
auto newUdpEnabled = ui_->udpEnable->isChecked();
|
||||
auto new_server = ui_->udp_server_line_edit->text ();
|
||||
if (new_server != udp_server_name_ || newUdpEnabled != udpEnabled_)
|
||||
@@ -2183,66 +2341,178 @@ void Configuration::impl::reject ()
|
||||
void Configuration::impl::on_font_push_button_clicked ()
|
||||
{
|
||||
next_font_ = QFontDialog::getFont (0, next_font_, this);
|
||||
|
||||
ui_->font_push_button->setText(QString("Application Font (%1 %2)").arg(next_font_.family()).arg(next_font_.pointSize()));
|
||||
}
|
||||
|
||||
void Configuration::impl::on_tableFontButton_clicked ()
|
||||
{
|
||||
next_table_font_ = QFontDialog::getFont (0, next_table_font_, this);
|
||||
ui_->tableFontButton->setText(QString("Table Font (%1 %2)").arg(next_table_font_.family()).arg(next_table_font_.pointSize()));
|
||||
}
|
||||
|
||||
|
||||
QColor getColor(QColor initial, QWidget *parent, QString title){
|
||||
QList<QColor> custom = {
|
||||
QColor("#66FF66"),
|
||||
QColor("#FF6666"),
|
||||
QColor("#FFEAA7"),
|
||||
QColor("#3498DB")
|
||||
};
|
||||
|
||||
auto d = new QColorDialog(initial, parent);
|
||||
d->setWindowTitle(title);
|
||||
for(int i = 0; i < custom.length(); i++){
|
||||
d->setCustomColor(i, custom.at(i));
|
||||
}
|
||||
|
||||
if(d->exec() == QColorDialog::Accepted){
|
||||
return d->selectedColor();
|
||||
} else {
|
||||
return initial;
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_pbCQmsg_clicked()
|
||||
{
|
||||
auto new_color = QColorDialog::getColor(next_color_CQ_, this, "CQ and BEACON Messages Color");
|
||||
auto new_color = getColor(next_color_cq_, this, "CQ Messages Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_CQ_ = new_color;
|
||||
ui_->labCQ->setStyleSheet(QString("background: %1").arg(next_color_CQ_.name()));
|
||||
next_color_cq_ = new_color;
|
||||
ui_->labCQ->setStyleSheet(QString("background: %1; color: %2").arg(next_color_cq_.name()).arg(next_color_table_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_pbMyCall_clicked()
|
||||
{
|
||||
auto new_color = QColorDialog::getColor(next_color_MyCall_, this, "Directed Messages Color");
|
||||
auto new_color = getColor(next_color_mycall_, this, "Directed Messages Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_MyCall_ = new_color;
|
||||
ui_->labMyCall->setStyleSheet(QString("background: %1").arg(next_color_MyCall_.name()));
|
||||
next_color_mycall_ = new_color;
|
||||
ui_->labMyCall->setStyleSheet(QString("background: %1; color: %2").arg(next_color_mycall_.name()).arg(next_color_table_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_pbTxMsg_clicked()
|
||||
void Configuration::impl::on_tableBackgroundButton_clicked()
|
||||
{
|
||||
auto new_color = QColorDialog::getColor(next_color_ReceivedMsg_, this, "Received Messages Textarea Color");
|
||||
auto new_color = getColor(next_color_table_background_, this, "Table Background Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_ReceivedMsg_ = new_color;
|
||||
ui_->labTx->setStyleSheet(QString("background: %1").arg(next_color_ReceivedMsg_.name()));
|
||||
next_color_table_background_ = new_color;
|
||||
ui_->tableBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_background_.name()).arg(next_color_table_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_pbNewDXCC_clicked()
|
||||
void Configuration::impl::on_tableSelectedRowBackgroundButton_clicked()
|
||||
{
|
||||
auto new_color = QColorDialog::getColor(next_color_DXCC_, this, "New DXCC Messages Color");
|
||||
auto new_color = getColor(next_color_table_highlight_, this, "Table Selected Row Background Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_DXCC_ = new_color;
|
||||
ui_->labDXCC->setStyleSheet(QString("background: %1").arg(next_color_DXCC_.name()));
|
||||
next_color_table_highlight_ = new_color;
|
||||
ui_->tableSelectionBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_highlight_.name()).arg(next_color_table_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_pbNewCall_clicked()
|
||||
void Configuration::impl::on_tableForegroundButton_clicked()
|
||||
{
|
||||
auto new_color = QColorDialog::getColor(next_color_NewCall_, this, "New Call Messages Color");
|
||||
auto new_color = getColor(next_color_table_foreground_, this, "Table Foreground Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_NewCall_ = new_color;
|
||||
ui_->labNewCall->setStyleSheet(QString("background: %1").arg(next_color_NewCall_.name()));
|
||||
next_color_table_foreground_ = new_color;
|
||||
ui_->tableBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_background_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->tableSelectionBackgroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_table_highlight_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->labCQ->setStyleSheet(QString("background: %1; color: %2").arg(next_color_cq_.name()).arg(next_color_table_foreground_.name()));
|
||||
ui_->labMyCall->setStyleSheet(QString("background: %1; color: %2").arg(next_color_mycall_.name()).arg(next_color_table_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_decoded_text_font_push_button_clicked ()
|
||||
void Configuration::impl::on_rxBackgroundButton_clicked()
|
||||
{
|
||||
next_decoded_text_font_ = QFontDialog::getFont (0, decoded_text_font_ , this
|
||||
auto new_color = getColor(next_color_rx_background_, this, "Received Messages Background Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_rx_background_ = new_color;
|
||||
ui_->rxLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_rx_foreground_.name()));
|
||||
ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name()));
|
||||
ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_rxForegroundButton_clicked()
|
||||
{
|
||||
auto new_color = getColor(next_color_rx_foreground_, this, "Received Messages Foreground Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_rx_foreground_ = new_color;
|
||||
ui_->rxLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_rx_foreground_.name()));
|
||||
ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name()));
|
||||
ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_rxFontButton_clicked ()
|
||||
{
|
||||
next_rx_text_font_ = QFontDialog::getFont (0, next_rx_text_font_ , this
|
||||
, tr ("Font Chooser")
|
||||
#if QT_VERSION >= 0x050201
|
||||
, QFontDialog::MonospacedFonts
|
||||
, 0
|
||||
#endif
|
||||
);
|
||||
ui_->rxFontButton->setText(QString("Font (%1 %2)").arg(next_rx_text_font_.family()).arg(next_rx_text_font_.pointSize()));
|
||||
}
|
||||
|
||||
void Configuration::impl::on_composeBackgroundButton_clicked()
|
||||
{
|
||||
auto new_color = getColor(next_color_compose_background_, this, "Compose Messages Background Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_compose_background_ = new_color;
|
||||
ui_->composeLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_compose_background_.name()).arg(next_color_compose_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_composeForegroundButton_clicked()
|
||||
{
|
||||
auto new_color = getColor(next_color_compose_foreground_, this, "Compose Messages Foreground Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_compose_foreground_ = new_color;
|
||||
ui_->composeLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_compose_background_.name()).arg(next_color_compose_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_txForegroundButton_clicked()
|
||||
{
|
||||
auto new_color = getColor(next_color_tx_foreground_, this, "Transmitted Messages Foreground Color");
|
||||
if (new_color.isValid ())
|
||||
{
|
||||
next_color_tx_foreground_ = new_color;
|
||||
ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name()));
|
||||
ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name()));
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_txFontButton_clicked ()
|
||||
{
|
||||
next_tx_text_font_ = QFontDialog::getFont (0, next_tx_text_font_ , this
|
||||
, tr ("Font Chooser")
|
||||
#if QT_VERSION >= 0x050201
|
||||
, 0
|
||||
#endif
|
||||
);
|
||||
|
||||
ui_->txFontButton->setText(QString("Font (%1 %2)").arg(next_tx_text_font_.family()).arg(next_tx_text_font_.pointSize()));
|
||||
}
|
||||
|
||||
void Configuration::impl::on_composeFontButton_clicked ()
|
||||
{
|
||||
next_compose_text_font_ = QFontDialog::getFont (0, next_compose_text_font_ , this
|
||||
, tr ("Font Chooser")
|
||||
#if QT_VERSION >= 0x050201
|
||||
, 0
|
||||
#endif
|
||||
);
|
||||
ui_->composeFontButton->setText(QString("Font (%1 %2)").arg(next_compose_text_font_.family()).arg(next_compose_text_font_.pointSize()));
|
||||
}
|
||||
|
||||
void Configuration::impl::on_PTT_port_combo_box_activated (int /* index */)
|
||||
@@ -2362,6 +2632,14 @@ void Configuration::impl::on_qth_message_line_edit_textChanged(QString const &te
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_cq_message_line_edit_textChanged(QString const &text)
|
||||
{
|
||||
QString upper = text.toUpper();
|
||||
if(text != upper){
|
||||
ui_->cq_message_line_edit->setText (upper);
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_reply_message_line_edit_textChanged(QString const &text)
|
||||
{
|
||||
QString upper = text.toUpper();
|
||||
@@ -2608,6 +2886,68 @@ void Configuration::impl::on_azel_path_select_push_button_clicked (bool /* check
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_dm_path_select_push_button_clicked(){
|
||||
QStringList filters;
|
||||
filters << "Audio files (*.wav)"
|
||||
<< "Any files (*)";
|
||||
|
||||
QFileDialog fd {this, tr ("Sound File"), ui_->sound_dm_path_display_label->text ()};
|
||||
fd.setNameFilters(filters);
|
||||
|
||||
if (fd.exec ()) {
|
||||
if (fd.selectedFiles ().size ()) {
|
||||
if(rig_params_.ptt_type == TransceiverFactory::PTT_method_VOX){
|
||||
QMessageBox::warning(this, "Notifications Sounds Warning", "You have enabled notification sounds while using VOX. To avoid transmitting these notification sounds, please make sure your rig is using a different sound card than your system.");
|
||||
}
|
||||
ui_->sound_dm_path_display_label->setText(fd.selectedFiles().at(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_dm_path_test_push_button_clicked(){
|
||||
auto path = ui_->sound_dm_path_display_label->text();
|
||||
if(path.isEmpty()){
|
||||
return;
|
||||
}
|
||||
|
||||
QSound::play(path);
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_dm_path_reset_push_button_clicked(){
|
||||
ui_->sound_dm_path_display_label->clear();
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_am_path_select_push_button_clicked(){
|
||||
QStringList filters;
|
||||
filters << "Audio files (*.wav)"
|
||||
<< "Any files (*)";
|
||||
|
||||
QFileDialog fd {this, tr ("Sound File"), ui_->sound_am_path_display_label->text ()};
|
||||
fd.setNameFilters(filters);
|
||||
|
||||
if (fd.exec ()) {
|
||||
if (fd.selectedFiles ().size ()) {
|
||||
if(rig_params_.ptt_type == TransceiverFactory::PTT_method_VOX){
|
||||
QMessageBox::warning(this, "Notifications Sounds Warning", "You have enabled notification sounds while using VOX. To avoid transmitting these notification sounds, please make sure your rig is using a different sound card than your system.");
|
||||
}
|
||||
ui_->sound_am_path_display_label->setText(fd.selectedFiles().at(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_am_path_test_push_button_clicked(){
|
||||
auto path = ui_->sound_am_path_display_label->text();
|
||||
if(path.isEmpty()){
|
||||
return;
|
||||
}
|
||||
|
||||
QSound::play(path);
|
||||
}
|
||||
|
||||
void Configuration::impl::on_sound_am_path_reset_push_button_clicked(){
|
||||
ui_->sound_am_path_display_label->clear();
|
||||
}
|
||||
|
||||
void Configuration::impl::on_calibration_intercept_spin_box_valueChanged (double)
|
||||
{
|
||||
rig_active_ = false; // force reset
|
||||
|
||||
@@ -98,13 +98,16 @@ public:
|
||||
QString my_callsign () const;
|
||||
QString my_grid () const;
|
||||
QString my_station () const;
|
||||
int my_dBm() const;
|
||||
int activity_aging() const;
|
||||
int callsign_aging() const;
|
||||
QString my_qth () const;
|
||||
QString reply () const;
|
||||
QString cq_message () const;
|
||||
QString reply_message () const;
|
||||
QFont table_font() const;
|
||||
QFont text_font () const;
|
||||
QFont decoded_text_font () const;
|
||||
QFont rx_text_font () const;
|
||||
QFont tx_text_font () const;
|
||||
QFont compose_text_font () const;
|
||||
qint32 id_interval () const;
|
||||
qint32 ntrials() const;
|
||||
qint32 aggressive() const;
|
||||
@@ -112,11 +115,12 @@ public:
|
||||
double degrade() const;
|
||||
double txDelay() const;
|
||||
bool id_after_73 () const;
|
||||
bool tx_QSY_allowed () const;
|
||||
bool tx_qsy_allowed () const;
|
||||
bool spot_to_reporting_networks () const;
|
||||
void set_spot_to_reporting_networks (bool);
|
||||
bool transmit_directed() const;
|
||||
bool autoreply_off_at_startup () const;
|
||||
bool relay_off() const;
|
||||
bool monitor_off_at_startup () const;
|
||||
bool monitor_last_used () const;
|
||||
bool log_as_DATA () const;
|
||||
@@ -149,6 +153,9 @@ public:
|
||||
bool EMEonly() const;
|
||||
bool post_decodes () const;
|
||||
QString opCall() const;
|
||||
QString aprs_server_name () const;
|
||||
port_type aprs_server_port () const;
|
||||
QString aprs_passcode () const;
|
||||
QString udp_server_name () const;
|
||||
port_type udp_server_port () const;
|
||||
QString n1mm_server_name () const;
|
||||
@@ -171,11 +178,20 @@ public:
|
||||
QStringListModel const * macros () const;
|
||||
QDir save_directory () const;
|
||||
QDir azel_directory () const;
|
||||
QString sound_dm_path() const;
|
||||
QString sound_am_path() const;
|
||||
QString rig_name () const;
|
||||
Type2MsgGen type_2_msg_gen () const;
|
||||
QColor color_table_background() const;
|
||||
QColor color_table_highlight() const;
|
||||
QColor color_table_foreground() const;
|
||||
QColor color_CQ () const;
|
||||
QColor color_MyCall () const;
|
||||
QColor color_ReceivedMsg () const;
|
||||
QColor color_rx_background () const;
|
||||
QColor color_rx_foreground () const;
|
||||
QColor color_tx_foreground () const;
|
||||
QColor color_compose_background () const;
|
||||
QColor color_compose_foreground () const;
|
||||
QColor color_DXCC () const;
|
||||
QColor color_NewCall () const;
|
||||
bool pwrBandTxMemory () const;
|
||||
@@ -268,8 +284,11 @@ public:
|
||||
// These signals indicate a font has been selected and accepted for
|
||||
// the application text and decoded text respectively.
|
||||
//
|
||||
Q_SIGNAL void text_font_changed (QFont);
|
||||
Q_SIGNAL void decoded_text_font_changed (QFont);
|
||||
Q_SIGNAL void gui_text_font_changed (QFont);
|
||||
Q_SIGNAL void tx_text_font_changed (QFont);
|
||||
Q_SIGNAL void rx_text_font_changed (QFont);
|
||||
Q_SIGNAL void compose_text_font_changed (QFont);
|
||||
Q_SIGNAL void table_font_changed (QFont);
|
||||
Q_SIGNAL void colors_changed ();
|
||||
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
WSJTX_BUNDLE="`echo "$0" | sed -e 's/\/Contents\/MacOS\/.*//'`"
|
||||
WSJTX_RESOURCES="$WSJTX_BUNDLE/Contents/Resources"
|
||||
WSJTX_TEMP="/tmp/wsjtx/$UID"
|
||||
WSJTX_TEMP="/tmp/ft8call/$UID"
|
||||
|
||||
echo "running $0"
|
||||
echo "WSJTX_BUNDLE: $WSJTX_BUNDLE"
|
||||
@@ -13,4 +13,4 @@ export "DYLD_LIBRARY_PATH=$WSJTX_RESOURCES/lib"
|
||||
export "PATH=$WSJTX_RESOURCES/bin:$PATH"
|
||||
|
||||
#export
|
||||
exec "$WSJTX_RESOURCES/bin/wsjtx"
|
||||
exec "$WSJTX_RESOURCES/bin/ft8call"
|
||||
@@ -1,3 +1,7 @@
|
||||
|
||||
Notes on FT8Call Installation for Mac OS X
|
||||
(replace all instances of WSJT-X with FT8Call)
|
||||
|
||||
Notes on WSJT-X Installation for Mac OS X
|
||||
-----------------------------------------
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
IDI_ICON1 ICON DISCARDABLE "../icons/windows-icons/wsjtx.ico"
|
||||
IDI_ICON1 ICON DISCARDABLE "../icons/windows-icons/ft8call.ico"
|
||||
|
||||
@@ -1 +1 @@
|
||||
IDI_ICON1 ICON DISCARDABLE "../icons/windows-icons/wsjtx.ico"
|
||||
IDI_ICON1 ICON DISCARDABLE "../icons/windows-icons/ft8call.ico"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Version number components
|
||||
set (WSJTX_VERSION_MAJOR 0)
|
||||
set (WSJTX_VERSION_MINOR 5)
|
||||
set (WSJTX_VERSION_PATCH 0)
|
||||
set (WSJTX_VERSION_MINOR 6)
|
||||
set (WSJTX_VERSION_PATCH 5)
|
||||
set (WSJTX_RC 0) # release candidate number, comment out or zero for development versions
|
||||
set (WSJTX_VERSION_IS_RELEASE 0) # set to 1 for final release build
|
||||
|
||||
@@ -13,23 +13,35 @@ CAboutDlg::CAboutDlg(QWidget *parent) :
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->labelTxt->setText ("<h2>" + QString {"WSJT-X v"
|
||||
ui->labelTxt->setText ("<h2>" + QString {"FT8Call v"
|
||||
+ QCoreApplication::applicationVersion ()
|
||||
+ " " + revision ()}.simplified () + "</h2><br />"
|
||||
"WSJT-X implements a number of digital modes designed for <br />"
|
||||
"weak-signal Amateur Radio communication. <br /><br />"
|
||||
"© 2001-2018 by Joe Taylor, K1JT, with grateful <br />"
|
||||
"acknowledgment for contributions from AC6SL, AE4JY, <br />"
|
||||
"DJ0OT, G3WDG, G4KLA, G4WJS, IV3NWV, IW3RAB, K3WYC, K9AN, <br />"
|
||||
"KA6MAL, KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, <br />"
|
||||
"VE1SKY, VK3ACF, VK4BDJ, VK7MO, W4TI, W4TV, and W9MDB.<br /><br />"
|
||||
"WSJT-X is licensed under the terms of Version 3 <br />"
|
||||
"of the GNU General Public License (GPL) <br />"
|
||||
"<a href=" WSJTX_STRINGIZE (PROJECT_HOMEPAGE) ">"
|
||||
"<img src=\":/icon_128x128.png\" /></a>"
|
||||
"<a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">"
|
||||
"<img src=\":/gpl-v3-logo.svg\" height=\"80\" /><br />"
|
||||
"https://www.gnu.org/licenses/gpl-3.0.txt</a>");
|
||||
|
||||
"FT8Call is a derivative of the WSJT-X application, "
|
||||
"restructured and redesigned for message passing. <br/>"
|
||||
"It is not supported by nor endorsed by the WSJT-X "
|
||||
"development group. <br/>FT8Call is "
|
||||
"licensed under and in accordance with the terms "
|
||||
"of the <a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3 license</a>.<br/>"
|
||||
"The source code modifications are public and can be found in <a href=\"https://bitbucket.org/widefido/wsjtx/\">this repository</a>.<br/><br/>"
|
||||
|
||||
"FT8Call is heavily inspired by WSJT-X, Fldigi, "
|
||||
"and FSQCall <br/>and would not exist without the hard work and "
|
||||
"dedication of the many <br/>developers in the amateur radio "
|
||||
"community.<br /><br />"
|
||||
"FT8Call stands on the shoulder of giants...the takeoff angle "
|
||||
"is better up there.<br /><br />"
|
||||
"A special thanks goes out to the FT8Call development team:<br/><br/><strong>"
|
||||
"KC9QNE, "
|
||||
"KI6SSI, "
|
||||
"LB9YH, "
|
||||
"M0IAX, "
|
||||
"N0JDS, "
|
||||
"OH8STN, "
|
||||
"VA3OSO, "
|
||||
"VK1MIC, "
|
||||
"W0FW,</strong><br/><br/>and the many other amateur radio operators who have given "
|
||||
"FT8Call a chance.");
|
||||
}
|
||||
|
||||
CAboutDlg::~CAboutDlg()
|
||||
|
||||
@@ -5,8 +5,16 @@
|
||||
<property name="windowModality">
|
||||
<enum>Qt::NonModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>192</width>
|
||||
<height>116</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>About WSJT-X</string>
|
||||
<string>About FT8Call</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
|
||||
@@ -17,6 +17,7 @@ def do_hash(callsign):
|
||||
return int(hash & 0x7fff)
|
||||
|
||||
HOST = 'rotate.aprs2.net'
|
||||
#HOST = 'rotate.aprs.net'
|
||||
PORT = 14580
|
||||
|
||||
print "Connecting..."
|
||||
@@ -12,8 +12,8 @@
|
||||
sodipodi:version="0.32"
|
||||
viewBox="0 0 640 480"
|
||||
version="1.1"
|
||||
sodipodi:docname="tasto_5_architetto_franc_01.svg"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="DragNDrop Background.svg"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
width="100%"
|
||||
height="100%">
|
||||
<defs
|
||||
@@ -27,10 +27,10 @@
|
||||
inkscape:zoom="1.89375"
|
||||
inkscape:cx="227.06271"
|
||||
inkscape:cy="240"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1053"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g3" />
|
||||
<g
|
||||
@@ -72,25 +72,6 @@
|
||||
d="m 299.44057,-268.80395 c -9.2,3.806 -5.476,22.395 -5.476,30.261 0,1.951 -23.229,0.93 -26.087,0.93 -8.576,0 -23.012,-2.757 -27.835,6.535 -3.627,6.99 -1.35,19.146 -1.35,26.616 0,8.4 -0.709,17.143 0,25.519 0,13.884 15.395,12.081 24.75,12.081 h 30.326 c 0.616,0 -0.196,23.651 0.363,26.81 1.344,7.601 11.873,10.134 17.171,4.83 1.235,-0.97 2.304,-2.297 3.414,-3.404 6.86,-6.837 13.72,-13.676 20.579,-20.514 7.706,-7.681 15.41,-15.36 23.116,-23.042 4.011,-3.997 10.436,-8.579 12.863,-13.906 3.874,-8.509 -2.996,-14.135 -8.281,-19.426 -7.462,-7.47 -14.926,-14.941 -22.389,-22.411 -7.348,-7.353 -14.693,-14.708 -22.041,-22.061 -5.328,-5.353 -10.368,-12.444 -19.115,-8.826 m -58.942,89.86 v -25.519 c 0,-7.083 -2.537,-20.456 1.757,-26.809 4.938,-7.304 19.854,-4.536 27.283,-4.536 h 17.136 c 1.448,0 7.955,0.999 9.096,0 1.124,-0.984 0,-9.795 0,-11.286 v -14.11 c 0,-6.577 10.11,-8.923 14.281,-4.749 1.512,1.514 3.024,3.027 4.536,4.539 l 46.438,46.479 c 5.123,5.13 13.199,11.335 7.847,19.468 -3.387,5.148 -9.155,9.432 -13.47,13.732 -14.601,14.553 -29.201,29.107 -43.802,43.659 -2.575,2.568 -5.353,4.298 -9.308,3.666 -6.041,-0.967 -6.522,-6.041 -6.522,-10.962 0,-3.029 1.173,-23.3 -1.004,-23.3 h -29.582 c -8.374,-0.01 -24.69,2.6 -24.69,-10.282"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#739b07" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff7400;fill-opacity:0.77254902;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
|
||||
x="316.39532"
|
||||
y="-58.000538"
|
||||
id="text6112"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6114"
|
||||
x="316.39532"
|
||||
y="-58.000538">Drag the icon</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="316.39532"
|
||||
y="-8.0005379"
|
||||
id="tspan6116">onto the link</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="316.39532"
|
||||
y="41.999462"
|
||||
id="tspan6118">to install WSJT-X</tspan></text>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata6108">
|
||||
@@ -107,7 +88,7 @@
|
||||
<dc:title>Openclipart</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
<dc:date>2010-03-28T09:25:56</dc:date>
|
||||
<dc:description>Drawing by Francesco 'Architetto' Rollandin. From OCAL 0.18 release.</dc:description>
|
||||
<dc:source>http://openclipart.org/detail/34711/architetto----tasto-5-by-anonymous</dc:source>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 115 KiB |
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="1024"
|
||||
viewBox="0 0 270.93333 270.93334"
|
||||
version="1.1"
|
||||
id="svg16"
|
||||
inkscape:export-filename="/home/jordan/bitmap.png"
|
||||
inkscape:export-xdpi="300.06662"
|
||||
inkscape:export-ydpi="300.06662"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="icon_1024.svg">
|
||||
<defs
|
||||
id="defs10">
|
||||
<linearGradient
|
||||
id="linearGradient6001"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5999" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.48333333"
|
||||
inkscape:cx="1350"
|
||||
inkscape:cy="512"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1053"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true" />
|
||||
<metadata
|
||||
id="metadata13">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-26.06665)">
|
||||
<g
|
||||
id="g6030"
|
||||
transform="matrix(1.5635065,0,0,1.5635065,-28.822499,6.8392367)">
|
||||
<circle
|
||||
inkscape:export-ydpi="300.06662"
|
||||
inkscape:export-xdpi="300.06662"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="81.642853"
|
||||
cy="98.940475"
|
||||
cx="105.07738"
|
||||
id="path18" />
|
||||
<text
|
||||
id="text24"
|
||||
y="152.33945"
|
||||
x="52.539673"
|
||||
style="font-style:normal;font-weight:normal;font-size:7.09937859px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.17748445"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:176.3888855px;font-family:wasy10;-inkscape-font-specification:wasy10;fill:#000000;stroke-width:0.17748445"
|
||||
y="152.33945"
|
||||
x="52.539673"
|
||||
id="tspan22"
|
||||
sodipodi:role="line">⌁</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="128"
|
||||
height="128"
|
||||
viewBox="0 0 33.866666 33.866667"
|
||||
version="1.1"
|
||||
id="svg16"
|
||||
inkscape:export-filename="/home/jordan/bitmap.png"
|
||||
inkscape:export-xdpi="300.06662"
|
||||
inkscape:export-ydpi="300.06662"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="icon_1024.svg">
|
||||
<defs
|
||||
id="defs10">
|
||||
<linearGradient
|
||||
id="linearGradient6001"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5999" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.48333333"
|
||||
inkscape:cx="1350"
|
||||
inkscape:cy="512"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1053"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true" />
|
||||
<metadata
|
||||
id="metadata13">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-263.13332)">
|
||||
<g
|
||||
id="g6030"
|
||||
transform="matrix(0.19543832,0,0,0.19543832,-3.6028125,260.72988)">
|
||||
<circle
|
||||
inkscape:export-ydpi="300.06662"
|
||||
inkscape:export-xdpi="300.06662"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="81.642853"
|
||||
cy="98.940475"
|
||||
cx="105.07738"
|
||||
id="path18" />
|
||||
<text
|
||||
id="text24"
|
||||
y="152.33945"
|
||||
x="52.539673"
|
||||
style="font-style:normal;font-weight:normal;font-size:7.09937859px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.17748445"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:176.3888855px;font-family:wasy10;-inkscape-font-specification:wasy10;fill:#000000;stroke-width:0.17748445"
|
||||
y="152.33945"
|
||||
x="52.539673"
|
||||
id="tspan22"
|
||||
sodipodi:role="line">⌁</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 49 KiB |
@@ -3,8 +3,8 @@
|
||||
#
|
||||
# Windows
|
||||
#
|
||||
inkscape -z -e /tmp/image-0.png wsjt_globe_128x128.svg
|
||||
inkscape -z -e /tmp/image-1.png wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e /tmp/image-0.png icon_128.svg
|
||||
inkscape -z -e /tmp/image-1.png icon_1024.svg
|
||||
convert '/tmp/image-%d.png[0-1]' -background transparent \
|
||||
\( -clone 0 -resize 16 -colors 256 -compress none \) \
|
||||
\( -clone 0 -resize 20 -colors 256 -compress none \) \
|
||||
@@ -25,41 +25,42 @@ convert '/tmp/image-%d.png[0-1]' -background transparent \
|
||||
\( -clone 1 -resize 128 -compress none \) \
|
||||
\( -clone 1 -resize 256 -compress Zip \) \
|
||||
-delete 1 -delete 0 \
|
||||
-alpha remove ../icons/windows-icons/wsjtx.ico
|
||||
-alpha remove ../icons/windows-icons/ft8call.ico
|
||||
rm /tmp/image-0.png /tmp/image-1.png
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/wsjtx.ico
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/ft8call.ico
|
||||
#
|
||||
inkscape -z -e /dev/stdout -w 150 -h 57 -b white installer_logo.svg | tail -n +4 | \
|
||||
convert png:- -resize 150x57 +matte BMP3:../icons/windows-icons/installer_logo.bmp
|
||||
#inkscape -z -e /dev/stdout -w 150 -h 57 -b white installer_logo.svg | tail -n +4 | \
|
||||
# convert png:- -resize 150x57 +matte BMP3:../icons/windows-icons/installer_logo.bmp
|
||||
convert png:installer_logo.svg.png -resize 150x57 +matte BMP3:../icons/windows-icons/installer_logo.bmp
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/windows-icons/installer_logo.bmp
|
||||
|
||||
#
|
||||
# Mac
|
||||
#
|
||||
mkdir -p ../icons/Darwin/wsjtx.iconset
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_16x16.png -w 16 -h 16 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_16x16@2x.png -w 32 -h 32 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_32x32.png -w 32 -h 32 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_32x32@2x.png -w 64 -h 64 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_128x128.png -w 128 -h 128 wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_128x128@2x.png -w 256 -h 256 wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_256x256.png -w 256 -h 256 wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_256x256@2x.png -w 512 -h 512 wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_512x512.png -w 512 -h 512 wsjtx_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjtx.iconset/icon_512x512@2x.png -w 1024 -h 1024 wsjtx_globe_1024x1024.svg
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Darwin/wsjtx.iconset/*
|
||||
mkdir -p ../icons/Darwin/FT8Call.iconset
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_16x16.png -w 16 -h 16 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_16x16@2x.png -w 32 -h 32 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_32x32.png -w 32 -h 32 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_32x32@2x.png -w 64 -h 64 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_128x128.png -w 128 -h 128 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_128x128@2x.png -w 256 -h 256 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_256x256.png -w 256 -h 256 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_256x256@2x.png -w 512 -h 512 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_512x512.png -w 512 -h 512 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/FT8Call.iconset/icon_512x512@2x.png -w 1024 -h 1024 icon_1024.svg
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Darwin/FT8Call.iconset/*
|
||||
# generic globe iconset for utilities
|
||||
mkdir -p ../icons/Darwin/wsjt.iconset
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_16x16.png -w 16 -h 16 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_16x16@2x.png -w 32 -h 32 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_32x32.png -w 32 -h 32 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_32x32@2x.png -w 64 -h 64 wsjt_globe_128x128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_128x128.png -w 128 -h 128 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_128x128@2x.png -w 256 -h 256 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_256x256.png -w 256 -h 256 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_256x256@2x.png -w 512 -h 512 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_512x512.png -w 512 -h 512 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_512x512@2x.png -w 1024 -h 1024 wsjt_globe_1024x1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_16x16.png -w 16 -h 16 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_16x16@2x.png -w 32 -h 32 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_32x32.png -w 32 -h 32 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_32x32@2x.png -w 64 -h 64 icon_128.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_128x128.png -w 128 -h 128 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_128x128@2x.png -w 256 -h 256 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_256x256.png -w 256 -h 256 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_256x256@2x.png -w 512 -h 512 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_512x512.png -w 512 -h 512 icon_1024.svg
|
||||
inkscape -z -e ../icons/Darwin/wsjt.iconset/icon_512x512@2x.png -w 1024 -h 1024 icon_1024.svg
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Darwin/wsjt.iconset/*
|
||||
#
|
||||
inkscape -z -e "../icons/Darwin/DragNDrop Background.png" -w 640 -h 480 -b white "DragNDrop Background.svg"
|
||||
@@ -68,5 +69,5 @@ identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' "../icons/Darwin/DragNDrop Ba
|
||||
#
|
||||
# KDE & Gnome
|
||||
#
|
||||
inkscape -z -e ../icons/Unix/wsjtx_icon.png -w 128 -h 128 wsjtx_globe_1024x1024.svg
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Unix/wsjtx_icon.png
|
||||
inkscape -z -e ../icons/Unix/ft8call_icon.png -w 128 -h 128 icon_1024.svg
|
||||
identify -format '%f %p/%n %m %C/%Q %r %G %A %z\n' ../icons/Unix/ft8call_icon.png
|
||||
|
||||
@@ -1,577 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/home/bill/Dropbox/src/wsjtx-dev/icons/windows-icons/icon_1024x1024.png"
|
||||
version="1.1"
|
||||
width="1024"
|
||||
sodipodi:version="0.32"
|
||||
sodipodi:docname="wsjtx_globe_1024x1024.svg"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
id="svg1432"
|
||||
height="1024">
|
||||
<sodipodi:namedview
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
id="base"
|
||||
inkscape:current-layer="svg1432"
|
||||
inkscape:cx="512"
|
||||
inkscape:cy="512"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-height="858"
|
||||
inkscape:window-width="1114"
|
||||
inkscape:window-x="72"
|
||||
inkscape:window-y="31"
|
||||
inkscape:zoom="0.69433594"
|
||||
pagecolor="#ffffff"
|
||||
showborder="true"
|
||||
showguides="true"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata3060">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title></dc:title>
|
||||
<dc:description>Simple globe centered on North America</dc:description>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>earth globe northamerica</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:publisher>
|
||||
<cc:Agent
|
||||
rdf:about="http://www.openclipart.org/">
|
||||
<dc:title>Open Clip Art Library</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:date>May 1, 2005</dc:date>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license
|
||||
rdf:resource="http://web.resource.org/cc/PublicDomain" />
|
||||
<dc:language>en</dc:language>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://web.resource.org/cc/PublicDomain">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs1759">
|
||||
<linearGradient
|
||||
id="linearGradient37658">
|
||||
<stop
|
||||
style="stop-color:#2f7aff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop37660" />
|
||||
<stop
|
||||
style="stop-color:#0000b3;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop37662" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient20137">
|
||||
<stop
|
||||
style="stop-color:#00bf00;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop20139" />
|
||||
<stop
|
||||
style="stop-color:#007500;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop20141" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient20143"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient37658"
|
||||
r="112.3373"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient37664"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
fy="270.08731"
|
||||
fx="221.61394"
|
||||
cy="270.08731"
|
||||
cx="221.61394" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1902"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1904"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1906"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1908"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1910"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1912"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1914"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1916"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1918"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1920"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient37658-427"
|
||||
r="112.3373"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient37664-403"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
fy="270.08731"
|
||||
fx="221.61394"
|
||||
cy="270.08731"
|
||||
cx="221.61394" />
|
||||
<linearGradient
|
||||
id="linearGradient37658-427">
|
||||
<stop
|
||||
style="stop-color:#488afe;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7178" />
|
||||
<stop
|
||||
style="stop-color:#0000cc;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7180" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-396"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1902-893"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-396">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7184" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7186" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-527"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1904-666"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-527">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7190" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7192" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-774"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1906-717"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-774">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7196" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7198" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-253"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1908-922"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-253">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7202" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7204" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-972"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1910-261"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-972">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7208" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7210" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-945"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1912-713"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-945">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7214" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7216" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-600"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1914-146"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-600">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7220" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7222" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-196"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1916-817"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-196">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7226" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7228" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-388"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1918-23"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-388">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7232" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7234" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-202"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1920-260"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-202">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7238" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7240" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-151"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient20143-884"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-151">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7244" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7246" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<desc
|
||||
id="desc1434">wmf2svg</desc>
|
||||
<polyline
|
||||
transform="matrix(2.2285926,-3.5745108,2.3232002,1.4484387,-677.00545,692.67468)"
|
||||
style="fill:url(#radialGradient37664-403);fill-opacity:1;stroke:#0c0c0c;stroke-width:0.6875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
|
||||
points="103.191467,409.292114 100.730545,403.134064 98.525299,396.927094 96.543777,390.573547 94.785973,384.171082 93.219925,377.622009 91.909569,371.072968 90.790962,364.426147 89.928040,357.779327 89.256882,351.083649 88.777481,344.387970 88.521805,337.692261 88.489838,330.947693 88.681602,324.300873 89.033165,317.605194 89.640404,311.007263 90.407448,304.458221 91.398209,298.006897 92.580727,291.604431 93.986977,285.299744 95.553017,279.092804 97.342781,272.983582 99.324303,267.069916 101.465622,261.253937 103.830666,255.584595 106.387474,250.110733 109.104080,244.783508 112.012444,239.700668 115.112572,234.764420 118.404449,230.072571 121.856140,225.625061 125.499588,221.373062 129.302826,217.414291 133.265884,213.748779 137.260895,210.425354 141.351776,207.444077 145.506577,204.804901 149.725311,202.556717 153.975983,200.601776 158.258652,198.988937 162.573242,197.718231 166.919815,196.789627 171.266373,196.154266 175.644897,195.909912 179.991470,195.909912 184.338043,196.300888 188.652649,196.985123 192.967270,197.962585 197.217941,199.233307 201.468628,200.846130 205.623444,202.801071 209.746277,205.000397 213.805222,207.541809 217.768265,210.376495 221.667389,213.504395 225.470627,216.876678 229.177994,220.591064 232.789490,224.598709 236.273132,228.850708 239.628937,233.444839 242.856903,238.283325 245.957031,243.366180 248.929321,248.791153 251.709839,254.411621 254.362534,260.374207 256.791504,266.483398 258.996704,272.739227 261.010223,279.043915 262.768005,285.495270 264.302094,291.995453 265.644409,298.593384 266.731079,305.191315 267.625946,311.838104 268.297119,318.533813 268.744537,325.278351 269.000244,331.974030 269.032166,338.669739 268.872375,345.365448 268.488861,352.012238 267.913574,358.610168 267.114594,365.159241 266.123840,371.659424 264.941284,378.061890 263.567017,384.366577 261.969025,390.573547 260.211212,396.633850 258.229706,402.596436 256.056396,408.412384 253.723328,414.032837 251.166504,419.555603 248.449905,424.833923 245.509598,429.965668 242.409470,434.853027 239.149536,439.593750 235.697845,444.041260 232.054413,448.244385 228.219193,452.252045 224.288116,455.917542 220.261139,459.240967 216.170258,462.173401 212.015442,464.812561 207.828674,467.109589 203.577988,469.064545 199.263397,470.628510 194.948776,471.899200 190.634186,472.876678 186.255646,473.463196 181.909073,473.756439 177.562500,473.707550 173.215942,473.365448 168.869370,472.681213 164.586731,471.703735 160.304077,470.384155 156.085358,468.771332 151.898590,466.865265 147.807709,464.617065 143.748779,462.124512 139.753769,459.289856 135.854645,456.161926 132.051392,452.740753 128.344025,449.026367 124.764503,445.067596 121.280853,440.766724 117.893089,436.221466 114.665123,431.382996 111.565002,426.251282 108.624680,420.875153 105.812187,415.205811 103.191467,409.292114 "
|
||||
id="polyline1560" />
|
||||
<g
|
||||
transform="matrix(4.1610916,0,0,4.1610916,-268.34786,-716.6628)"
|
||||
style="fill:url(#radialGradient1902-893);fill-opacity:1;fill-rule:evenodd"
|
||||
inkscape:label="Continents"
|
||||
id="Continents">
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1904-666);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="132.818436,384.610931 131.827682,384.953064 128.184235,388.227600 126.074867,388.667450 123.422180,385.441803 120.417938,385.832794 117.126053,389.107300 116.838409,393.896912 116.902328,400.641479 115.655891,409.292114 114.409447,415.352448 115.432167,418.235992 113.578484,420.386444 111.053642,420.924042 109.903076,422.732361 109.871117,423.172241 116.295090,433.728943 123.262383,443.161530 130.836914,451.421204 140.904327,460.071808 151.195465,466.425385 153.528549,464.470428 157.683365,463.248596 162.509323,463.688446 165.321808,463.835083 165.577484,459.387573 165.066132,457.628113 162.381485,454.793457 158.162750,448.244385 155.094604,442.526184 156.884354,433.680054 153.496597,425.664764 151.738800,419.017975 150.811951,410.220703 147.743790,405.479980 144.579727,397.953430 142.438416,395.851868 141.447662,389.058441 138.858887,386.419281 135.886597,384.855316 133.968994,384.219940 133.201950,380.994293 131.667877,376.351288 131.923553,370.926331 132.850403,369.069122 135.407196,368.140533 137.292847,366.625458 137.452652,362.911041 136.557755,358.316925 134.736038,353.967194 135.886597,352.158844 138.123810,351.914490 141.255890,349.812927 141.223938,346.245178 139.050644,343.557098 136.973236,343.654846 135.471115,341.602142 134.863876,337.643402 135.407196,330.947693 138.219681,327.575439 141.191971,325.571625 145.890106,326.158081 148.510818,330.361237 149.469635,333.635773 149.565506,336.421570 150.588226,338.327637 152.314072,339.891571 153.656403,344.045837 154.135788,348.737701 152.665634,353.771698 151.578995,357.730469 152.985229,359.587646 155.094604,356.557495 156.468872,353.234070 159.153519,351.572388 161.870132,351.474609 165.865143,353.967194 168.517807,355.237885 171.458130,352.696472 175.389221,351.425751 178.457397,351.621246 179.416199,352.940857 181.301834,352.403229 184.497833,352.452087 185.968002,353.918335 186.095840,356.704102 187.949539,357.143951 190.602203,359.392151 192.551788,361.004974 193.670380,358.610168 191.912582,355.482269 191.561020,353.576202 193.095093,351.767883 192.583740,349.030945 190.442413,347.906860 188.620697,346.147400 189.259888,345.169952 191.976501,346.049652 195.044662,348.835449 196.259140,351.230255 198.624191,353.771698 200.733551,353.282928 202.363510,350.057312 203.609955,343.996979 204.153275,334.710999 202.906830,330.752228 202.331558,328.406281 203.258408,324.594147 202.459396,316.676605 201.053146,314.819397 198.496353,317.311981 195.300339,320.781982 194.788971,323.567780 192.871368,323.518921 189.739288,325.669373 186.894852,327.477692 187.342285,323.470032 188.524796,319.755646 190.666138,317.311981 190.314575,313.450958 189.132050,308.123718 190.090851,304.898071 193.734299,301.965637 197.601471,302.063385 202.107834,303.773987 205.559525,305.875519 207.796722,306.217651 208.435928,302.698761 206.678116,300.548309 206.038925,296.980560 207.796722,294.585724 209.490601,292.581909 208.627686,290.529205 205.783249,292.386414 203.961517,291.555573 204.057388,289.258514 207.189484,286.130615 208.787491,282.953796 208.627686,279.532684 209.874130,275.427277 208.276123,272.152740 206.198730,271.273010 205.783249,275.231781 204.185242,277.479980 203.929565,281.927460 201.788239,283.393677 202.715073,269.513580 203.546036,261.938171 204.888351,257.050812 206.997711,254.998108 209.426682,251.283707 209.171005,248.595657 207.541046,244.734634 206.262650,243.708313 205.687363,241.362366 204.600723,239.211929 202.715073,239.798416 201.276871,239.896149 200.030426,234.959930 197.697342,233.395966 194.916824,233.884705 192.743546,234.715546 191.976501,231.929764 192.264130,228.068741 190.698090,230.903412 191.145538,235.986282 191.912582,241.362366 192.104340,246.347473 190.154770,250.208496 187.406204,253.238663 182.548279,255.780090 177.338791,257.979401 173.695343,260.911804 171.745789,262.866760 169.956009,265.603668 166.696106,264.919464 162.924805,265.066071 158.290604,266.092438 153.464630,269.220306 146.944778,274.352051 145.091095,277.479980 141.671371,283.442566 138.954773,288.036682 135.918564,293.950378 135.119568,298.593384 135.503082,301.476929 136.334045,297.420410 138.091858,294.048126 140.361008,290.871338 142.310577,287.987793 143.365265,289.502869 141.959015,292.190948 138.283615,298.055786 135.087601,306.071045 132.946274,309.492188 130.900833,310.176422 129.686356,314.330688 130.069870,319.755646 128.919312,329.628113 129.494598,334.515503 130.677109,341.797638 131.603958,350.546021 131.540024,355.482269 130.964752,360.565125 128.280106,366.772064 129.047150,373.125641 129.654404,377.084412 131.476105,380.456665 132.818436,384.610931 "
|
||||
id="polyline1460" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1906-717);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="144.579727,355.237885 146.497345,357.241699 147.583984,362.324585 148.638672,368.384918 149.980988,372.539154 150.364502,377.035553 148.798477,377.279877 146.753021,373.467743 146.976746,368.433777 146.593216,362.959930 144.579727,355.237885 "
|
||||
id="polyline1464" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1908-922);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="150.108826,378.892731 148.830429,379.870209 149.309830,383.584595 150.172745,386.614777 152.633667,390.964508 152.505829,386.565887 153.336792,386.077148 153.017197,383.780090 150.108826,378.892731 "
|
||||
id="polyline1468" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1910-261);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="201.181000,353.820557 200.797470,356.459747 200.413956,361.053864 199.966507,365.990082 199.007706,368.238281 196.866379,363.204285 197.921066,357.681580 199.103592,354.895782 201.181000,353.820557 "
|
||||
id="polyline1472" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1912-713);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="204.632675,320.342133 203.993469,316.774353 202.906830,312.668976 206.230682,314.575043 208.883362,312.277985 209.842163,309.052338 208.915314,303.822876 208.563766,299.961853 209.874130,294.487976 212.430923,295.514343 213.261887,299.570862 213.581497,305.386810 213.837173,310.958405 212.111328,314.917175 211.951538,317.018738 212.335052,321.466217 210.800964,325.913727 208.691605,325.376099 206.454407,326.646820 205.016205,324.203125 204.632675,320.342133 "
|
||||
id="polyline1476" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1914-146);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="213.773254,334.955322 213.709335,340.820160 213.869125,343.263885 216.362015,346.636139 219.526062,350.594910 218.695099,344.632324 219.685867,341.406677 222.722061,339.060730 227.835663,334.662109 230.648163,335.786194 233.332809,333.147003 234.355515,326.011475 234.675125,319.218048 233.556534,312.522369 233.588486,306.071045 231.511078,300.646057 228.890350,297.420410 226.365509,296.980560 225.246902,294.830109 226.365509,293.461639 225.023193,290.235992 222.338547,287.401337 220.964264,289.698364 217.352783,290.675842 216.330063,294.292480 216.362015,299.375336 220.644653,297.469269 222.754028,297.958038 220.708588,301.623535 219.941544,306.852997 220.293106,310.714020 219.845657,317.654083 219.078629,323.909912 214.955765,329.237122 215.083618,333.000397 213.773254,334.955322 "
|
||||
id="polyline1480" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1916-817);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="232.533813,338.767487 230.200729,341.748779 229.401718,344.436798 229.721313,347.662476 233.460648,348.542206 237.040161,346.929382 237.231934,342.872864 235.378250,340.478088 233.620453,340.282562 232.533813,338.767487 "
|
||||
id="polyline1484" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1918-23);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="264.877380,375.813690 262.991730,379.919098 260.371002,382.167236 258.645172,385.148529 258.645172,389.693817 256.887360,391.062256 255.161514,388.911804 254.522308,386.956848 252.732559,385.197418 253.339798,391.697632 251.709839,392.332977 249.792236,387.738861 248.322067,389.840393 246.724060,393.017212 244.327072,395.412018 242.952774,399.664001 241.514587,403.329529 241.067139,407.337158 239.565018,407.190552 238.318573,407.777039 235.665894,409.096649 233.173004,407.679291 233.141052,401.570068 234.707092,399.712891 235.122574,395.705231 237.231934,393.652588 239.692856,394.434540 241.834183,392.039734 240.843414,387.152374 239.980499,385.099670 240.907349,382.265015 244.550781,379.332581 247.043671,372.685760 247.139542,368.384918 249.121078,365.110352 252.125320,361.151611 254.202728,353.967194 256.503845,350.399414 255.992477,346.684998 255.864655,342.335266 255.832672,339.744965 254.586243,339.353973 254.074875,342.139771 251.581985,340.722412 252.189240,343.654846 251.997467,347.760223 251.294357,352.647583 251.486115,357.632721 248.897354,354.993530 246.915833,355.335632 246.020950,351.670135 245.733307,346.489502 247.778748,340.233704 248.002472,336.763672 247.586990,329.774750 247.299347,324.545258 248.705597,319.315765 251.230438,321.319580 254.234680,326.451324 255.608963,324.154266 255.097595,321.417358 253.915070,321.612854 252.253159,317.702942 254.202728,316.774353 253.883118,313.548676 254.714081,310.469666 254.746033,303.969452 255.001724,293.999268 253.947052,293.070679 252.349030,292.777405 250.495346,290.382599 250.303589,287.938934 249.312836,284.077911 247.235428,279.679291 245.381744,278.261963 242.920822,273.912201 241.546539,269.122559 241.035172,265.408173 242.345535,263.502106 240.555771,258.761383 238.734055,257.979401 236.560776,253.336411 234.131805,249.573120 232.501846,251.185959 230.648163,249.768631 228.315079,245.272247 226.653152,244.343658 225.438675,246.494095 223.808701,245.174515 220.964264,239.896149 219.430176,240.775894 217.672379,242.193222 216.170258,241.069122 212.718582,239.945023 210.257645,239.114182 207.509079,237.647964 205.527557,234.422318 206.805954,234.471191 209.362778,234.520065 210.225693,233.004974 208.979248,230.072571 209.810211,226.993515 210.737045,224.109970 213.325806,224.794220 215.722824,225.967178 216.745544,227.873245 219.781738,227.531128 222.114822,224.549835 224.032425,226.553665 226.844925,229.241714 229.785248,226.700287 230.136795,223.425751 229.721313,220.933197 236.592728,229.290573 241.898102,236.768250 246.564270,244.490280 251.837677,254.704865 255.960541,264.332947 260.115326,276.258118 264.302094,291.995453 267.210449,308.514740 268.393005,320.537628 269.000244,333.538025 268.840424,345.169952 268.201202,356.557495 266.794983,367.358551 265.516571,374.933960 264.877380,375.813690 "
|
||||
id="polyline1488" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1920-260);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="244.774506,357.779327 243.304337,356.313110 242.345535,358.512421 241.131058,362.666687 239.916580,364.817108 238.062897,367.945038 237.615448,372.930145 238.414459,375.324951 239.373245,373.125641 239.852661,368.727020 240.683624,367.602905 241.067139,371.121826 241.290848,375.129456 241.834183,378.452850 243.336304,376.986664 243.528061,376.937775 243.719818,376.888916 243.911591,376.791168 244.071396,376.644531 244.390976,376.351288 244.678635,376.009186 244.934311,375.618195 245.126068,375.324951 245.221939,375.129456 245.285858,375.031708 245.253906,372.490265 244.486862,365.159241 244.199219,361.884705 244.774506,357.779327 "
|
||||
id="polyline1492" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient20143-884);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="262.192749,389.449432 260.115326,391.160004 258.261658,394.287933 256.663635,394.532288 255.992477,392.968323 255.065643,395.802979 253.851151,400.885864 250.783005,404.209290 250.175766,401.276855 249.344803,399.810638 245.573502,402.889679 242.537292,406.213104 240.747543,406.995056 238.126801,409.878601 236.049423,409.976349 233.748291,411.002716 231.606964,415.010315 228.986237,420.826294 226.333542,423.123352 220.996231,428.059601 216.617691,433.680054 213.485611,439.349396 210.385483,446.582703 209.171005,453.278381 210.353516,458.605591 214.220703,458.654480 216.777496,458.752228 218.535294,460.560547 223.648911,456.504028 228.187241,452.252045 232.693619,447.511292 237.775253,441.402100 243.400223,433.386810 247.906586,425.811401 251.677872,418.529236 255.161514,410.611694 258.069885,403.134064 260.690613,394.923279 262.192749,389.449432 "
|
||||
id="polyline1496" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,839 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="128"
|
||||
id="svg1432"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="wsjtx_globe_128x128.svg"
|
||||
sodipodi:version="0.32"
|
||||
width="128"
|
||||
version="1.1">
|
||||
<sodipodi:namedview
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
id="base"
|
||||
inkscape:current-layer="svg1432"
|
||||
inkscape:cx="64"
|
||||
inkscape:cy="64"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-width="1846"
|
||||
inkscape:window-x="72"
|
||||
inkscape:window-y="24"
|
||||
inkscape:zoom="6.875"
|
||||
pagecolor="#ffffff"
|
||||
showborder="false"
|
||||
showguides="true"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-from-guide="true" />
|
||||
<metadata
|
||||
id="metadata3060">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title />
|
||||
<dc:description>Simple globe centered on North America</dc:description>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>earth globe northamerica</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:publisher>
|
||||
<cc:Agent
|
||||
rdf:about="http://www.openclipart.org/">
|
||||
<dc:title>Open Clip Art Library</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:date>May 1, 2005</dc:date>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license
|
||||
rdf:resource="http://web.resource.org/cc/PublicDomain" />
|
||||
<dc:language>en</dc:language>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://web.resource.org/cc/PublicDomain">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs1759">
|
||||
<linearGradient
|
||||
id="linearGradient37658">
|
||||
<stop
|
||||
id="stop37660"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#619afe;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop37662"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#0000e5;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient20137">
|
||||
<stop
|
||||
id="stop20139"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#00f100;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop20141"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00a700;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient20143"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="221.61394"
|
||||
cy="270.08731"
|
||||
fx="221.61394"
|
||||
fy="270.08731"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient37664"
|
||||
inkscape:collect="always"
|
||||
r="112.3373"
|
||||
xlink:href="#linearGradient37658" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1902"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1904"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1906"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1908"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1910"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1912"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1914"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1916"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1918"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1920"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137" />
|
||||
<radialGradient
|
||||
cx="221.61394"
|
||||
cy="270.08731"
|
||||
fx="221.61394"
|
||||
fy="270.08731"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient37664-284"
|
||||
inkscape:collect="always"
|
||||
r="112.3373"
|
||||
xlink:href="#linearGradient37658-332" />
|
||||
<linearGradient
|
||||
id="linearGradient37658-332">
|
||||
<stop
|
||||
id="stop8375"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#7aaafe;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8377"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#0000fe;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1902-108"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-970" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-970">
|
||||
<stop
|
||||
id="stop8381"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8383"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1904-972"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-24" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-24">
|
||||
<stop
|
||||
id="stop8387"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8389"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1906-828"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-376" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-376">
|
||||
<stop
|
||||
id="stop8393"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8395"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1908-502"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-289" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-289">
|
||||
<stop
|
||||
id="stop8399"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8401"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1910-187"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-879" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-879">
|
||||
<stop
|
||||
id="stop8405"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8407"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1912-38"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-891" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-891">
|
||||
<stop
|
||||
id="stop8411"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8413"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1914-119"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-529" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-529">
|
||||
<stop
|
||||
id="stop8417"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8419"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1916-825"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-469" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-469">
|
||||
<stop
|
||||
id="stop8423"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8425"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1918-387"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-981" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-981">
|
||||
<stop
|
||||
id="stop8429"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8431"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1920-264"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-421" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-421">
|
||||
<stop
|
||||
id="stop8435"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8437"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient20143-627"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-58" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-58">
|
||||
<stop
|
||||
id="stop8441"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#0bfe0b;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8443"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00c000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="221.61394"
|
||||
cy="270.08731"
|
||||
fx="221.61394"
|
||||
fy="270.08731"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient37664-284-781"
|
||||
inkscape:collect="always"
|
||||
r="112.3373"
|
||||
xlink:href="#linearGradient37658-332-354" />
|
||||
<linearGradient
|
||||
id="linearGradient37658-332-354">
|
||||
<stop
|
||||
id="stop8612"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#93bafe;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8614"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#1818ff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1902-108-124"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-970-892" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-970-892">
|
||||
<stop
|
||||
id="stop8618"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8620"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1904-972-786"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-24-119" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-24-119">
|
||||
<stop
|
||||
id="stop8624"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8626"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1906-828-861"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-376-597" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-376-597">
|
||||
<stop
|
||||
id="stop8630"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8632"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1908-502-115"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-289-824" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-289-824">
|
||||
<stop
|
||||
id="stop8636"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8638"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1910-187-480"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-879-315" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-879-315">
|
||||
<stop
|
||||
id="stop8642"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8644"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1912-38-980"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-891-460" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-891-460">
|
||||
<stop
|
||||
id="stop8648"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8650"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1914-119-179"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-529-932" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-529-932">
|
||||
<stop
|
||||
id="stop8654"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8656"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1916-825-422"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-469-24" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-469-24">
|
||||
<stop
|
||||
id="stop8660"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8662"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1918-387-755"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-981-521" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-981-521">
|
||||
<stop
|
||||
id="stop8666"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8668"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1920-264-381"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-421-297" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-421-297">
|
||||
<stop
|
||||
id="stop8672"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8674"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="202.06305"
|
||||
cy="297.1124"
|
||||
fx="205.17723"
|
||||
fy="298.37747"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient20143-627-23"
|
||||
inkscape:collect="always"
|
||||
r="188.61865"
|
||||
xlink:href="#linearGradient20137-58-615" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-58-615">
|
||||
<stop
|
||||
id="stop8678"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#24fe24;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop8680"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#00d900;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<desc
|
||||
id="desc1434">wmf2svg</desc>
|
||||
<polyline
|
||||
id="polyline1560"
|
||||
points="103.191467,409.292114 100.730545,403.134064 98.525299,396.927094 96.543777,390.573547 94.785973,384.171082 93.219925,377.622009 91.909569,371.072968 90.790962,364.426147 89.928040,357.779327 89.256882,351.083649 88.777481,344.387970 88.521805,337.692261 88.489838,330.947693 88.681602,324.300873 89.033165,317.605194 89.640404,311.007263 90.407448,304.458221 91.398209,298.006897 92.580727,291.604431 93.986977,285.299744 95.553017,279.092804 97.342781,272.983582 99.324303,267.069916 101.465622,261.253937 103.830666,255.584595 106.387474,250.110733 109.104080,244.783508 112.012444,239.700668 115.112572,234.764420 118.404449,230.072571 121.856140,225.625061 125.499588,221.373062 129.302826,217.414291 133.265884,213.748779 137.260895,210.425354 141.351776,207.444077 145.506577,204.804901 149.725311,202.556717 153.975983,200.601776 158.258652,198.988937 162.573242,197.718231 166.919815,196.789627 171.266373,196.154266 175.644897,195.909912 179.991470,195.909912 184.338043,196.300888 188.652649,196.985123 192.967270,197.962585 197.217941,199.233307 201.468628,200.846130 205.623444,202.801071 209.746277,205.000397 213.805222,207.541809 217.768265,210.376495 221.667389,213.504395 225.470627,216.876678 229.177994,220.591064 232.789490,224.598709 236.273132,228.850708 239.628937,233.444839 242.856903,238.283325 245.957031,243.366180 248.929321,248.791153 251.709839,254.411621 254.362534,260.374207 256.791504,266.483398 258.996704,272.739227 261.010223,279.043915 262.768005,285.495270 264.302094,291.995453 265.644409,298.593384 266.731079,305.191315 267.625946,311.838104 268.297119,318.533813 268.744537,325.278351 269.000244,331.974030 269.032166,338.669739 268.872375,345.365448 268.488861,352.012238 267.913574,358.610168 267.114594,365.159241 266.123840,371.659424 264.941284,378.061890 263.567017,384.366577 261.969025,390.573547 260.211212,396.633850 258.229706,402.596436 256.056396,408.412384 253.723328,414.032837 251.166504,419.555603 248.449905,424.833923 245.509598,429.965668 242.409470,434.853027 239.149536,439.593750 235.697845,444.041260 232.054413,448.244385 228.219193,452.252045 224.288116,455.917542 220.261139,459.240967 216.170258,462.173401 212.015442,464.812561 207.828674,467.109589 203.577988,469.064545 199.263397,470.628510 194.948776,471.899200 190.634186,472.876678 186.255646,473.463196 181.909073,473.756439 177.562500,473.707550 173.215942,473.365448 168.869370,472.681213 164.586731,471.703735 160.304077,470.384155 156.085358,468.771332 151.898590,466.865265 147.807709,464.617065 143.748779,462.124512 139.753769,459.289856 135.854645,456.161926 132.051392,452.740753 128.344025,449.026367 124.764503,445.067596 121.280853,440.766724 117.893089,436.221466 114.665123,431.382996 111.565002,426.251282 108.624680,420.875153 105.812187,415.205811 103.191467,409.292114 "
|
||||
style="fill:url(#radialGradient37664-284-781);fill-opacity:1;stroke:#181818;stroke-width:0.6875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
|
||||
transform="matrix(0.3640721,-0.58678257,0.3795276,0.23777199,-128.13162,89.336986)" />
|
||||
<g
|
||||
id="Continents"
|
||||
inkscape:label="Continents"
|
||||
style="fill:url(#radialGradient1902-108-124);fill-opacity:1;fill-rule:evenodd"
|
||||
transform="matrix(0.67977314,0,0,0.68307417,-61.371653,-142.01634)">
|
||||
<polyline
|
||||
id="polyline1460"
|
||||
points="132.818436,384.610931 131.827682,384.953064 128.184235,388.227600 126.074867,388.667450 123.422180,385.441803 120.417938,385.832794 117.126053,389.107300 116.838409,393.896912 116.902328,400.641479 115.655891,409.292114 114.409447,415.352448 115.432167,418.235992 113.578484,420.386444 111.053642,420.924042 109.903076,422.732361 109.871117,423.172241 116.295090,433.728943 123.262383,443.161530 130.836914,451.421204 140.904327,460.071808 151.195465,466.425385 153.528549,464.470428 157.683365,463.248596 162.509323,463.688446 165.321808,463.835083 165.577484,459.387573 165.066132,457.628113 162.381485,454.793457 158.162750,448.244385 155.094604,442.526184 156.884354,433.680054 153.496597,425.664764 151.738800,419.017975 150.811951,410.220703 147.743790,405.479980 144.579727,397.953430 142.438416,395.851868 141.447662,389.058441 138.858887,386.419281 135.886597,384.855316 133.968994,384.219940 133.201950,380.994293 131.667877,376.351288 131.923553,370.926331 132.850403,369.069122 135.407196,368.140533 137.292847,366.625458 137.452652,362.911041 136.557755,358.316925 134.736038,353.967194 135.886597,352.158844 138.123810,351.914490 141.255890,349.812927 141.223938,346.245178 139.050644,343.557098 136.973236,343.654846 135.471115,341.602142 134.863876,337.643402 135.407196,330.947693 138.219681,327.575439 141.191971,325.571625 145.890106,326.158081 148.510818,330.361237 149.469635,333.635773 149.565506,336.421570 150.588226,338.327637 152.314072,339.891571 153.656403,344.045837 154.135788,348.737701 152.665634,353.771698 151.578995,357.730469 152.985229,359.587646 155.094604,356.557495 156.468872,353.234070 159.153519,351.572388 161.870132,351.474609 165.865143,353.967194 168.517807,355.237885 171.458130,352.696472 175.389221,351.425751 178.457397,351.621246 179.416199,352.940857 181.301834,352.403229 184.497833,352.452087 185.968002,353.918335 186.095840,356.704102 187.949539,357.143951 190.602203,359.392151 192.551788,361.004974 193.670380,358.610168 191.912582,355.482269 191.561020,353.576202 193.095093,351.767883 192.583740,349.030945 190.442413,347.906860 188.620697,346.147400 189.259888,345.169952 191.976501,346.049652 195.044662,348.835449 196.259140,351.230255 198.624191,353.771698 200.733551,353.282928 202.363510,350.057312 203.609955,343.996979 204.153275,334.710999 202.906830,330.752228 202.331558,328.406281 203.258408,324.594147 202.459396,316.676605 201.053146,314.819397 198.496353,317.311981 195.300339,320.781982 194.788971,323.567780 192.871368,323.518921 189.739288,325.669373 186.894852,327.477692 187.342285,323.470032 188.524796,319.755646 190.666138,317.311981 190.314575,313.450958 189.132050,308.123718 190.090851,304.898071 193.734299,301.965637 197.601471,302.063385 202.107834,303.773987 205.559525,305.875519 207.796722,306.217651 208.435928,302.698761 206.678116,300.548309 206.038925,296.980560 207.796722,294.585724 209.490601,292.581909 208.627686,290.529205 205.783249,292.386414 203.961517,291.555573 204.057388,289.258514 207.189484,286.130615 208.787491,282.953796 208.627686,279.532684 209.874130,275.427277 208.276123,272.152740 206.198730,271.273010 205.783249,275.231781 204.185242,277.479980 203.929565,281.927460 201.788239,283.393677 202.715073,269.513580 203.546036,261.938171 204.888351,257.050812 206.997711,254.998108 209.426682,251.283707 209.171005,248.595657 207.541046,244.734634 206.262650,243.708313 205.687363,241.362366 204.600723,239.211929 202.715073,239.798416 201.276871,239.896149 200.030426,234.959930 197.697342,233.395966 194.916824,233.884705 192.743546,234.715546 191.976501,231.929764 192.264130,228.068741 190.698090,230.903412 191.145538,235.986282 191.912582,241.362366 192.104340,246.347473 190.154770,250.208496 187.406204,253.238663 182.548279,255.780090 177.338791,257.979401 173.695343,260.911804 171.745789,262.866760 169.956009,265.603668 166.696106,264.919464 162.924805,265.066071 158.290604,266.092438 153.464630,269.220306 146.944778,274.352051 145.091095,277.479980 141.671371,283.442566 138.954773,288.036682 135.918564,293.950378 135.119568,298.593384 135.503082,301.476929 136.334045,297.420410 138.091858,294.048126 140.361008,290.871338 142.310577,287.987793 143.365265,289.502869 141.959015,292.190948 138.283615,298.055786 135.087601,306.071045 132.946274,309.492188 130.900833,310.176422 129.686356,314.330688 130.069870,319.755646 128.919312,329.628113 129.494598,334.515503 130.677109,341.797638 131.603958,350.546021 131.540024,355.482269 130.964752,360.565125 128.280106,366.772064 129.047150,373.125641 129.654404,377.084412 131.476105,380.456665 132.818436,384.610931 "
|
||||
style="fill:url(#radialGradient1904-972-786);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1464"
|
||||
points="144.579727,355.237885 146.497345,357.241699 147.583984,362.324585 148.638672,368.384918 149.980988,372.539154 150.364502,377.035553 148.798477,377.279877 146.753021,373.467743 146.976746,368.433777 146.593216,362.959930 144.579727,355.237885 "
|
||||
style="fill:url(#radialGradient1906-828-861);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1468"
|
||||
points="150.108826,378.892731 148.830429,379.870209 149.309830,383.584595 150.172745,386.614777 152.633667,390.964508 152.505829,386.565887 153.336792,386.077148 153.017197,383.780090 150.108826,378.892731 "
|
||||
style="fill:url(#radialGradient1908-502-115);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1472"
|
||||
points="201.181000,353.820557 200.797470,356.459747 200.413956,361.053864 199.966507,365.990082 199.007706,368.238281 196.866379,363.204285 197.921066,357.681580 199.103592,354.895782 201.181000,353.820557 "
|
||||
style="fill:url(#radialGradient1910-187-480);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1476"
|
||||
points="204.632675,320.342133 203.993469,316.774353 202.906830,312.668976 206.230682,314.575043 208.883362,312.277985 209.842163,309.052338 208.915314,303.822876 208.563766,299.961853 209.874130,294.487976 212.430923,295.514343 213.261887,299.570862 213.581497,305.386810 213.837173,310.958405 212.111328,314.917175 211.951538,317.018738 212.335052,321.466217 210.800964,325.913727 208.691605,325.376099 206.454407,326.646820 205.016205,324.203125 204.632675,320.342133 "
|
||||
style="fill:url(#radialGradient1912-38-980);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1480"
|
||||
points="213.773254,334.955322 213.709335,340.820160 213.869125,343.263885 216.362015,346.636139 219.526062,350.594910 218.695099,344.632324 219.685867,341.406677 222.722061,339.060730 227.835663,334.662109 230.648163,335.786194 233.332809,333.147003 234.355515,326.011475 234.675125,319.218048 233.556534,312.522369 233.588486,306.071045 231.511078,300.646057 228.890350,297.420410 226.365509,296.980560 225.246902,294.830109 226.365509,293.461639 225.023193,290.235992 222.338547,287.401337 220.964264,289.698364 217.352783,290.675842 216.330063,294.292480 216.362015,299.375336 220.644653,297.469269 222.754028,297.958038 220.708588,301.623535 219.941544,306.852997 220.293106,310.714020 219.845657,317.654083 219.078629,323.909912 214.955765,329.237122 215.083618,333.000397 213.773254,334.955322 "
|
||||
style="fill:url(#radialGradient1914-119-179);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1484"
|
||||
points="232.533813,338.767487 230.200729,341.748779 229.401718,344.436798 229.721313,347.662476 233.460648,348.542206 237.040161,346.929382 237.231934,342.872864 235.378250,340.478088 233.620453,340.282562 232.533813,338.767487 "
|
||||
style="fill:url(#radialGradient1916-825-422);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1488"
|
||||
points="264.877380,375.813690 262.991730,379.919098 260.371002,382.167236 258.645172,385.148529 258.645172,389.693817 256.887360,391.062256 255.161514,388.911804 254.522308,386.956848 252.732559,385.197418 253.339798,391.697632 251.709839,392.332977 249.792236,387.738861 248.322067,389.840393 246.724060,393.017212 244.327072,395.412018 242.952774,399.664001 241.514587,403.329529 241.067139,407.337158 239.565018,407.190552 238.318573,407.777039 235.665894,409.096649 233.173004,407.679291 233.141052,401.570068 234.707092,399.712891 235.122574,395.705231 237.231934,393.652588 239.692856,394.434540 241.834183,392.039734 240.843414,387.152374 239.980499,385.099670 240.907349,382.265015 244.550781,379.332581 247.043671,372.685760 247.139542,368.384918 249.121078,365.110352 252.125320,361.151611 254.202728,353.967194 256.503845,350.399414 255.992477,346.684998 255.864655,342.335266 255.832672,339.744965 254.586243,339.353973 254.074875,342.139771 251.581985,340.722412 252.189240,343.654846 251.997467,347.760223 251.294357,352.647583 251.486115,357.632721 248.897354,354.993530 246.915833,355.335632 246.020950,351.670135 245.733307,346.489502 247.778748,340.233704 248.002472,336.763672 247.586990,329.774750 247.299347,324.545258 248.705597,319.315765 251.230438,321.319580 254.234680,326.451324 255.608963,324.154266 255.097595,321.417358 253.915070,321.612854 252.253159,317.702942 254.202728,316.774353 253.883118,313.548676 254.714081,310.469666 254.746033,303.969452 255.001724,293.999268 253.947052,293.070679 252.349030,292.777405 250.495346,290.382599 250.303589,287.938934 249.312836,284.077911 247.235428,279.679291 245.381744,278.261963 242.920822,273.912201 241.546539,269.122559 241.035172,265.408173 242.345535,263.502106 240.555771,258.761383 238.734055,257.979401 236.560776,253.336411 234.131805,249.573120 232.501846,251.185959 230.648163,249.768631 228.315079,245.272247 226.653152,244.343658 225.438675,246.494095 223.808701,245.174515 220.964264,239.896149 219.430176,240.775894 217.672379,242.193222 216.170258,241.069122 212.718582,239.945023 210.257645,239.114182 207.509079,237.647964 205.527557,234.422318 206.805954,234.471191 209.362778,234.520065 210.225693,233.004974 208.979248,230.072571 209.810211,226.993515 210.737045,224.109970 213.325806,224.794220 215.722824,225.967178 216.745544,227.873245 219.781738,227.531128 222.114822,224.549835 224.032425,226.553665 226.844925,229.241714 229.785248,226.700287 230.136795,223.425751 229.721313,220.933197 236.592728,229.290573 241.898102,236.768250 246.564270,244.490280 251.837677,254.704865 255.960541,264.332947 260.115326,276.258118 264.302094,291.995453 267.210449,308.514740 268.393005,320.537628 269.000244,333.538025 268.840424,345.169952 268.201202,356.557495 266.794983,367.358551 265.516571,374.933960 264.877380,375.813690 "
|
||||
style="fill:url(#radialGradient1918-387-755);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1492"
|
||||
points="244.774506,357.779327 243.304337,356.313110 242.345535,358.512421 241.131058,362.666687 239.916580,364.817108 238.062897,367.945038 237.615448,372.930145 238.414459,375.324951 239.373245,373.125641 239.852661,368.727020 240.683624,367.602905 241.067139,371.121826 241.290848,375.129456 241.834183,378.452850 243.336304,376.986664 243.528061,376.937775 243.719818,376.888916 243.911591,376.791168 244.071396,376.644531 244.390976,376.351288 244.678635,376.009186 244.934311,375.618195 245.126068,375.324951 245.221939,375.129456 245.285858,375.031708 245.253906,372.490265 244.486862,365.159241 244.199219,361.884705 244.774506,357.779327 "
|
||||
style="fill:url(#radialGradient1920-264-381);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
<polyline
|
||||
id="polyline1496"
|
||||
points="262.192749,389.449432 260.115326,391.160004 258.261658,394.287933 256.663635,394.532288 255.992477,392.968323 255.065643,395.802979 253.851151,400.885864 250.783005,404.209290 250.175766,401.276855 249.344803,399.810638 245.573502,402.889679 242.537292,406.213104 240.747543,406.995056 238.126801,409.878601 236.049423,409.976349 233.748291,411.002716 231.606964,415.010315 228.986237,420.826294 226.333542,423.123352 220.996231,428.059601 216.617691,433.680054 213.485611,439.349396 210.385483,446.582703 209.171005,453.278381 210.353516,458.605591 214.220703,458.654480 216.777496,458.752228 218.535294,460.560547 223.648911,456.504028 228.187241,452.252045 232.693619,447.511292 237.775253,441.402100 243.400223,433.386810 247.906586,425.811401 251.677872,418.529236 255.161514,410.611694 258.069885,403.134064 260.690613,394.923279 262.192749,389.449432 "
|
||||
style="fill:url(#radialGradient20143-627-23);stroke:#181818;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 40 KiB |
@@ -1,602 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/home/bill/Dropbox/src/wsjtx-dev/icons/windows-icons/icon_1024x1024.png"
|
||||
version="1.1"
|
||||
width="1024"
|
||||
sodipodi:version="0.32"
|
||||
sodipodi:docname="wsjtx_globe_1024x1024.svg"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
id="svg1432"
|
||||
height="1024">
|
||||
<sodipodi:namedview
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
id="base"
|
||||
inkscape:current-layer="svg1432"
|
||||
inkscape:cx="512"
|
||||
inkscape:cy="512"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-height="858"
|
||||
inkscape:window-width="1114"
|
||||
inkscape:window-x="72"
|
||||
inkscape:window-y="31"
|
||||
inkscape:zoom="0.69433594"
|
||||
pagecolor="#ffffff"
|
||||
showborder="true"
|
||||
showguides="true"
|
||||
showgrid="false"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata3060">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title />
|
||||
<dc:description>Simple globe centered on North America</dc:description>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>earth globe northamerica</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:publisher>
|
||||
<cc:Agent
|
||||
rdf:about="http://www.openclipart.org/">
|
||||
<dc:title>Open Clip Art Library</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Dan Gerhrads</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:date>May 1, 2005</dc:date>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license
|
||||
rdf:resource="http://web.resource.org/cc/PublicDomain" />
|
||||
<dc:language>en</dc:language>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://web.resource.org/cc/PublicDomain">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs1759">
|
||||
<linearGradient
|
||||
id="linearGradient37658">
|
||||
<stop
|
||||
style="stop-color:#2f7aff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop37660" />
|
||||
<stop
|
||||
style="stop-color:#0000b3;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop37662" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient20137">
|
||||
<stop
|
||||
style="stop-color:#00bf00;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop20139" />
|
||||
<stop
|
||||
style="stop-color:#007500;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop20141" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient20143"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient37658"
|
||||
r="112.3373"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient37664"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
fy="270.08731"
|
||||
fx="221.61394"
|
||||
cy="270.08731"
|
||||
cx="221.61394" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1902"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1904"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1906"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1908"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1910"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1912"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1914"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1916"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1918"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1920"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient37658-427"
|
||||
r="112.3373"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient37664-403"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.806632,1.239722)"
|
||||
fy="270.08731"
|
||||
fx="221.61394"
|
||||
cy="270.08731"
|
||||
cx="221.61394" />
|
||||
<linearGradient
|
||||
id="linearGradient37658-427">
|
||||
<stop
|
||||
style="stop-color:#488afe;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7178" />
|
||||
<stop
|
||||
style="stop-color:#0000cc;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7180" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-396"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1902-893"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-396">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7184" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7186" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-527"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1904-666"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-527">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7190" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7192" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-774"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1906-717"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-774">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7196" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7198" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-253"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1908-922"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-253">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7202" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7204" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-972"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1910-261"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-972">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7208" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7210" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-945"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1912-713"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-945">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7214" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7216" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-600"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1914-146"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-600">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7220" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7222" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-196"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1916-817"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-196">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7226" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7228" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-388"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1918-23"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-388">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7232" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7234" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-202"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient1920-260"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-202">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7238" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7240" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient20137-151"
|
||||
r="188.61865"
|
||||
inkscape:collect="always"
|
||||
id="radialGradient20143-884"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(0.893959,1.11862)"
|
||||
fy="298.37747"
|
||||
fx="205.17723"
|
||||
cy="297.1124"
|
||||
cx="202.06305" />
|
||||
<linearGradient
|
||||
id="linearGradient20137-151">
|
||||
<stop
|
||||
style="stop-color:#00d800;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop7244" />
|
||||
<stop
|
||||
style="stop-color:#008e00;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop7246" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<desc
|
||||
id="desc1434">wmf2svg</desc>
|
||||
<polyline
|
||||
transform="matrix(2.2285926,-3.5745108,2.3232002,1.4484387,-677.00545,692.67468)"
|
||||
style="fill:url(#radialGradient37664-403);fill-opacity:1;stroke:#0c0c0c;stroke-width:0.6875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
|
||||
points="103.191467,409.292114 100.730545,403.134064 98.525299,396.927094 96.543777,390.573547 94.785973,384.171082 93.219925,377.622009 91.909569,371.072968 90.790962,364.426147 89.928040,357.779327 89.256882,351.083649 88.777481,344.387970 88.521805,337.692261 88.489838,330.947693 88.681602,324.300873 89.033165,317.605194 89.640404,311.007263 90.407448,304.458221 91.398209,298.006897 92.580727,291.604431 93.986977,285.299744 95.553017,279.092804 97.342781,272.983582 99.324303,267.069916 101.465622,261.253937 103.830666,255.584595 106.387474,250.110733 109.104080,244.783508 112.012444,239.700668 115.112572,234.764420 118.404449,230.072571 121.856140,225.625061 125.499588,221.373062 129.302826,217.414291 133.265884,213.748779 137.260895,210.425354 141.351776,207.444077 145.506577,204.804901 149.725311,202.556717 153.975983,200.601776 158.258652,198.988937 162.573242,197.718231 166.919815,196.789627 171.266373,196.154266 175.644897,195.909912 179.991470,195.909912 184.338043,196.300888 188.652649,196.985123 192.967270,197.962585 197.217941,199.233307 201.468628,200.846130 205.623444,202.801071 209.746277,205.000397 213.805222,207.541809 217.768265,210.376495 221.667389,213.504395 225.470627,216.876678 229.177994,220.591064 232.789490,224.598709 236.273132,228.850708 239.628937,233.444839 242.856903,238.283325 245.957031,243.366180 248.929321,248.791153 251.709839,254.411621 254.362534,260.374207 256.791504,266.483398 258.996704,272.739227 261.010223,279.043915 262.768005,285.495270 264.302094,291.995453 265.644409,298.593384 266.731079,305.191315 267.625946,311.838104 268.297119,318.533813 268.744537,325.278351 269.000244,331.974030 269.032166,338.669739 268.872375,345.365448 268.488861,352.012238 267.913574,358.610168 267.114594,365.159241 266.123840,371.659424 264.941284,378.061890 263.567017,384.366577 261.969025,390.573547 260.211212,396.633850 258.229706,402.596436 256.056396,408.412384 253.723328,414.032837 251.166504,419.555603 248.449905,424.833923 245.509598,429.965668 242.409470,434.853027 239.149536,439.593750 235.697845,444.041260 232.054413,448.244385 228.219193,452.252045 224.288116,455.917542 220.261139,459.240967 216.170258,462.173401 212.015442,464.812561 207.828674,467.109589 203.577988,469.064545 199.263397,470.628510 194.948776,471.899200 190.634186,472.876678 186.255646,473.463196 181.909073,473.756439 177.562500,473.707550 173.215942,473.365448 168.869370,472.681213 164.586731,471.703735 160.304077,470.384155 156.085358,468.771332 151.898590,466.865265 147.807709,464.617065 143.748779,462.124512 139.753769,459.289856 135.854645,456.161926 132.051392,452.740753 128.344025,449.026367 124.764503,445.067596 121.280853,440.766724 117.893089,436.221466 114.665123,431.382996 111.565002,426.251282 108.624680,420.875153 105.812187,415.205811 103.191467,409.292114 "
|
||||
id="polyline1560" />
|
||||
<g
|
||||
transform="matrix(4.1610916,0,0,4.1610916,-268.34786,-716.6628)"
|
||||
style="fill:url(#radialGradient1902-893);fill-opacity:1;fill-rule:evenodd"
|
||||
inkscape:label="Continents"
|
||||
id="Continents">
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1904-666);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="132.818436,384.610931 131.827682,384.953064 128.184235,388.227600 126.074867,388.667450 123.422180,385.441803 120.417938,385.832794 117.126053,389.107300 116.838409,393.896912 116.902328,400.641479 115.655891,409.292114 114.409447,415.352448 115.432167,418.235992 113.578484,420.386444 111.053642,420.924042 109.903076,422.732361 109.871117,423.172241 116.295090,433.728943 123.262383,443.161530 130.836914,451.421204 140.904327,460.071808 151.195465,466.425385 153.528549,464.470428 157.683365,463.248596 162.509323,463.688446 165.321808,463.835083 165.577484,459.387573 165.066132,457.628113 162.381485,454.793457 158.162750,448.244385 155.094604,442.526184 156.884354,433.680054 153.496597,425.664764 151.738800,419.017975 150.811951,410.220703 147.743790,405.479980 144.579727,397.953430 142.438416,395.851868 141.447662,389.058441 138.858887,386.419281 135.886597,384.855316 133.968994,384.219940 133.201950,380.994293 131.667877,376.351288 131.923553,370.926331 132.850403,369.069122 135.407196,368.140533 137.292847,366.625458 137.452652,362.911041 136.557755,358.316925 134.736038,353.967194 135.886597,352.158844 138.123810,351.914490 141.255890,349.812927 141.223938,346.245178 139.050644,343.557098 136.973236,343.654846 135.471115,341.602142 134.863876,337.643402 135.407196,330.947693 138.219681,327.575439 141.191971,325.571625 145.890106,326.158081 148.510818,330.361237 149.469635,333.635773 149.565506,336.421570 150.588226,338.327637 152.314072,339.891571 153.656403,344.045837 154.135788,348.737701 152.665634,353.771698 151.578995,357.730469 152.985229,359.587646 155.094604,356.557495 156.468872,353.234070 159.153519,351.572388 161.870132,351.474609 165.865143,353.967194 168.517807,355.237885 171.458130,352.696472 175.389221,351.425751 178.457397,351.621246 179.416199,352.940857 181.301834,352.403229 184.497833,352.452087 185.968002,353.918335 186.095840,356.704102 187.949539,357.143951 190.602203,359.392151 192.551788,361.004974 193.670380,358.610168 191.912582,355.482269 191.561020,353.576202 193.095093,351.767883 192.583740,349.030945 190.442413,347.906860 188.620697,346.147400 189.259888,345.169952 191.976501,346.049652 195.044662,348.835449 196.259140,351.230255 198.624191,353.771698 200.733551,353.282928 202.363510,350.057312 203.609955,343.996979 204.153275,334.710999 202.906830,330.752228 202.331558,328.406281 203.258408,324.594147 202.459396,316.676605 201.053146,314.819397 198.496353,317.311981 195.300339,320.781982 194.788971,323.567780 192.871368,323.518921 189.739288,325.669373 186.894852,327.477692 187.342285,323.470032 188.524796,319.755646 190.666138,317.311981 190.314575,313.450958 189.132050,308.123718 190.090851,304.898071 193.734299,301.965637 197.601471,302.063385 202.107834,303.773987 205.559525,305.875519 207.796722,306.217651 208.435928,302.698761 206.678116,300.548309 206.038925,296.980560 207.796722,294.585724 209.490601,292.581909 208.627686,290.529205 205.783249,292.386414 203.961517,291.555573 204.057388,289.258514 207.189484,286.130615 208.787491,282.953796 208.627686,279.532684 209.874130,275.427277 208.276123,272.152740 206.198730,271.273010 205.783249,275.231781 204.185242,277.479980 203.929565,281.927460 201.788239,283.393677 202.715073,269.513580 203.546036,261.938171 204.888351,257.050812 206.997711,254.998108 209.426682,251.283707 209.171005,248.595657 207.541046,244.734634 206.262650,243.708313 205.687363,241.362366 204.600723,239.211929 202.715073,239.798416 201.276871,239.896149 200.030426,234.959930 197.697342,233.395966 194.916824,233.884705 192.743546,234.715546 191.976501,231.929764 192.264130,228.068741 190.698090,230.903412 191.145538,235.986282 191.912582,241.362366 192.104340,246.347473 190.154770,250.208496 187.406204,253.238663 182.548279,255.780090 177.338791,257.979401 173.695343,260.911804 171.745789,262.866760 169.956009,265.603668 166.696106,264.919464 162.924805,265.066071 158.290604,266.092438 153.464630,269.220306 146.944778,274.352051 145.091095,277.479980 141.671371,283.442566 138.954773,288.036682 135.918564,293.950378 135.119568,298.593384 135.503082,301.476929 136.334045,297.420410 138.091858,294.048126 140.361008,290.871338 142.310577,287.987793 143.365265,289.502869 141.959015,292.190948 138.283615,298.055786 135.087601,306.071045 132.946274,309.492188 130.900833,310.176422 129.686356,314.330688 130.069870,319.755646 128.919312,329.628113 129.494598,334.515503 130.677109,341.797638 131.603958,350.546021 131.540024,355.482269 130.964752,360.565125 128.280106,366.772064 129.047150,373.125641 129.654404,377.084412 131.476105,380.456665 132.818436,384.610931 "
|
||||
id="polyline1460" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1906-717);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="144.579727,355.237885 146.497345,357.241699 147.583984,362.324585 148.638672,368.384918 149.980988,372.539154 150.364502,377.035553 148.798477,377.279877 146.753021,373.467743 146.976746,368.433777 146.593216,362.959930 144.579727,355.237885 "
|
||||
id="polyline1464" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1908-922);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="150.108826,378.892731 148.830429,379.870209 149.309830,383.584595 150.172745,386.614777 152.633667,390.964508 152.505829,386.565887 153.336792,386.077148 153.017197,383.780090 150.108826,378.892731 "
|
||||
id="polyline1468" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1910-261);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="201.181000,353.820557 200.797470,356.459747 200.413956,361.053864 199.966507,365.990082 199.007706,368.238281 196.866379,363.204285 197.921066,357.681580 199.103592,354.895782 201.181000,353.820557 "
|
||||
id="polyline1472" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1912-713);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="204.632675,320.342133 203.993469,316.774353 202.906830,312.668976 206.230682,314.575043 208.883362,312.277985 209.842163,309.052338 208.915314,303.822876 208.563766,299.961853 209.874130,294.487976 212.430923,295.514343 213.261887,299.570862 213.581497,305.386810 213.837173,310.958405 212.111328,314.917175 211.951538,317.018738 212.335052,321.466217 210.800964,325.913727 208.691605,325.376099 206.454407,326.646820 205.016205,324.203125 204.632675,320.342133 "
|
||||
id="polyline1476" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1914-146);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="213.773254,334.955322 213.709335,340.820160 213.869125,343.263885 216.362015,346.636139 219.526062,350.594910 218.695099,344.632324 219.685867,341.406677 222.722061,339.060730 227.835663,334.662109 230.648163,335.786194 233.332809,333.147003 234.355515,326.011475 234.675125,319.218048 233.556534,312.522369 233.588486,306.071045 231.511078,300.646057 228.890350,297.420410 226.365509,296.980560 225.246902,294.830109 226.365509,293.461639 225.023193,290.235992 222.338547,287.401337 220.964264,289.698364 217.352783,290.675842 216.330063,294.292480 216.362015,299.375336 220.644653,297.469269 222.754028,297.958038 220.708588,301.623535 219.941544,306.852997 220.293106,310.714020 219.845657,317.654083 219.078629,323.909912 214.955765,329.237122 215.083618,333.000397 213.773254,334.955322 "
|
||||
id="polyline1480" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1916-817);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="232.533813,338.767487 230.200729,341.748779 229.401718,344.436798 229.721313,347.662476 233.460648,348.542206 237.040161,346.929382 237.231934,342.872864 235.378250,340.478088 233.620453,340.282562 232.533813,338.767487 "
|
||||
id="polyline1484" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1918-23);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="264.877380,375.813690 262.991730,379.919098 260.371002,382.167236 258.645172,385.148529 258.645172,389.693817 256.887360,391.062256 255.161514,388.911804 254.522308,386.956848 252.732559,385.197418 253.339798,391.697632 251.709839,392.332977 249.792236,387.738861 248.322067,389.840393 246.724060,393.017212 244.327072,395.412018 242.952774,399.664001 241.514587,403.329529 241.067139,407.337158 239.565018,407.190552 238.318573,407.777039 235.665894,409.096649 233.173004,407.679291 233.141052,401.570068 234.707092,399.712891 235.122574,395.705231 237.231934,393.652588 239.692856,394.434540 241.834183,392.039734 240.843414,387.152374 239.980499,385.099670 240.907349,382.265015 244.550781,379.332581 247.043671,372.685760 247.139542,368.384918 249.121078,365.110352 252.125320,361.151611 254.202728,353.967194 256.503845,350.399414 255.992477,346.684998 255.864655,342.335266 255.832672,339.744965 254.586243,339.353973 254.074875,342.139771 251.581985,340.722412 252.189240,343.654846 251.997467,347.760223 251.294357,352.647583 251.486115,357.632721 248.897354,354.993530 246.915833,355.335632 246.020950,351.670135 245.733307,346.489502 247.778748,340.233704 248.002472,336.763672 247.586990,329.774750 247.299347,324.545258 248.705597,319.315765 251.230438,321.319580 254.234680,326.451324 255.608963,324.154266 255.097595,321.417358 253.915070,321.612854 252.253159,317.702942 254.202728,316.774353 253.883118,313.548676 254.714081,310.469666 254.746033,303.969452 255.001724,293.999268 253.947052,293.070679 252.349030,292.777405 250.495346,290.382599 250.303589,287.938934 249.312836,284.077911 247.235428,279.679291 245.381744,278.261963 242.920822,273.912201 241.546539,269.122559 241.035172,265.408173 242.345535,263.502106 240.555771,258.761383 238.734055,257.979401 236.560776,253.336411 234.131805,249.573120 232.501846,251.185959 230.648163,249.768631 228.315079,245.272247 226.653152,244.343658 225.438675,246.494095 223.808701,245.174515 220.964264,239.896149 219.430176,240.775894 217.672379,242.193222 216.170258,241.069122 212.718582,239.945023 210.257645,239.114182 207.509079,237.647964 205.527557,234.422318 206.805954,234.471191 209.362778,234.520065 210.225693,233.004974 208.979248,230.072571 209.810211,226.993515 210.737045,224.109970 213.325806,224.794220 215.722824,225.967178 216.745544,227.873245 219.781738,227.531128 222.114822,224.549835 224.032425,226.553665 226.844925,229.241714 229.785248,226.700287 230.136795,223.425751 229.721313,220.933197 236.592728,229.290573 241.898102,236.768250 246.564270,244.490280 251.837677,254.704865 255.960541,264.332947 260.115326,276.258118 264.302094,291.995453 267.210449,308.514740 268.393005,320.537628 269.000244,333.538025 268.840424,345.169952 268.201202,356.557495 266.794983,367.358551 265.516571,374.933960 264.877380,375.813690 "
|
||||
id="polyline1488" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient1920-260);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="244.774506,357.779327 243.304337,356.313110 242.345535,358.512421 241.131058,362.666687 239.916580,364.817108 238.062897,367.945038 237.615448,372.930145 238.414459,375.324951 239.373245,373.125641 239.852661,368.727020 240.683624,367.602905 241.067139,371.121826 241.290848,375.129456 241.834183,378.452850 243.336304,376.986664 243.528061,376.937775 243.719818,376.888916 243.911591,376.791168 244.071396,376.644531 244.390976,376.351288 244.678635,376.009186 244.934311,375.618195 245.126068,375.324951 245.221939,375.129456 245.285858,375.031708 245.253906,372.490265 244.486862,365.159241 244.199219,361.884705 244.774506,357.779327 "
|
||||
id="polyline1492" />
|
||||
<polyline
|
||||
transform="matrix(0.535579,-0.859032,0.558315,0.348091,-98.20917,338.6942)"
|
||||
style="fill:url(#radialGradient20143-884);stroke:#0c0c0c;stroke-width:0.444585;stroke-linecap:round;stroke-linejoin:round"
|
||||
points="262.192749,389.449432 260.115326,391.160004 258.261658,394.287933 256.663635,394.532288 255.992477,392.968323 255.065643,395.802979 253.851151,400.885864 250.783005,404.209290 250.175766,401.276855 249.344803,399.810638 245.573502,402.889679 242.537292,406.213104 240.747543,406.995056 238.126801,409.878601 236.049423,409.976349 233.748291,411.002716 231.606964,415.010315 228.986237,420.826294 226.333542,423.123352 220.996231,428.059601 216.617691,433.680054 213.485611,439.349396 210.385483,446.582703 209.171005,453.278381 210.353516,458.605591 214.220703,458.654480 216.777496,458.752228 218.535294,460.560547 223.648911,456.504028 228.187241,452.252045 232.693619,447.511292 237.775253,441.402100 243.400223,433.386810 247.906586,425.811401 251.677872,418.529236 255.161514,410.611694 258.069885,403.134064 260.690613,394.923279 262.192749,389.449432 "
|
||||
id="polyline1496" />
|
||||
</g>
|
||||
<text
|
||||
transform="matrix(0.98267844,-0.18531886,0.18531886,0.98267844,0,0)"
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3096"
|
||||
y="456.47293"
|
||||
x="394.15689"
|
||||
style="font-size:187.56237793000002512px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff8119;fill-opacity:0.77168947;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
|
||||
xml:space="preserve"><tspan
|
||||
dy="-109.78781"
|
||||
dx="0 -9.8032694 -11.763925 -17.645885"
|
||||
id="tspan3102"
|
||||
y="456.47293"
|
||||
x="394.15692"
|
||||
sodipodi:role="line">WSJT-X</tspan><tspan
|
||||
dx="0 -17.645885 -23.527849 -13.724579 29.30662 29.30662 -17.645885 -23.527849"
|
||||
id="tspan3874"
|
||||
y="690.92584"
|
||||
x="394.15689"
|
||||
sodipodi:role="line">JT65&JT9</tspan><tspan
|
||||
dy="91.489815"
|
||||
dx="0 0 0 0 -17.645885 -5.8819623 -17.645885"
|
||||
id="tspan3100"
|
||||
y="925.37885"
|
||||
x="394.15689"
|
||||
sodipodi:role="line">by K1JT</tspan></text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 33 KiB |
@@ -108,7 +108,8 @@ bool DecodedText::tryUnpackBeacon(){
|
||||
|
||||
bool isAlt = false;
|
||||
quint8 type = Varicode::FrameUnknown;
|
||||
QStringList parts = Varicode::unpackBeaconMessage(m, &type, &isAlt);
|
||||
quint8 bits3 = 0;
|
||||
QStringList parts = Varicode::unpackBeaconMessage(m, &type, &isAlt, &bits3);
|
||||
|
||||
if(parts.isEmpty() || parts.length() < 2){
|
||||
return false;
|
||||
@@ -130,7 +131,7 @@ bool DecodedText::tryUnpackBeacon(){
|
||||
cmp.append(parts.at(1));
|
||||
}
|
||||
compound_ = cmp.join("/");
|
||||
message_ = QString("%1: %2 %3 ").arg(compound_).arg(isAlt ? "CQCQCQ" : "BEACON").arg(extra_);
|
||||
message_ = QString("%1: %2 %3 ").arg(compound_).arg(isAlt ? Varicode::cqString(bits3) : "BEACON").arg(extra_);
|
||||
frameType_ = type;
|
||||
return true;
|
||||
}
|
||||
@@ -143,7 +144,8 @@ bool DecodedText::tryUnpackCompound(){
|
||||
}
|
||||
|
||||
quint8 type = Varicode::FrameUnknown;
|
||||
auto parts = Varicode::unpackCompoundMessage(m, &type);
|
||||
quint8 bits3 = 0;
|
||||
auto parts = Varicode::unpackCompoundMessage(m, &type, &bits3);
|
||||
if(parts.isEmpty() || parts.length() < 2){
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ Version=1.0
|
||||
Name=ft8call
|
||||
Comment=Amateur Radio Weak Signal Operating
|
||||
Exec=ft8call
|
||||
Icon=wsjtx_icon
|
||||
Icon=ft8call_icon
|
||||
Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Type=Application
|
||||
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 571 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 571 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 246 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 538 KiB |
@@ -0,0 +1,29 @@
|
||||
#include "keyeater.h"
|
||||
|
||||
bool EscapeKeyPressEater::eventFilter(QObject *obj, QEvent *event){
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
||||
if(keyEvent->key() == Qt::Key_Escape){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// standard event processing
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
bool EnterKeyPressEater::eventFilter(QObject *obj, QEvent *event){
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
||||
if(keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return){
|
||||
bool processed = false;
|
||||
emit this->enterKeyPressed(obj, keyEvent, &processed);
|
||||
if(processed){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// standard event processing
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef KEYEATER_H
|
||||
#define KEYEATER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QKeyEvent>
|
||||
|
||||
class EscapeKeyPressEater : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EscapeKeyPressEater(){}
|
||||
virtual ~EscapeKeyPressEater(){}
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
};
|
||||
|
||||
class EnterKeyPressEater : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EnterKeyPressEater(){}
|
||||
virtual ~EnterKeyPressEater(){}
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
public:
|
||||
Q_SIGNAL void enterKeyPressed(QObject *obj, QKeyEvent *evt, bool *pProcessed);
|
||||
};
|
||||
|
||||
|
||||
#endif // KEYEATER_H
|
||||
@@ -16,7 +16,7 @@ subroutine chkcrc12a(decoded,nbadcrc)
|
||||
i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32)
|
||||
i1Dec8BitBytes(11)=0
|
||||
icrc12=crc12(c_loc(i1Dec8BitBytes),11) !CRC12 computed from 75 msg bits
|
||||
icrc12=xor(icrc12, 42)
|
||||
icrc12=xor(icrc12, 41)
|
||||
|
||||
nbadcrc=1
|
||||
if(ncrc12.eq.icrc12) nbadcrc=0
|
||||
|
||||
@@ -22,7 +22,7 @@ subroutine extractmessage174(decoded,msgreceived,ncrcflag)
|
||||
i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32)
|
||||
i1Dec8BitBytes(11)=0
|
||||
icrc12=crc12(c_loc(i1Dec8BitBytes),11) !CRC12 computed from 75 msg bits
|
||||
icrc12=xor(icrc12, 42)
|
||||
icrc12=xor(icrc12, 41)
|
||||
|
||||
if(ncrc12.eq.icrc12 .or. sum(decoded(57:87)).eq.0) then !### Kludge ###
|
||||
! CRC12 checks out --- unpack 72-bit message
|
||||
|
||||
@@ -73,7 +73,7 @@ subroutine foxgen()
|
||||
read(cb88,1003) i1Msg8BitBytes(1:11)
|
||||
1003 format(11b8)
|
||||
icrc12=crc12(c_loc(i1Msg8BitBytes),11)
|
||||
icrc12=xor(icrc12, 42)
|
||||
icrc12=xor(icrc12, 41)
|
||||
|
||||
write(cbits,1001) msgbits(1:56),icrc10,nrpt,i3b,icrc12
|
||||
read(cbits,1002) msgbits
|
||||
|
||||
@@ -38,7 +38,7 @@ subroutine genft8(msg,mygrid,bcontest,i3bit,msgsent,msgbits,itone)
|
||||
i1Msg8BitBytes(10)=iand(i1Msg8BitBytes(10),128+64+32)
|
||||
i1Msg8BitBytes(11)=0
|
||||
icrc12=crc12(c_loc(i1Msg8BitBytes),11)
|
||||
icrc12=xor(icrc12, 42)
|
||||
icrc12=xor(icrc12, 41)
|
||||
|
||||
! For reference, here's how to check the CRC
|
||||
! i1Msg8BitBytes(10)=icrc12/256
|
||||
|
||||
@@ -91,7 +91,7 @@ allocate ( rxdata(N), llr(N) )
|
||||
|
||||
i1Msg8BitBytes(10:11)=0
|
||||
checksum = crc12 (c_loc (i1Msg8BitBytes), 11)
|
||||
checksum = xor(checksum, 42)
|
||||
checksum = xor(checksum, 41)
|
||||
! For reference, the next 3 lines show how to check the CRC
|
||||
i1Msg8BitBytes(10)=checksum/256
|
||||
i1Msg8BitBytes(11)=iand (checksum,255)
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "varicode.h"
|
||||
#include "MessageClient.hpp"
|
||||
#include "APRSISClient.h"
|
||||
#include "keyeater.h"
|
||||
|
||||
#define NUM_JT4_SYMBOLS 206 //(72+31)*2, embedded sync
|
||||
#define NUM_JT65_SYMBOLS 126 //63 data + 63 sync
|
||||
@@ -125,6 +126,7 @@ public slots:
|
||||
void readFromStdout();
|
||||
void p1ReadFromStdout();
|
||||
void setXIT(int n, Frequency base = 0u);
|
||||
void qsy(int hzDelta);
|
||||
void setFreqOffsetForRestore(int freq, bool shouldRestore);
|
||||
bool tryRestoreFreqOffset();
|
||||
void setFreq4(int rxFreq, int txFreq);
|
||||
@@ -140,11 +142,13 @@ public slots:
|
||||
void writeNoticeTextToUI(QDateTime date, QString text);
|
||||
int writeMessageTextToUI(QDateTime date, QString text, int freq, bool bold, int block=-1);
|
||||
bool isMessageQueuedForTransmit();
|
||||
void prependMessageText(QString text);
|
||||
void addMessageText(QString text, bool clear=false, bool selectFirstPlaceholder=false);
|
||||
void enqueueMessage(int priority, QString message, int freq, Callback c);
|
||||
void resetMessage();
|
||||
void resetMessageUI();
|
||||
void restoreMessage();
|
||||
void initializeDummyData();
|
||||
bool ensureCallsignSet(bool alert=true);
|
||||
void createMessage(QString const& text);
|
||||
void createMessageTransmitQueue(QString const& text);
|
||||
@@ -168,8 +172,10 @@ private slots:
|
||||
void on_actionShow_Band_Activity_triggered(bool checked);
|
||||
void on_actionShow_Call_Activity_triggered(bool checked);
|
||||
void on_actionShow_Waterfall_triggered(bool checked);
|
||||
void on_actionShow_Waterfall_Controls_triggered(bool checked);
|
||||
void on_actionReset_Window_Sizes_triggered();
|
||||
void on_actionSettings_triggered();
|
||||
void openSettings(int tab=0);
|
||||
void prepareSpotting();
|
||||
void on_spotButton_clicked(bool checked);
|
||||
void on_monitorButton_clicked (bool);
|
||||
@@ -266,8 +272,12 @@ private slots:
|
||||
void buildBandActivitySortByMenu(QMenu * menu);
|
||||
void buildCallActivitySortByMenu(QMenu * menu);
|
||||
void buildQueryMenu(QMenu *, QString callsign);
|
||||
void buildRelayMenu(QMenu *menu);
|
||||
QAction* buildRelayAction(QString call);
|
||||
void buildEditMenu(QMenu *, QTextEdit *);
|
||||
void on_queryButton_pressed();
|
||||
void on_macrosMacroButton_pressed();
|
||||
void on_deselectButton_pressed();
|
||||
void on_tableWidgetRXAll_cellClicked(int row, int col);
|
||||
void on_tableWidgetRXAll_cellDoubleClicked(int row, int col);
|
||||
void on_tableWidgetRXAll_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
||||
@@ -701,8 +711,8 @@ private:
|
||||
};
|
||||
|
||||
struct MessageBuffer {
|
||||
QQueue<CallDetail> compound;
|
||||
CommandDetail cmd;
|
||||
QQueue<CallDetail> compound;
|
||||
QList<ActivityDetail> msgs;
|
||||
};
|
||||
|
||||
@@ -858,6 +868,7 @@ private:
|
||||
bool isMyCallIncluded(QString const &text);
|
||||
bool isAllCallIncluded(QString const &text);
|
||||
QString callsignSelected();
|
||||
void clearCallsignSelected();
|
||||
bool isRecentOffset(int offset);
|
||||
void markOffsetRecent(int offset);
|
||||
bool isDirectedOffset(int offset, bool *pIsAllCall);
|
||||
@@ -867,6 +878,7 @@ private:
|
||||
void processCompoundActivity();
|
||||
void processBufferedActivity();
|
||||
void processCommandActivity();
|
||||
void processAlertReplyForCommand(CommandDetail d, QString from, QString cmd);
|
||||
void processSpots();
|
||||
void processTxQueue();
|
||||
void displayActivity(bool force=false);
|
||||
@@ -921,47 +933,6 @@ private:
|
||||
void writeFoxQSO(QString msg);
|
||||
};
|
||||
|
||||
class EscapeKeyPressEater : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event){
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
||||
if(keyEvent->key() == Qt::Key_Escape){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// standard event processing
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
};
|
||||
|
||||
class EnterKeyPressEater : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event){
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
||||
if(keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return){
|
||||
bool processed = false;
|
||||
emit this->enterKeyPressed(obj, keyEvent, &processed);
|
||||
if(processed){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// standard event processing
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
public:
|
||||
Q_SIGNAL void enterKeyPressed(QObject *obj, QKeyEvent *evt, bool *pProcessed);
|
||||
};
|
||||
|
||||
extern int killbyname(const char* progName);
|
||||
extern void getDev(int* numDevices,char hostAPI_DeviceName[][50],
|
||||
int minChan[], int maxChan[],
|
||||
|
||||
@@ -139,7 +139,10 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color:white; background-color:rgb(0,0,0);</string>
|
||||
<string notr="true">QFrame {
|
||||
color:white;
|
||||
background-color:rgb(0,0,0);
|
||||
}</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
@@ -191,8 +194,7 @@
|
||||
<string><html><head/><body><p>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</p></body></html></string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color:white;
|
||||
color:black;</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
@@ -279,8 +281,7 @@ QPushButton[oob="true"] {
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_6">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color : black;
|
||||
o</string>
|
||||
<string notr="true">QFrame, QLabel { background-color : black; }</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
@@ -427,7 +428,10 @@ color : white;
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color:white; background-color:rgb(0,0,0);</string>
|
||||
<string notr="true">QFrame {
|
||||
color:white;
|
||||
background-color:rgb(0,0,0);
|
||||
}</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
@@ -1069,8 +1073,8 @@ background-color: #00ff00;
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
<italic>true</italic>
|
||||
<pointsize>14</pointsize>
|
||||
<italic>false</italic>
|
||||
</font>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
@@ -1098,7 +1102,7 @@ background-color: #00ff00;
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
<pointsize>14</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@@ -1118,7 +1122,7 @@ QTextEdit[transmitting="true"] {
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Type your outgoing messages / commands here.</string>
|
||||
<string>Type your outgoing messages here.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
@@ -1238,6 +1242,22 @@ QTextEdit[transmitting="true"] {
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="10">
|
||||
<widget class="QPushButton" name="queryButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a directed message to another station</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Directed</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="12">
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@@ -1253,93 +1273,7 @@ QTextEdit[transmitting="true"] {
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QPushButton" name="qthMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send your station location message</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>QTH</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="cqMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a CQ message</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>CQ</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="12">
|
||||
<widget class="QPushButton" name="stopTxButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Stop transmitting</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Halt</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="replyMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Reply to a CQ</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reply</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="8">
|
||||
<widget class="QPushButton" name="macrosMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a macro</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Macros</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="11">
|
||||
<item row="1" column="13">
|
||||
<widget class="QPushButton" name="startTxButton">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@@ -1369,8 +1303,27 @@ background:yellow;
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="9">
|
||||
<widget class="QPushButton" name="queryButton">
|
||||
<item row="1" column="4">
|
||||
<widget class="QPushButton" name="qthMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send your station location message</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>QTH</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="14">
|
||||
<widget class="QPushButton" name="stopTxButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@@ -1378,10 +1331,74 @@ background:yellow;
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a directed message to another station</p></body></html></string>
|
||||
<string><html><head/><body><p>Stop transmitting</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Directed</string>
|
||||
<string>Halt</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="8">
|
||||
<widget class="QPushButton" name="macrosMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a macro</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Macros</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="replyMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Reply to a CQ</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reply</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="cqMacroButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Send a CQ message</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>CQ</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="11">
|
||||
<widget class="QPushButton" name="deselectButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Deselect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -1477,6 +1494,10 @@ background:yellow;
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QFrame { background-color:black; }
|
||||
</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
@@ -1580,7 +1601,7 @@ background-color: #00ff00;
|
||||
<string><html><head/><body><p>30dB recommended when only noise present<br/>Green when good<br/>Red when clipping may occur<br/>Yellow when too low</p></body></html></string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color:black;</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
@@ -4364,6 +4385,7 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
<addaction name="actionShow_Band_Activity"/>
|
||||
<addaction name="actionShow_Call_Activity"/>
|
||||
<addaction name="actionShow_Waterfall"/>
|
||||
<addaction name="actionShow_Waterfall_Controls"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionReset_Window_Sizes"/>
|
||||
</widget>
|
||||
@@ -4399,14 +4421,11 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
</action>
|
||||
<action name="actionAbout">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>About FT8Call</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+F1</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionWide_Waterfall">
|
||||
<property name="text">
|
||||
@@ -4451,10 +4470,10 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
</action>
|
||||
<action name="actionDelete_all_wav_files_in_SaveDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Delete all *.wav && *.c2 files in SaveDir</string>
|
||||
<string>Delete all *.wav files in SaveDir</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionQuickDecode">
|
||||
@@ -4481,9 +4500,6 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionSave_all">
|
||||
<property name="checkable">
|
||||
@@ -4978,9 +4994,6 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
<property name="text">
|
||||
<string>Copyright notice</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Shift+F1</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionFox_Log">
|
||||
<property name="text">
|
||||
@@ -5066,6 +5079,17 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
<string>Sort Call Activity...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionShow_Waterfall_Controls">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show Waterfall Controls</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
#include "messagereplydialog.h"
|
||||
#include "ui_messagereplydialog.h"
|
||||
|
||||
#include "varicode.h"
|
||||
|
||||
#include <QSet>
|
||||
|
||||
MessageReplyDialog::MessageReplyDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::MessageReplyDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
auto enterFilter = new EnterKeyPressEater();
|
||||
connect(enterFilter, &EnterKeyPressEater::enterKeyPressed, this, [this](QObject *, QKeyEvent *, bool *pProcessed){
|
||||
if(QApplication::keyboardModifiers() & Qt::ShiftModifier){
|
||||
if(pProcessed) *pProcessed = false;
|
||||
return;
|
||||
}
|
||||
if(pProcessed) *pProcessed = true;
|
||||
|
||||
this->accept();
|
||||
});
|
||||
ui->textEdit->installEventFilter(enterFilter);
|
||||
}
|
||||
|
||||
MessageReplyDialog::~MessageReplyDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void MessageReplyDialog::setLabel(QString value){
|
||||
ui->label->setText(value);
|
||||
}
|
||||
|
||||
void MessageReplyDialog::setTextValue(QString text){
|
||||
ui->textEdit->setPlainText(text);
|
||||
}
|
||||
|
||||
QString MessageReplyDialog::textValue() const {
|
||||
return ui->textEdit->toPlainText();
|
||||
}
|
||||
|
||||
void MessageReplyDialog::on_textEdit_textChanged(){
|
||||
auto text = ui->textEdit->toPlainText();
|
||||
|
||||
QString x;
|
||||
QString::const_iterator i;
|
||||
QSet<QString> validChars = Varicode::huffValidChars();
|
||||
for(i = text.constBegin(); i != text.constEnd(); i++){
|
||||
auto ch = (*i).toUpper();
|
||||
if(validChars.contains(ch)){
|
||||
x += ch;
|
||||
}
|
||||
}
|
||||
|
||||
if(x != text){
|
||||
int pos = ui->textEdit->textCursor().position();
|
||||
int maxpos = x.size();
|
||||
ui->textEdit->setPlainText(x);
|
||||
QTextCursor c = ui->textEdit->textCursor();
|
||||
c.setPosition(pos < maxpos ? pos : maxpos, QTextCursor::MoveAnchor);
|
||||
|
||||
ui->textEdit->setTextCursor(c);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#ifndef MESSAGEREPLYDIALOG_H
|
||||
#define MESSAGEREPLYDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "keyeater.h"
|
||||
|
||||
namespace Ui {
|
||||
class MessageReplyDialog;
|
||||
}
|
||||
|
||||
class QTextEdit;
|
||||
|
||||
class MessageReplyDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MessageReplyDialog(QWidget *parent = 0);
|
||||
~MessageReplyDialog();
|
||||
|
||||
void setLabel(QString);
|
||||
void setTextValue(QString);
|
||||
QString textValue() const;
|
||||
|
||||
QTextEdit * textEdit();
|
||||
|
||||
|
||||
private slots:
|
||||
void on_textEdit_textChanged();
|
||||
|
||||
private:
|
||||
Ui::MessageReplyDialog *ui;
|
||||
};
|
||||
|
||||
#endif // MESSAGEREPLAYDIALOG_H
|
||||
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MessageReplyDialog</class>
|
||||
<widget class="QDialog" name="MessageReplyDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>520</width>
|
||||
<height>260</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="textEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>MessageReplyDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>MessageReplyDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -40,7 +40,9 @@ CPlotter::CPlotter(QWidget *parent) : //CPlotter Constructor
|
||||
m_Percent2DScreen0 {0},
|
||||
m_rxFreq {1020},
|
||||
m_txFreq {0},
|
||||
m_startFreq {0}
|
||||
m_startFreq {0},
|
||||
m_lastMouseX {-1},
|
||||
m_menuOpen {false}
|
||||
{
|
||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
@@ -51,19 +53,6 @@ CPlotter::CPlotter(QWidget *parent) : //CPlotter Constructor
|
||||
m_bReplot=false;
|
||||
|
||||
setMouseTracking(true);
|
||||
|
||||
// contextual pop up menu
|
||||
setContextMenuPolicy (Qt::CustomContextMenu);
|
||||
connect (this, &QWidget::customContextMenuRequested, [this] (QPoint const& pos) {
|
||||
QMenu menu {this};
|
||||
menu.addAction (m_set_freq_action);
|
||||
auto const& connection = connect (m_set_freq_action, &QAction::triggered, [this, pos] () {
|
||||
int newFreq = FreqfromX (pos.x ()) + .5;
|
||||
emit setFreq1 (newFreq, newFreq);
|
||||
});
|
||||
menu.exec (mapToGlobal (pos));
|
||||
disconnect (connection);
|
||||
});
|
||||
}
|
||||
|
||||
CPlotter::~CPlotter() { } // Destructor
|
||||
|
||||
@@ -90,6 +90,7 @@ public:
|
||||
signals:
|
||||
void freezeDecode1(int n);
|
||||
void setFreq1(int rxFreq, int txFreq);
|
||||
void qsy(int hzDelta);
|
||||
|
||||
protected:
|
||||
//re-implemented widget event handlers
|
||||
@@ -179,6 +180,7 @@ private:
|
||||
qint32 m_tol;
|
||||
qint32 m_j;
|
||||
qint32 m_lastMouseX;
|
||||
bool m_menuOpen;
|
||||
|
||||
char m_sutc[6];
|
||||
};
|
||||
|
||||
@@ -45,9 +45,9 @@ QMap<QString, int> directed_cmds = {
|
||||
{"&", 2 }, // query station message
|
||||
{"$", 3 }, // query station(s) heard
|
||||
{"^", 4 }, // query grid
|
||||
{"%", 5 }, // query pwr
|
||||
{"|", 6 }, // retransmit message
|
||||
{"!", 7 }, // alert message
|
||||
{">", 5 }, // relay message
|
||||
//{"|", 6 }, // retransmit message
|
||||
//{"!", 7 }, // alert message
|
||||
{"#", 8 }, // all or nothing message
|
||||
|
||||
// {"=", 9 }, // unused
|
||||
@@ -68,7 +68,7 @@ QMap<QString, int> directed_cmds = {
|
||||
{" RR", 21 }, // roger roger
|
||||
{" QSL?", 22 }, // do you copy?
|
||||
{" QSL", 23 }, // i copy
|
||||
{" PWR", 24 }, // power level
|
||||
// {"", 24 }, // unused
|
||||
{" SNR", 25 }, // seen a station at the provided snr
|
||||
{" NO", 26 }, // negative confirm
|
||||
{" YES", 27 }, // confirm
|
||||
@@ -78,13 +78,14 @@ QMap<QString, int> directed_cmds = {
|
||||
{" ", 31 }, // send freetext
|
||||
};
|
||||
|
||||
QSet<int> allowed_cmds = {0, 1, 2, 3, 4, 5, 6, 7, 8, /*...*/ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
|
||||
QSet<int> allowed_cmds = {0, 1, 2, 3, 4, 5, /*6,*/ /*7,*/ 8, /*...*/ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, /*24,*/ 25, 26, 27, 28, 29, 30, 31};
|
||||
|
||||
QSet<int> buffered_cmds = {6, 7, 8, 13, 14, 15};
|
||||
QSet<int> buffered_cmds = {5, /*6,*/ /*7,*/ 8, 13, 14, 15};
|
||||
|
||||
QMap<int, int> checksum_cmds = {
|
||||
{ 6, 16 },
|
||||
{ 7, 16 },
|
||||
{ 5, 16 },
|
||||
/*{ 6, 16 },*/
|
||||
/*{ 7, 16 },*/
|
||||
{ 8, 32 },
|
||||
{ 13, 16 },
|
||||
{ 14, 16 },
|
||||
@@ -92,26 +93,23 @@ QMap<int, int> checksum_cmds = {
|
||||
};
|
||||
|
||||
QString callsign_pattern = QString("(?<callsign>[A-Z0-9/]+)");
|
||||
QString optional_cmd_pattern = QString("(?<cmd>\\s?(?:AGN[?]|ACK|73|YES|NO|SNR|PWR|QSL[?]?|RR|HEARING|HW CPY[?]|FB|QTH|QTC|GRID|APRS[:]|QSO|[?@&$%|!#^ ]))?");
|
||||
QString optional_cmd_pattern = QString("(?<cmd>\\s?(?:AGN[?]|ACK|73|YES|NO|SNR|QSL[?]?|RR|HEARING|HW CPY[?]|FB|QTH|QTC|GRID|APRS[:]|QSO|[?@&$%#^> ]))?");
|
||||
QString optional_grid_pattern = QString("(?<grid>\\s?[A-R]{2}[0-9]{2})?");
|
||||
QString optional_extended_grid_pattern = QString("^(?<grid>\\s?(?:[A-R]{2}[0-9]{2}(?:[A-X]{2}(?:[0-9]{2})?)*))?");
|
||||
QString optional_pwr_pattern = QString("(?<pwr>(?<=PWR)\\s?\\d+\\s?[KM]?W)?");
|
||||
QString optional_num_pattern = QString("(?<num>(?<=SNR|HEARING)\\s?[-+]?(?:3[01]|[0-2]?[0-9]))?");
|
||||
|
||||
QRegularExpression directed_re("^" +
|
||||
callsign_pattern +
|
||||
optional_cmd_pattern +
|
||||
optional_pwr_pattern +
|
||||
optional_num_pattern);
|
||||
|
||||
QRegularExpression beacon_re(R"(^\s*(?<type>CQCQCQ|BEACON)(?:\s(?<grid>[A-R]{2}[0-9]{2}))?\b)");
|
||||
QRegularExpression beacon_re(R"(^\s*(?<type>CQCQCQ|CQ QRP|CQ DX|CQ TEST|BEACON)(?:\s(?<grid>[A-R]{2}[0-9]{2}))?\b)");
|
||||
|
||||
QRegularExpression compound_re("^\\s*[<]" +
|
||||
callsign_pattern +
|
||||
"(?<extra>" +
|
||||
optional_grid_pattern +
|
||||
optional_cmd_pattern +
|
||||
optional_pwr_pattern +
|
||||
optional_num_pattern +
|
||||
")[>]");
|
||||
|
||||
@@ -263,9 +261,7 @@ needed: ^,&@#$%'"()<>|*[]{}=;_~`
|
||||
QMap<QString, QString> huffescapes = {
|
||||
|
||||
// 10 bits
|
||||
#if 0
|
||||
{ "\\ ", "" },
|
||||
#endif
|
||||
{ "\\ ", " DE " }, // 14 bits - 4 bit savings
|
||||
{ "\\E", "," },
|
||||
|
||||
// 11 bits
|
||||
@@ -349,6 +345,13 @@ QMap<QString, quint32> basecalls = {
|
||||
{ "ALLCALL", nbasecall + 2 },
|
||||
};
|
||||
|
||||
QMap<quint32, QString> cqs = {
|
||||
{ 0, "CQCQCQ" },
|
||||
{ 1, "CQ DX" },
|
||||
{ 2, "CQ QRP" },
|
||||
{ 3, "CQ TEST" },
|
||||
};
|
||||
|
||||
QMap<int, int> dbm2mw = {
|
||||
{0 , 1}, // 1mW
|
||||
{3 , 2}, // 2mW
|
||||
@@ -432,6 +435,13 @@ int dbmTomwatts(int dbm){
|
||||
* VARICODE
|
||||
*/
|
||||
|
||||
QString Varicode::cqString(int number){
|
||||
if(!cqs.contains(number)){
|
||||
return QString{};
|
||||
}
|
||||
return cqs[number];
|
||||
}
|
||||
|
||||
QString Varicode::formatSNR(int snr){
|
||||
if(snr < -60 || snr > 60){
|
||||
return QString();
|
||||
@@ -440,19 +450,6 @@ QString Varicode::formatSNR(int snr){
|
||||
return QString("%1%2").arg(snr >= 0 ? "+" : "").arg(snr, snr < 0 ? 3 : 2, 10, QChar('0'));
|
||||
}
|
||||
|
||||
QString Varicode::formatPWR(int dbm){
|
||||
if(dbm < 0 || dbm > 60){
|
||||
return QString();
|
||||
}
|
||||
|
||||
int mwatts = dbmTomwatts(dbm);
|
||||
if(mwatts < 1000){
|
||||
return QString("%1mW").arg(mwatts);
|
||||
}
|
||||
|
||||
return QString("%1W").arg(mwatts/1000);
|
||||
}
|
||||
|
||||
QString Varicode::checksum16(QString const &input){
|
||||
auto fromBytes = input.toLocal8Bit();
|
||||
auto crc = CRC::Calculate(fromBytes.data(), fromBytes.length(), CRC::CRC_16_KERMIT());
|
||||
@@ -1061,43 +1058,18 @@ quint8 Varicode::packNum(QString const &num, bool *ok){
|
||||
return inum + 30 + 1;
|
||||
}
|
||||
|
||||
// pack pwr string into a dbm between 0 and 62
|
||||
quint8 Varicode::packPwr(QString const &pwr, bool *ok){
|
||||
int ipwr = 0;
|
||||
if(pwr.isEmpty()){
|
||||
if(ok) *ok = false;
|
||||
return ipwr;
|
||||
}
|
||||
|
||||
int factor = 1000;
|
||||
if(pwr.endsWith("KW")){
|
||||
factor = 1000000;
|
||||
}
|
||||
else if(pwr.endsWith("MW")){
|
||||
factor = 1;
|
||||
}
|
||||
|
||||
ipwr = QString(pwr).replace(QRegExp("[KM]?W", Qt::CaseInsensitive), "").toInt() * factor;
|
||||
ipwr = mwattsToDbm(ipwr);
|
||||
|
||||
if(ok) *ok = true;
|
||||
return ipwr + 1;
|
||||
}
|
||||
|
||||
// pack a reduced fidelity command and a number into the extra bits provided between nbasegrid and nmaxgrid
|
||||
quint8 Varicode::packCmd(quint8 cmd, quint8 num, bool *pPackedNum){
|
||||
//quint8 allowed = nmaxgrid - nbasegrid - 1;
|
||||
|
||||
// if cmd == pwr || cmd == snr
|
||||
// if cmd == snr
|
||||
quint8 value = 0;
|
||||
if(cmd == directed_cmds[" PWR"] || cmd == directed_cmds[" SNR"]){
|
||||
if(cmd == directed_cmds[" SNR"]){
|
||||
// 8 bits - 1 bit flag + 1 bit type + 6 bit number
|
||||
// [1][X][6]
|
||||
// X = 0 == SNR
|
||||
// X = 1 == PWR
|
||||
|
||||
value = ((1 << 1) + ((int)cmd == directed_cmds[" PWR"])) << 6;
|
||||
value = value + num;
|
||||
value = (1 << 1) << 6;
|
||||
value = value + (num & ((1<<6)-1));
|
||||
if(pPackedNum) *pPackedNum = true;
|
||||
} else {
|
||||
value = cmd & ((1<<7)-1);
|
||||
@@ -1108,18 +1080,10 @@ quint8 Varicode::packCmd(quint8 cmd, quint8 num, bool *pPackedNum){
|
||||
}
|
||||
|
||||
quint8 Varicode::unpackCmd(quint8 value, quint8 *pNum){
|
||||
// if the first bit is 1, the second bit will indicate if its pwr or snr...
|
||||
// if the first bit is 1, this is an SNR with a number encoded in the lower 6 bits
|
||||
if(value & (1<<7)){
|
||||
// either pwr or snr...
|
||||
bool pwr = value & (1<<6);
|
||||
|
||||
if(pNum) *pNum = value & ((1<<6)-1);
|
||||
|
||||
if(pwr){
|
||||
return directed_cmds[" PWR"];
|
||||
} else {
|
||||
return directed_cmds[" SNR"];
|
||||
}
|
||||
return directed_cmds[" SNR"];
|
||||
} else {
|
||||
if(pNum) *pNum = 0;
|
||||
return value & ((1<<7)-1);
|
||||
@@ -1143,6 +1107,8 @@ int Varicode::isCommandChecksumed(const QString &cmd){
|
||||
}
|
||||
|
||||
// CQCQCQ EM73
|
||||
// CQ DX EM73
|
||||
// CQ QRP EM73
|
||||
// BEACON EM73
|
||||
QString Varicode::packBeaconMessage(QString const &text, const QString &callsign, int *n){
|
||||
QString frame;
|
||||
@@ -1190,8 +1156,9 @@ QString Varicode::packBeaconMessage(QString const &text, const QString &callsign
|
||||
packed_extra |= (1<<15);
|
||||
}
|
||||
|
||||
quint8 cqNumber = cqs.key(type, 0);
|
||||
|
||||
frame = packCompoundFrame(base, fix, isPrefix, FrameBeacon, packed_extra);
|
||||
frame = packCompoundFrame(base, fix, isPrefix, FrameBeacon, packed_extra, cqNumber);
|
||||
if(frame.isEmpty()){
|
||||
if(n) *n = 0;
|
||||
return frame;
|
||||
@@ -1201,11 +1168,12 @@ QString Varicode::packBeaconMessage(QString const &text, const QString &callsign
|
||||
return frame;
|
||||
}
|
||||
|
||||
QStringList Varicode::unpackBeaconMessage(const QString &text, quint8 *pType, bool * isAlt){
|
||||
QStringList Varicode::unpackBeaconMessage(const QString &text, quint8 *pType, bool * isAlt, quint8 * pBits3){
|
||||
quint8 type = FrameBeacon;
|
||||
quint16 num = nmaxgrid;
|
||||
quint8 bits3 = 0;
|
||||
|
||||
QStringList unpacked = unpackCompoundFrame(text, &type, &num);
|
||||
QStringList unpacked = unpackCompoundFrame(text, &type, &num, &bits3);
|
||||
if(unpacked.isEmpty() || type != FrameBeacon){
|
||||
return QStringList{};
|
||||
}
|
||||
@@ -1214,6 +1182,7 @@ QStringList Varicode::unpackBeaconMessage(const QString &text, quint8 *pType, bo
|
||||
|
||||
if(isAlt) *isAlt = (num & (1<<15));
|
||||
if(pType) *pType = type;
|
||||
if(pBits3) *pBits3 = bits3;
|
||||
|
||||
return unpacked;
|
||||
}
|
||||
@@ -1238,7 +1207,6 @@ QString Varicode::packCompoundMessage(QString const &text, int *n){
|
||||
QString grid = parsedText.captured("grid");
|
||||
QString cmd = parsedText.captured("cmd");
|
||||
QString num = parsedText.captured("num").trimmed();
|
||||
QString pwr = parsedText.captured("pwr").trimmed().toUpper();
|
||||
|
||||
QString base;
|
||||
QString fix;
|
||||
@@ -1272,9 +1240,6 @@ QString Varicode::packCompoundMessage(QString const &text, int *n){
|
||||
if (!cmd.isEmpty() && directed_cmds.contains(cmd) && Varicode::isCommandAllowed(cmd)){
|
||||
bool packedNum = false;
|
||||
qint8 inum = Varicode::packNum(num, nullptr);
|
||||
if(cmd == " PWR"){
|
||||
inum = Varicode::packPwr(pwr, nullptr);
|
||||
}
|
||||
extra = nusergrid + Varicode::packCmd(directed_cmds[cmd], inum, &packedNum);
|
||||
|
||||
type = FrameCompoundDirected;
|
||||
@@ -1282,17 +1247,18 @@ QString Varicode::packCompoundMessage(QString const &text, int *n){
|
||||
extra = Varicode::packGrid(grid);
|
||||
}
|
||||
|
||||
frame = Varicode::packCompoundFrame(base, fix, isPrefix, type, extra);
|
||||
frame = Varicode::packCompoundFrame(base, fix, isPrefix, type, extra, 0);
|
||||
|
||||
if(n) *n = parsedText.captured(0).length();
|
||||
return frame;
|
||||
}
|
||||
|
||||
QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType){
|
||||
QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType, quint8 *pBits3){
|
||||
quint8 type = FrameCompound;
|
||||
quint16 extra = nmaxgrid;
|
||||
quint8 bits3 = 0;
|
||||
|
||||
QStringList unpacked = unpackCompoundFrame(text, &type, &extra);
|
||||
QStringList unpacked = unpackCompoundFrame(text, &type, &extra, &bits3);
|
||||
if(unpacked.isEmpty() || (type != FrameCompound && type != FrameCompoundDirected)){
|
||||
return QStringList {};
|
||||
}
|
||||
@@ -1305,19 +1271,18 @@ QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType){
|
||||
|
||||
unpacked.append(directed_cmds.key(cmd));
|
||||
|
||||
if(cmd == directed_cmds[" PWR"]){
|
||||
unpacked.append(Varicode::formatPWR(num - 1));
|
||||
} else if(cmd == directed_cmds[" SNR"]){
|
||||
if(cmd == directed_cmds[" SNR"]){
|
||||
unpacked.append(Varicode::formatSNR(num - 31));
|
||||
}
|
||||
}
|
||||
|
||||
if(pType) *pType = type;
|
||||
if(pBits3) *pBits3 = bits3;
|
||||
|
||||
return unpacked;
|
||||
}
|
||||
|
||||
QString Varicode::packCompoundFrame(const QString &baseCallsign, const QString &fix, bool isPrefix, quint8 type, quint16 num){
|
||||
QString Varicode::packCompoundFrame(const QString &baseCallsign, const QString &fix, bool isPrefix, quint8 type, quint16 num, quint8 bits3){
|
||||
QString frame;
|
||||
|
||||
// needs to be a compound type...
|
||||
@@ -1338,8 +1303,9 @@ QString Varicode::packCompoundFrame(const QString &baseCallsign, const QString &
|
||||
|
||||
quint16 packed_11 = (num & mask11) >> 5;
|
||||
quint8 packed_5 = num & mask5;
|
||||
quint8 packed_8 = (packed_5 << 3) | bits3;
|
||||
|
||||
// [3][28][22][11],[3][5] = 72
|
||||
// [3][28][22][11],[5][3] = 72
|
||||
auto bits = (
|
||||
Varicode::intToBits(packed_flag, 3) +
|
||||
Varicode::intToBits(packed_base, 28) +
|
||||
@@ -1347,19 +1313,22 @@ QString Varicode::packCompoundFrame(const QString &baseCallsign, const QString &
|
||||
Varicode::intToBits(packed_11, 11)
|
||||
);
|
||||
|
||||
return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_5 % 32);
|
||||
return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_8);
|
||||
}
|
||||
|
||||
QStringList Varicode::unpackCompoundFrame(const QString &text, quint8 *pType, quint16 *pNum){
|
||||
QStringList Varicode::unpackCompoundFrame(const QString &text, quint8 *pType, quint16 *pNum, quint8 *pBits3){
|
||||
QStringList unpacked;
|
||||
|
||||
if(text.length() < 12 || text.contains(" ")){
|
||||
return unpacked;
|
||||
}
|
||||
|
||||
// [3][28][22][11],[3][5] = 72
|
||||
quint8 packed_5 = 0;
|
||||
auto bits = Varicode::intToBits(Varicode::unpack72bits(text, &packed_5), 64);
|
||||
// [3][28][22][11],[5][3] = 72
|
||||
quint8 packed_8 = 0;
|
||||
auto bits = Varicode::intToBits(Varicode::unpack72bits(text, &packed_8), 64);
|
||||
|
||||
quint8 packed_5 = packed_8 >> 3;
|
||||
quint8 packed_3 = packed_8 & ((1<<3)-1);
|
||||
|
||||
quint8 packed_flag = Varicode::bitsToInt(bits.mid(0, 3));
|
||||
|
||||
@@ -1381,6 +1350,7 @@ QStringList Varicode::unpackCompoundFrame(const QString &text, quint8 *pType, qu
|
||||
|
||||
if(pType) *pType = packed_flag;
|
||||
if(pNum) *pNum = num;
|
||||
if(pBits3) *pBits3 = packed_3;
|
||||
|
||||
if(isPrefix){
|
||||
unpacked.append(fix);
|
||||
@@ -1412,7 +1382,6 @@ QString Varicode::packDirectedMessage(const QString &text, const QString &callsi
|
||||
QString to = match.captured("callsign");
|
||||
QString cmd = match.captured("cmd");
|
||||
QString num = match.captured("num").trimmed();
|
||||
QString pwr = match.captured("pwr").trimmed().toUpper();
|
||||
|
||||
// ensure we have a directed command
|
||||
if(cmd.isEmpty()){
|
||||
@@ -1439,23 +1408,15 @@ QString Varicode::packDirectedMessage(const QString &text, const QString &callsi
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// validate command
|
||||
if(!Varicode::isCommandAllowed(cmd)){
|
||||
if(!Varicode::isCommandAllowed(cmd) && !Varicode::isCommandAllowed(cmd.trimmed())){
|
||||
if(n) *n = 0;
|
||||
return frame;
|
||||
}
|
||||
|
||||
// packing general number...
|
||||
quint8 inum = 0;
|
||||
|
||||
if(cmd.trimmed() == "PWR"){
|
||||
inum = Varicode::packPwr(pwr, nullptr);
|
||||
if(pNum) *pNum = pwr;
|
||||
} else {
|
||||
inum = Varicode::packNum(num, nullptr);
|
||||
if(pNum) *pNum = num;
|
||||
}
|
||||
quint8 inum = Varicode::packNum(num, nullptr);
|
||||
if(pNum) *pNum = num;
|
||||
|
||||
quint32 packed_from = Varicode::packCallsign(from);
|
||||
quint32 packed_to = Varicode::packCallsign(to);
|
||||
@@ -1465,7 +1426,13 @@ QString Varicode::packDirectedMessage(const QString &text, const QString &callsi
|
||||
return frame;
|
||||
}
|
||||
|
||||
quint8 packed_cmd = directed_cmds[cmd];
|
||||
quint8 packed_cmd = 0;
|
||||
if(directed_cmds.contains(cmd)){
|
||||
packed_cmd = directed_cmds[cmd];
|
||||
}
|
||||
if(directed_cmds.contains(cmd.trimmed())){
|
||||
packed_cmd = directed_cmds[cmd.trimmed()];
|
||||
}
|
||||
quint8 packed_flag = FrameDirected;
|
||||
quint8 packed_extra = inum;
|
||||
|
||||
@@ -1512,9 +1479,7 @@ QStringList Varicode::unpackDirectedMessage(const QString &text, quint8 *pType){
|
||||
|
||||
if(extra != 0){
|
||||
// TODO: jsherer - should we decide which format to use on the command, or something else?
|
||||
if(packed_cmd == directed_cmds[" PWR"]){
|
||||
unpacked.append(Varicode::formatPWR(extra-1));
|
||||
} else if(packed_cmd == directed_cmds[" SNR"]) {
|
||||
if(packed_cmd == directed_cmds[" SNR"]) {
|
||||
unpacked.append(Varicode::formatSNR((int)extra-31));
|
||||
} else {
|
||||
unpacked.append(QString("%1").arg(extra-31));
|
||||
|
||||
@@ -56,6 +56,7 @@ public:
|
||||
|
||||
//Varicode();
|
||||
|
||||
static QString cqString(int number);
|
||||
static QString formatSNR(int snr);
|
||||
static QString formatPWR(int dbm);
|
||||
|
||||
@@ -124,13 +125,13 @@ public:
|
||||
static int isCommandChecksumed(const QString &cmd);
|
||||
|
||||
static QString packBeaconMessage(QString const &text, QString const&callsign, int *n);
|
||||
static QStringList unpackBeaconMessage(const QString &text, quint8 *pType, bool *isAlt);
|
||||
static QStringList unpackBeaconMessage(const QString &text, quint8 *pType, bool *isAlt, quint8 *pBits3);
|
||||
|
||||
static QString packCompoundMessage(QString const &text, int *n);
|
||||
static QStringList unpackCompoundMessage(const QString &text, quint8 *pType);
|
||||
static QStringList unpackCompoundMessage(const QString &text, quint8 *pType, quint8 *pBits3);
|
||||
|
||||
static QString packCompoundFrame(const QString &baseCallsign, const QString &fix, bool isPrefix, quint8 type, quint16 num);
|
||||
static QStringList unpackCompoundFrame(const QString &text, quint8 *pType, quint16 *pNum);
|
||||
static QString packCompoundFrame(const QString &baseCallsign, const QString &fix, bool isPrefix, quint8 type, quint16 num, quint8 bits3);
|
||||
static QStringList unpackCompoundFrame(const QString &text, quint8 *pType, quint16 *pNum, quint8 *pBits3);
|
||||
|
||||
static QString packDirectedMessage(QString const& text, QString const& callsign, QString *pTo, QString * pCmd, QString *pNum, int *n);
|
||||
static QStringList unpackDirectedMessage(QString const& text, quint8 *pType);
|
||||
|
||||
@@ -42,7 +42,12 @@ WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
|
||||
connect(ui->widePlot, SIGNAL(setFreq1(int,int)),this,
|
||||
SLOT(setFreq2(int,int)));
|
||||
|
||||
connect(ui->widePlot, &CPlotter::qsy, this, [this](int hzDelta){
|
||||
emit qsy(hzDelta);
|
||||
});
|
||||
|
||||
{
|
||||
|
||||
//Restore user's settings
|
||||
SettingsGroup g {m_settings, "WideGraph"};
|
||||
restoreGeometry (m_settings->value ("geometry", saveGeometry ()).toByteArray ());
|
||||
@@ -81,6 +86,7 @@ WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
|
||||
ui->sbPercent2dPlot->setValue(m_Percent2DScreen);
|
||||
ui->widePlot->SetPercent2DScreen(m_Percent2DScreen);
|
||||
ui->widePlot->setStartFreq(m_settings->value("StartFreq", 500).toInt());
|
||||
ui->centerSpinBox->setValue(m_settings->value("CenterOffset", 1500).toInt());
|
||||
ui->fStartSpinBox->setValue(ui->widePlot->startFreq());
|
||||
m_waterfallPalette=m_settings->value("WaterfallPalette","Default").toString();
|
||||
m_userPalette = WFPalette {m_settings->value("UserPalette").value<WFPalette::Colours> ()};
|
||||
@@ -141,6 +147,7 @@ void WideGraph::saveSettings() //saveS
|
||||
m_settings->setValue("UseRef",m_bRef);
|
||||
m_settings->setValue ("HideControls", ui->controls_widget->isHidden ());
|
||||
m_settings->setValue ("FminPerBand", m_fMinPerBand);
|
||||
m_settings->setValue ("CenterOffset", ui->centerSpinBox->value());
|
||||
}
|
||||
|
||||
void WideGraph::drawRed(int ia, int ib)
|
||||
@@ -207,6 +214,11 @@ void WideGraph::on_bppSpinBox_valueChanged(int n) //b
|
||||
ui->widePlot->setBinsPerPixel(n);
|
||||
}
|
||||
|
||||
void WideGraph::on_qsyPushButton_clicked(){
|
||||
int hzDelta = rxFreq() - centerFreq();
|
||||
emit qsy(hzDelta);
|
||||
}
|
||||
|
||||
void WideGraph::on_offsetSpinBox_valueChanged(int n){
|
||||
if(n == rxFreq()){
|
||||
return;
|
||||
@@ -257,6 +269,11 @@ int WideGraph::rxFreq() //rxFr
|
||||
return ui->widePlot->rxFreq();
|
||||
}
|
||||
|
||||
int WideGraph::centerFreq()
|
||||
{
|
||||
return ui->centerSpinBox->value();
|
||||
}
|
||||
|
||||
int WideGraph::nStartFreq() //nStartFreq
|
||||
{
|
||||
return ui->widePlot->startFreq();
|
||||
@@ -363,6 +380,15 @@ void WideGraph::setDialFreq(double d) //setDialFreq
|
||||
ui->widePlot->setDialFreq(d);
|
||||
}
|
||||
|
||||
void WideGraph::setControlsVisible(bool visible)
|
||||
{
|
||||
ui->cbControls->setChecked(visible);
|
||||
}
|
||||
|
||||
bool WideGraph::controlsVisible(){
|
||||
return ui->cbControls->isChecked();
|
||||
}
|
||||
|
||||
void WideGraph::setRxBand (QString const& band)
|
||||
{
|
||||
m_rxBand = band;
|
||||
|
||||
@@ -29,6 +29,7 @@ public:
|
||||
void dataSink2(float s[], float df3, int ihsym, int ndiskdata);
|
||||
void setRxFreq(int n);
|
||||
int rxFreq();
|
||||
int centerFreq();
|
||||
int nStartFreq();
|
||||
int Fmin();
|
||||
int Fmax();
|
||||
@@ -55,17 +56,21 @@ signals:
|
||||
void f11f12(int n);
|
||||
void setXIT2(int n);
|
||||
void setFreq3(int rxFreq, int txFreq);
|
||||
void qsy(int hzDelta);
|
||||
|
||||
public slots:
|
||||
void wideFreezeDecode(int n);
|
||||
void setFreq2(int rxFreq, int txFreq);
|
||||
void setDialFreq(double d);
|
||||
void setControlsVisible(bool visible);
|
||||
bool controlsVisible();
|
||||
|
||||
protected:
|
||||
void keyPressEvent (QKeyEvent *e) override;
|
||||
void closeEvent (QCloseEvent *) override;
|
||||
|
||||
private slots:
|
||||
void on_qsyPushButton_clicked();
|
||||
void on_offsetSpinBox_valueChanged(int n);
|
||||
void on_waterfallAvgSpinBox_valueChanged(int arg1);
|
||||
void on_bppSpinBox_valueChanged(int arg1);
|
||||
|
||||
@@ -64,6 +64,9 @@
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Controls</string>
|
||||
</property>
|
||||
@@ -100,127 +103,7 @@
|
||||
<property name="verticalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="7">
|
||||
<widget class="QComboBox" name="spec2dComboBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Select data for spectral display</p></body></html></string>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Current</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Cumulative</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Linear Avg</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Reference</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QSpinBox" name="waterfallAvgSpinBox">
|
||||
<property name="toolTip">
|
||||
<string>Number of FFTs averaged (controls waterfall scrolling rate)</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>N Avg </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="6" rowspan="2">
|
||||
<widget class="Line" name="line_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4" rowspan="2">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QSpinBox" name="fStartSpinBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Frequency at left edge of waterfall</p></body></html></string>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> Hz</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Start </string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>5000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>500</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="12">
|
||||
<widget class="QSpinBox" name="smoSpinBox">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Smoothing of Linear Average spectrum</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Smooth </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>7</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="13" rowspan="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="11">
|
||||
<item row="0" column="12">
|
||||
<widget class="QSlider" name="zeroSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
@@ -257,14 +140,62 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<widget class="QComboBox" name="paletteComboBox">
|
||||
<item row="0" column="13">
|
||||
<widget class="QSpinBox" name="sbPercent2dPlot">
|
||||
<property name="toolTip">
|
||||
<string>Select waterfall palette</string>
|
||||
<string><html><head/><body><p>Set fractional size of spectrum in this window.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> %</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Spec </string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="7">
|
||||
<item row="1" column="8">
|
||||
<widget class="QComboBox" name="spec2dComboBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Select data for spectral display</p></body></html></string>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Current</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Cumulative</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Linear Avg</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Reference</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="8">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbFlatten">
|
||||
@@ -288,81 +219,32 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="9">
|
||||
<widget class="QSlider" name="gain2dSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<item row="0" column="2">
|
||||
<widget class="QSpinBox" name="bppSpinBox">
|
||||
<property name="toolTip">
|
||||
<string>Spectrum gain</string>
|
||||
<string>Compression factor for frequency scale</string>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Bins/Pixel </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksAbove</enum>
|
||||
<property name="value">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="9">
|
||||
<widget class="QSlider" name="gainSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Waterfall gain</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksAbove</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="11">
|
||||
<item row="1" column="12">
|
||||
<widget class="QSlider" name="zero2dSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
@@ -399,8 +281,111 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<item row="0" column="4">
|
||||
<widget class="QSpinBox" name="fStartSpinBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Frequency at left edge of waterfall</p></body></html></string>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> Hz</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Start </string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>5000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>500</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="6">
|
||||
<widget class="QComboBox" name="paletteComboBox">
|
||||
<property name="toolTip">
|
||||
<string>Select waterfall palette</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="10">
|
||||
<widget class="QSlider" name="gainSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Waterfall gain</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksAbove</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="10">
|
||||
<widget class="QSlider" name="gain2dSlider">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Spectrum gain</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksAbove</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="14" rowspan="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@@ -412,56 +397,81 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="12">
|
||||
<widget class="QSpinBox" name="sbPercent2dPlot">
|
||||
<item row="1" column="4">
|
||||
<widget class="QSpinBox" name="waterfallAvgSpinBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set fractional size of spectrum in this window.</p></body></html></string>
|
||||
<string>Number of FFTs averaged (controls waterfall scrolling rate)</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>N Avg </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="13">
|
||||
<widget class="QSpinBox" name="smoSpinBox">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Smoothing of Linear Average spectrum</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> %</string>
|
||||
<string/>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Spec </string>
|
||||
<string>Smooth </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
<number>7</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="labPalette">
|
||||
<property name="text">
|
||||
<string> Palette </string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="adjust_palette_push_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Enter definition for a new color palette.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Adjust...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QSpinBox" name="offsetSpinBox">
|
||||
<property name="suffix">
|
||||
<string> Hz</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Offset </string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>5000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1500</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="7" rowspan="2">
|
||||
<widget class="Line" name="line_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5" rowspan="2">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QSpinBox" name="fSplitSpinBox">
|
||||
<property name="visible">
|
||||
<bool>false</bool>
|
||||
@@ -489,50 +499,69 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="6">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="labPalette">
|
||||
<property name="text">
|
||||
<string> Palette </string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="adjust_palette_push_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Enter definition for a new color palette.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Adjust...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="qsyPushButton">
|
||||
<property name="text">
|
||||
<string>QSY</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="offsetSpinBox">
|
||||
<widget class="QSpinBox" name="centerSpinBox">
|
||||
<property name="suffix">
|
||||
<string> Hz</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Offset </string>
|
||||
<string>Center </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>500</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>5000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1500</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="bppSpinBox">
|
||||
<property name="toolTip">
|
||||
<string>Compression factor for frequency scale</string>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>Bins/Pixel </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -72,7 +72,9 @@ SOURCES += \
|
||||
NetworkMessage.cpp \
|
||||
MessageClient.cpp \
|
||||
SelfDestructMessageBox.cpp \
|
||||
APRSISClient.cpp
|
||||
APRSISClient.cpp \
|
||||
messagereplydialog.cpp \
|
||||
keyeater.cpp
|
||||
|
||||
HEADERS += qt_helpers.hpp \
|
||||
pimpl_h.hpp pimpl_impl.hpp \
|
||||
@@ -96,7 +98,9 @@ HEADERS += qt_helpers.hpp \
|
||||
NetworkMessage.hpp \
|
||||
MessageClient.hpp \
|
||||
SelfDestructMessageBox.h \
|
||||
APRSISClient.h
|
||||
APRSISClient.h \
|
||||
messagereplydialog.h \
|
||||
keyeater.h
|
||||
|
||||
|
||||
INCLUDEPATH += qmake_only
|
||||
@@ -108,7 +112,8 @@ HEADERS += OmniRigTransceiver.hpp
|
||||
|
||||
FORMS += mainwindow.ui about.ui Configuration.ui widegraph.ui astro.ui \
|
||||
logqso.ui wf_palette_design_dialog.ui messageaveraging.ui echograph.ui \
|
||||
fastgraph.ui
|
||||
fastgraph.ui \
|
||||
messagereplydialog.ui
|
||||
|
||||
RC_FILE = wsjtx.rc
|
||||
RESOURCES = wsjtx.qrc
|
||||
|
||||