mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-21 23:55:13 -05:00
Add acronym decoder widget
This commit is contained in:
parent
197a22ae85
commit
4c6ee84f48
@ -106,3 +106,4 @@ Click to specify the name of the .txt file which received characters are logged
|
||||
|
||||
The received text area shows characters as they are received.
|
||||
|
||||
Holding the cursor over an acronym may show a tooltip with the decoded acronym.
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "plugin/pluginapi.h"
|
||||
#include "util/simpleserializer.h"
|
||||
#include "util/db.h"
|
||||
#include "util/rtty.h"
|
||||
#include "gui/basicchannelsettingsdialog.h"
|
||||
#include "gui/devicestreamselectiondialog.h"
|
||||
#include "dsp/dspengine.h"
|
||||
@ -482,6 +483,8 @@ RttyDemodGUI::RttyDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
|
||||
connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor()));
|
||||
connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
||||
|
||||
ui->text->addAcronyms(Rtty::m_acronyms);
|
||||
|
||||
ui->scopeContainer->setVisible(false);
|
||||
|
||||
// Hide developer only settings
|
||||
|
@ -916,7 +916,7 @@
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="text">
|
||||
<widget class="AcronymView" name="text">
|
||||
<property name="toolTip">
|
||||
<string>Received text</string>
|
||||
</property>
|
||||
@ -1293,6 +1293,12 @@
|
||||
<header>gui/glscopegui.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>AcronymView</class>
|
||||
<extends>QTextEdit</extends>
|
||||
<header>gui/acronymview.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>deltaFrequency</tabstop>
|
||||
|
@ -115,6 +115,12 @@ Predefined text supports the following variable substitutions:
|
||||
|
||||
The substitutions are applied when the Transmit Settings dialog is closed.
|
||||
|
||||
<h3>21: Transmitted Text</h3>
|
||||
|
||||
The trasnmitted text area shows characters as they are transmitted.
|
||||
|
||||
Holding the cursor over an acronym may show a tooltip with the decoded acronym.
|
||||
|
||||
<h2>API</h2>
|
||||
|
||||
Full details of the API can be found in the Swagger documentation. Below are a few examples.
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "plugin/pluginapi.h"
|
||||
#include "util/simpleserializer.h"
|
||||
#include "util/db.h"
|
||||
#include "util/rtty.h"
|
||||
#include "util/maidenhead.h"
|
||||
#include "gui/glspectrum.h"
|
||||
#include "gui/crightclickenabler.h"
|
||||
@ -476,6 +477,8 @@ RttyModGUI::RttyModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
|
||||
m_settings.setChannelMarker(&m_channelMarker);
|
||||
m_settings.setRollupState(&m_rollupState);
|
||||
|
||||
ui->transmittedText->addAcronyms(Rtty::m_acronyms);
|
||||
|
||||
ui->spectrumContainer->setVisible(false);
|
||||
|
||||
displaySettings();
|
||||
|
@ -751,7 +751,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<spacer name="horizontalSpacerSettings">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@ -854,11 +854,7 @@
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="transmittedText">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="AcronymView" name="transmittedText"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -960,6 +956,12 @@
|
||||
<header>gui/levelmeter.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>AcronymView</class>
|
||||
<extends>QTextEdit</extends>
|
||||
<header>gui/acronymview.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>deltaFrequency</tabstop>
|
||||
|
@ -57,7 +57,7 @@ void RttyModSettings::resetToDefaults()
|
||||
"UR 599 QTH IS ${location}",
|
||||
"TU DE ${callsign} CQ"
|
||||
});
|
||||
m_rgbColor = QColor(0, 105, 2).rgb();
|
||||
m_rgbColor = QColor(180, 205, 130).rgb();
|
||||
m_title = "RTTY Modulator";
|
||||
m_streamIndex = 0;
|
||||
m_useReverseAPI = false;
|
||||
|
@ -259,6 +259,7 @@ set(sdrbase_SOURCES
|
||||
util/simpleserializer.cpp
|
||||
util/serialutil.cpp
|
||||
#util/spinlock.cpp
|
||||
util/rtty.cpp
|
||||
util/uid.cpp
|
||||
util/units.cpp
|
||||
util/timeutil.cpp
|
||||
@ -491,6 +492,7 @@ set(sdrbase_HEADERS
|
||||
util/profiler.h
|
||||
util/radiosonde.h
|
||||
util/rtpsink.h
|
||||
util/rtty.h
|
||||
util/syncmessenger.h
|
||||
util/samplesourceserializer.h
|
||||
util/simpleserializer.h
|
||||
|
290
sdrbase/util/rtty.cpp
Normal file
290
sdrbase/util/rtty.cpp
Normal file
@ -0,0 +1,290 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2023 Jon Beniston, M7RCE //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "util/rtty.h"
|
||||
|
||||
// From http://www.ct2fzi.net/abreviations/abreviations.html
|
||||
const QHash<QString, QString> Rtty::m_acronyms = {
|
||||
{"AA", "After All"},
|
||||
{"AB", "All Before"},
|
||||
{"ABT", "About"},
|
||||
{"ACK", "Acknowledgement"},
|
||||
{"ADEE", "Addressee"},
|
||||
{"ADR", "Address"},
|
||||
{"AF", "Audio Frequency"},
|
||||
{"AGN", "Again"},
|
||||
{"AM", "Amplitude Modulation"},
|
||||
{"AMU", "Antenna Matching Unit"},
|
||||
{"ANS", "Answer"},
|
||||
{"ANT", "Antenna"},
|
||||
{"ARQ", "Automatic Repeat Request"},
|
||||
{"ATU", "Antenna Tuning Unit"},
|
||||
{"B4", "Before"},
|
||||
{"BCN", "Beacon"},
|
||||
{"BCNU", "Be Seeing You"},
|
||||
{"BD", "Bad"},
|
||||
{"BK", "Break"},
|
||||
{"BN", "Been"},
|
||||
{"BTH", "Both"},
|
||||
{"BTR", "Better"},
|
||||
{"BTW", "By The Way"},
|
||||
{"BTU", "Back To You"},
|
||||
{"C", "Correct"},
|
||||
{"CBA", "Callbook Address"},
|
||||
{"CFM", "Confirm"},
|
||||
{"CK", "Check"},
|
||||
{"CKT", "Circuit"},
|
||||
{"CL", "Closing Down"},
|
||||
{"CLBK", "Callbook"},
|
||||
{"CLD", "Called"},
|
||||
{"CLG", "Calling"},
|
||||
{"CMG", "Coming"},
|
||||
{"CNT", "Can't"},
|
||||
{"COMP", "Computer"},
|
||||
{"CONDX", "Conditions"},
|
||||
{"COZ", "Because"},
|
||||
{"CPI", "Copy"},
|
||||
{"CQ", "General Call"},
|
||||
{"CRD", "Card"},
|
||||
{"CS", "Callsign"},
|
||||
{"CTCSS", "Continuous Tone Coded Squelch System"},
|
||||
{"CU", "See You"},
|
||||
{"CUAGN", "See You Again"},
|
||||
{"CUD", "Could"},
|
||||
{"CUL", "See You Later"},
|
||||
{"CUM", "Come"},
|
||||
{"CUZ", "Because"},
|
||||
{"CW", "Continuous Wave / Morse"},
|
||||
{"DA", "Day"},
|
||||
{"DE", "From"},
|
||||
{"DF", "Direction Finding"},
|
||||
{"DIFF", "Difference"},
|
||||
{"DLD", "Delivered"},
|
||||
{"DLVD", "Delivered"},
|
||||
{"DN", "Down"},
|
||||
{"DR", "Dear"},
|
||||
{"DSB", "Double Side Band"},
|
||||
{"DSP", "Digital Signal Processing"},
|
||||
{"DSW", "Goodbye (Russian)"},
|
||||
{"DWN", "Down"},
|
||||
{"DX", "Distance"},
|
||||
{"EL", "Element"},
|
||||
{"EME", "Earth-Moon-Earth"},
|
||||
{"ENUF", "Enough"},
|
||||
{"ES", "And"},
|
||||
{"EU", "Europe"},
|
||||
{"EVE", "Evening"},
|
||||
{"FB", "Fine Business"},
|
||||
{"FER", "For"},
|
||||
{"FIO", "For Information Only"},
|
||||
{"FM", "Frequency Modulation"},
|
||||
{"FQ", "Frequency"},
|
||||
{"FREQ", "Frequency"},
|
||||
{"FSD", "Full Scale Deflection"},
|
||||
{"FSK", "Frequency Shift Keying"},
|
||||
{"FWD", "Forward"},
|
||||
{"FWIW", "For What It's Worth"},
|
||||
{"FYI", "For Your Information"},
|
||||
{"GA", "Good Afternoon"},
|
||||
{"GB", "Good Bye"},
|
||||
{"GD", "Good Day"},
|
||||
{"GE", "Good Evening"},
|
||||
{"GESS", "Guess"},
|
||||
{"GG", "Going"},
|
||||
{"GLD", "Glad"},
|
||||
{"GM", "Good Morning"},
|
||||
{"GMT", "Greenwich Mean Time"},
|
||||
{"GN", "Good Night"},
|
||||
{"GND", "Ground"},
|
||||
{"GP", "Ground Plane"},
|
||||
{"GPS", "Global Positioning System"},
|
||||
{"GS", "Green Stamp"},
|
||||
{"GUD", "Good"},
|
||||
{"GV", "Give"},
|
||||
{"GVG", "Giving"},
|
||||
{"HAGD", "Have A Good Day"},
|
||||
{"HAGWE", "Have A Good Weekend"},
|
||||
{"HF", "High Frequency"},
|
||||
{"HI", "High"},
|
||||
{"HPE", "Hope"},
|
||||
{"HQ", "Headquarters"},
|
||||
{"HR", "Here / Hour"},
|
||||
{"HRD", "Heard"},
|
||||
{"HV", "Have"},
|
||||
{"HVG", "Having"},
|
||||
{"HVY", "Heavy"},
|
||||
{"HW", "How"},
|
||||
{"IMHO", "In My Humble Opinion"},
|
||||
{"IMI", "Say again"},
|
||||
{"K", "Over"},
|
||||
{"KN", "Over"},
|
||||
{"LF", "Low Frequency"},
|
||||
{"LNG", "Long"},
|
||||
{"LP", "Long Path"},
|
||||
{"LSB", "Lower Sideband"},
|
||||
{"LSN", "Listen"},
|
||||
{"LTR", "Later"},
|
||||
{"LV", "Leave"},
|
||||
{"LVG", "Leaving"},
|
||||
{"LW", "Long Wire"},
|
||||
{"MGR", "Manager"},
|
||||
{"MI", "My"},
|
||||
{"MNI", "Many"},
|
||||
{"MOM", "Moment"},
|
||||
{"MS", "Meteor Scatter"},
|
||||
{"MSG", "Message"},
|
||||
{"N", "No"},
|
||||
{"NCS", "Net Control Station"},
|
||||
{"ND", "Nothing Doing"},
|
||||
{"NM", "No More"},
|
||||
{"NR", "Near / Number"},
|
||||
{"NW", "Now"},
|
||||
{"OB", "Old Boy"},
|
||||
{"OC", "Old Chap"},
|
||||
{"OM", "Old Man"},
|
||||
{"OP", "Operator"},
|
||||
{"OPR", "Operator"},
|
||||
{"OT", "Old Timer"},
|
||||
{"OW", "Old Woman"},
|
||||
{"PA", "Power Amplifier"},
|
||||
{"PBL", "Preamble"},
|
||||
{"PKG", "Package"},
|
||||
{"POV", "Point Of View"},
|
||||
{"PSE", "Please"},
|
||||
{"PSK", "Phase Shift Keying"},
|
||||
{"PT", "Point"},
|
||||
{"PTT", "Push To Talk"},
|
||||
{"PWR", "Power"},
|
||||
{"PX", "Prefix"},
|
||||
{"QRA", "Address"},
|
||||
{"QRG", "Frequency"},
|
||||
{"QRK", "Readability"},
|
||||
{"QRL", "Busy"},
|
||||
{"QRM", "Interference"},
|
||||
{"QRN", "Noise"},
|
||||
{"QRO", "High Power"},
|
||||
{"QRP", "Low Power"},
|
||||
{"QRQ", "Send Faster"},
|
||||
{"QRS", "Send Slower"},
|
||||
{"QRSS", "Send Very Slowly"},
|
||||
{"QRT", "Stop Sending"},
|
||||
{"QRU", "Nothing Further To Say"},
|
||||
{"QRV", "Ready"},
|
||||
{"QRX", "Wait"},
|
||||
{"QRZ", "Who Is Calling Me"},
|
||||
{"QSA", "Signal Strength"},
|
||||
{"QSB", "Fading"},
|
||||
{"QSK", "Break-in"},
|
||||
{"QSL", "All Received OK"},
|
||||
{"QSLL", "I Will Send A QSL Card"},
|
||||
{"QSO", "Contact"},
|
||||
{"QSP", "Relay A Message"},
|
||||
{"QSX", "Listening On Frequency"},
|
||||
{"QSY", "Change Frequency"},
|
||||
{"QTH", "Location"},
|
||||
{"R", "Received OK"},
|
||||
{"RC", "Ragchew"},
|
||||
{"RCD", "Recieved"},
|
||||
{"RCVR", "Receiver"},
|
||||
{"RE", "Regarding"},
|
||||
{"REF", "Reference"},
|
||||
{"RF", "Radio Frequency"},
|
||||
{"RFI", "Radio Frequency Interference"},
|
||||
{"RPT", "Repeat / Report"},
|
||||
{"RST", "Signal Report"},
|
||||
{"RTTY", "Radio Teletype"},
|
||||
{"RX", "Receive"},
|
||||
{"SA", "Say"},
|
||||
{"SDR", "Software Defined Radio"},
|
||||
{"SEZ", "Says"},
|
||||
{"SGD", "Signed"},
|
||||
{"SHUD", "Should"},
|
||||
{"SIG", "Signal"},
|
||||
{"SK", "End Of Work"},
|
||||
{"SKED", "Schedule"},
|
||||
{"SN", "Soon"},
|
||||
{"SP", "Short Path"},
|
||||
{"SRI", "Sorry"},
|
||||
{"SSB", "Single Sideband"},
|
||||
{"STN", "Station"},
|
||||
{"SUM", "Some"},
|
||||
{"SVC", "Service"},
|
||||
{"SWR", "Standing Wave Ratio"},
|
||||
{"TFC", "Traffic"},
|
||||
{"TIA", "Thanks In Advance"},
|
||||
{"TKS", "Thanks"},
|
||||
{"TMW", "Tomorrow"},
|
||||
{"TNC", "Terminal Node Controller"},
|
||||
{"TNX", "Thanks"},
|
||||
{"TR", "Transmit"},
|
||||
{"T/R", "Transmit/Receive"},
|
||||
{"TRBL", "Trouble"},
|
||||
{"TRF", "Tuned Radio Frequency"},
|
||||
{"TRIX", "Tricks"},
|
||||
{"TRX", "Transceiver"},
|
||||
{"TT", "That"},
|
||||
{"TTS", "That Is"},
|
||||
{"TU", "Thank You"},
|
||||
{"TVI", "Television Interference"},
|
||||
{"TX", "Transmit"},
|
||||
{"TXT", "Text"},
|
||||
{"U", "You"},
|
||||
{"UHF", "Ultra High Frequency"},
|
||||
{"UNLIS", "Unlicensed"},
|
||||
{"UR", "Your"},
|
||||
{"URS", "Yours"},
|
||||
{"UTC", "Coordinated Universal Time"},
|
||||
{"V", "Volts"},
|
||||
{"VHF", "Very High Frequency"},
|
||||
{"VE", "Understood"},
|
||||
{"VERT", "Vertical"},
|
||||
{"VFB", "Very Fine Business"},
|
||||
{"VFO", "Variable Frequency Oscillator"},
|
||||
{"VLF", "Very Low Frequency"},
|
||||
{"VOX", "Voice Operated"},
|
||||
{"VSB", "Vestigial Sideband"},
|
||||
{"VSWR", "Voltage Standing Wave Ratio"},
|
||||
{"VY", "Very"},
|
||||
{"W", "Watts"},
|
||||
{"WA", "Word After"},
|
||||
{"WAT", "What"},
|
||||
{"WATSA", "What Say"},
|
||||
{"WB", "Word Before"},
|
||||
{"WD", "Word"},
|
||||
{"WDS", "Words"},
|
||||
{"WID", "With"},
|
||||
{"WKD", "Worked"},
|
||||
{"WKG", "Working"},
|
||||
{"WL", "Will"},
|
||||
{"WPM", "Words Per Minute"},
|
||||
{"WRD", "Word"},
|
||||
{"WRK", "Work"},
|
||||
{"WUD", "Would"},
|
||||
{"WX", "Weather"},
|
||||
{"XCVR", "Transceiver"},
|
||||
{"XMTR", "Transmitter"},
|
||||
{"XTAL", "Crystal"},
|
||||
{"YF", "Wife"},
|
||||
{"YL", "Young Lady"},
|
||||
{"YR", "Year"},
|
||||
{"Z", "Zulu Time"},
|
||||
{"30", "I Have Nothing More to Send"},
|
||||
{"33", "Fondest Regards"},
|
||||
{"55", "Best Success"},
|
||||
{"73", "Best Wishes"},
|
||||
{"88", "Love And Kisses"},
|
||||
};
|
31
sdrbase/util/rtty.h
Normal file
31
sdrbase/util/rtty.h
Normal file
@ -0,0 +1,31 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2023 Jon Beniston, M7RCE //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef INCLUDE_UTIL_RTTY_H
|
||||
#define INCLUDE_UTIL_RTTY_H
|
||||
|
||||
#include <QHash>
|
||||
|
||||
#include "export.h"
|
||||
|
||||
class SDRBASE_API Rtty
|
||||
{
|
||||
public:
|
||||
static const QHash<QString, QString> m_acronyms;
|
||||
};
|
||||
|
||||
#endif /* INCLUDE_UTIL_RTTY_H */
|
@ -7,6 +7,7 @@ set(CMAKE_AUTOUIC OFF)
|
||||
set(sdrgui_SOURCES
|
||||
mainwindow.cpp
|
||||
gui/aboutdialog.cpp
|
||||
gui/acronymview.cpp
|
||||
gui/addpresetdialog.cpp
|
||||
gui/audiodialog.cpp
|
||||
gui/audioselectdialog.cpp
|
||||
@ -127,6 +128,7 @@ set(sdrgui_HEADERS
|
||||
gui/aboutdialog.h
|
||||
gui/accessiblevaluedial.h
|
||||
gui/accessiblevaluedialz.h
|
||||
gui/acronymview.h
|
||||
gui/addpresetdialog.h
|
||||
gui/audiodialog.h
|
||||
gui/audioselectdialog.h
|
||||
|
68
sdrgui/gui/acronymview.cpp
Normal file
68
sdrgui/gui/acronymview.cpp
Normal file
@ -0,0 +1,68 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2023 Jon Beniston, M7RCE //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <QEvent>
|
||||
#include <QHelpEvent>
|
||||
#include <QToolTip>
|
||||
#include <QDebug>
|
||||
|
||||
#include "acronymview.h"
|
||||
|
||||
AcronymView::AcronymView(QWidget* parent) :
|
||||
QPlainTextEdit(parent)
|
||||
{
|
||||
setMouseTracking(true);
|
||||
setReadOnly(true);
|
||||
}
|
||||
|
||||
bool AcronymView::event(QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::ToolTip)
|
||||
{
|
||||
QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event);
|
||||
QTextCursor cursor = cursorForPosition(helpEvent->pos());
|
||||
cursor.select(QTextCursor::WordUnderCursor);
|
||||
QString text = cursor.selectedText();
|
||||
// Remove trailing digits from METAR
|
||||
while (text.size() > 0 && text.right(1)[0].isDigit()) {
|
||||
text = text.left(text.size() - 1);
|
||||
}
|
||||
if (!text.isEmpty() && m_acronym.contains(text))
|
||||
{
|
||||
QToolTip::showText(helpEvent->globalPos(), QString("%1 - %2").arg(text).arg(m_acronym.value(text)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!text.isEmpty()) {
|
||||
qDebug() << "AcronymView::event: No tooltip for " << text;
|
||||
}
|
||||
QToolTip::hideText();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return QPlainTextEdit::event(event);
|
||||
}
|
||||
|
||||
void AcronymView::addAcronym(const QString& acronym, const QString& explanation)
|
||||
{
|
||||
m_acronym.insert(acronym, explanation);
|
||||
}
|
||||
|
||||
void AcronymView::addAcronyms(const QHash<QString, QString>& acronyms)
|
||||
{
|
||||
m_acronym.insert(acronyms);
|
||||
}
|
41
sdrgui/gui/acronymview.h
Normal file
41
sdrgui/gui/acronymview.h
Normal file
@ -0,0 +1,41 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2023 Jon Beniston, M7RCE //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef INCLUDE_GUI_ACRONYMVIEW_H
|
||||
#define INCLUDE_GUI_ACRONYMVIEW_H
|
||||
|
||||
#include <QHash>
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
#include "export.h"
|
||||
|
||||
// Displays text like a QPlainTextEdit, but adds tooltips for acronyms in the text
|
||||
class SDRGUI_API AcronymView : public QPlainTextEdit {
|
||||
Q_OBJECT
|
||||
|
||||
QHash<QString, QString> m_acronym;
|
||||
|
||||
public:
|
||||
|
||||
AcronymView(QWidget* parent = nullptr);
|
||||
bool event(QEvent* event);
|
||||
void addAcronym(const QString& acronym, const QString& explanation);
|
||||
void addAcronyms(const QHash<QString, QString>& acronyms);
|
||||
|
||||
};
|
||||
|
||||
#endif // INCLUDE_GUI_ACRONYMVIEW_H
|
Loading…
Reference in New Issue
Block a user