diff --git a/app.go b/app.go index 6bb366a..7fd4c7a 100644 --- a/app.go +++ b/app.go @@ -21105,3 +21105,10 @@ func (a *App) CheckHamlogKey(key string) (string, error) { defer cancel() return extsvc.CheckHamlogKey(ctx, nil, key) } + +// GetAudioMonitorPref says whether the network RX audio should be played +// through the Listening device — the remembered speaker choice behind the +// console's speaker button and the CAT panel's checkbox. +func (a *App) GetAudioMonitorPref() bool { + return a.settingOr(keyAudioMonitorOn, "1") == "1" +} diff --git a/changelog.json b/changelog.json index 69a1a79..a0338c0 100644 --- a/changelog.json +++ b/changelog.json @@ -23,7 +23,8 @@ "Icom network: after a session dies young, the redial waits 20 s so the rig can purge the old session first — stops the reconnect-die-reconnect spiral seen on the IC-7760, where each fresh session answered for a second and was then strangled by the previous one’s cleanup.", "Icom network audio, phase 5: the radio can now TAKE audio — with RX audio enabled, pick “Radio (network audio)” as the To-radio device and the voice keyer plays straight to the rig over the LAN, no cable, no virtual sound card. First tested on the IC-7760.", "Icom network audio: listening is now a remembered choice — Stop listening keeps the speakers off across reconnects and restarts, while the stream stays open for the QSO recorder and the voice keyer.", - "Icom console: a speaker button beside ON/OFF toggles listening to the network RX audio right from the console — no more trip through Settings → Audio; recordings and the voice keyer keep working either way, and the choice is remembered." + "Icom console: a speaker button beside ON/OFF toggles listening to the network RX audio right from the console — no more trip through Settings → Audio; recordings and the voice keyer keep working either way, and the choice is remembered.", + "CAT settings: a “Play it through the speakers” checkbox sits under the Icom RX-audio option — the same remembered switch as the console’s speaker button, applied immediately." ], "fr": [ "Console Elecraft : le S-mètre est calibré sur un vrai K3 — S9 et les +dB correspondent désormais à l’affichage de la radio (il lisait environ deux points S trop bas).", @@ -46,7 +47,8 @@ "Réseau Icom : après une session morte jeune, la renumérotation attend 20 s pour que la radio purge d’abord l’ancienne session — stoppe la spirale reconnexion-mort-reconnexion vue sur l’IC-7760, où chaque session neuve répondait une seconde avant d’être étranglée par le nettoyage de la précédente.", "Audio réseau Icom, phase 5 : la radio peut maintenant RECEVOIR de l’audio — avec le RX audio activé, choisissez « Radio (network audio) » comme périphérique To Radio et le voice keyer joue directement vers la radio par le LAN, sans câble ni carte son virtuelle. Premier test sur l’IC-7760.", "Audio réseau Icom : l’écoute est désormais un choix mémorisé — Stop listening garde les enceintes coupées à travers reconnexions et redémarrages, tandis que le flux reste ouvert pour l’enregistreur de QSO et le voice keyer.", - "Console Icom : un bouton haut-parleur à côté de ON/OFF bascule l’écoute du RX audio réseau depuis la console — fini l’aller-retour dans Réglages → Audio ; enregistrements et voice keyer continuent de fonctionner, et le choix est mémorisé." + "Console Icom : un bouton haut-parleur à côté de ON/OFF bascule l’écoute du RX audio réseau depuis la console — fini l’aller-retour dans Réglages → Audio ; enregistrements et voice keyer continuent de fonctionner, et le choix est mémorisé.", + "Réglages CAT : une case « Écouter dans les enceintes » sous l’option RX audio Icom — le même interrupteur mémorisé que le bouton haut-parleur de la console, appliqué immédiatement." ] }, { diff --git a/frontend/src/components/SettingsModal.tsx b/frontend/src/components/SettingsModal.tsx index 437434c..7e22adf 100644 --- a/frontend/src/components/SettingsModal.tsx +++ b/frontend/src/components/SettingsModal.tsx @@ -10,6 +10,7 @@ import { GetLookupSettings, SaveLookupSettings, ClearLookupCache, TestLookupProvider, GetListsSettings, SaveListsSettings, GetCATSettings, SaveCATSettings, GetRadios, SaveRadios, SetActiveRadio, ActiveRadioID, DiscoverFlexRadios, + GetAudioMonitorPref, ListProfiles, GetActiveProfile, SaveProfile, DeleteProfile, ActivateProfile, DuplicateProfile, GetRotators, SaveRotators, TestRotatorDevice, RotatorPark, RotatorStop, GetRotorPresets, SaveRotorPresets, ResetRotorPresets, @@ -1601,6 +1602,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged // The saved radios. The CAT panel edits ONE of them — whichever is on the air // — and the list is what makes switching possible without touching profiles. const [radios, setRadios] = useState([]); + const [listenPref, setListenPref] = useState(true); const [activeRadio, setActiveRadioId] = useState(''); const [radioBusy, setRadioBusy] = useState(false); const [catCfg, setCatCfg] = useState({ @@ -2204,6 +2206,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged // buttons. See rotorPresetsLoaded for the belt to this brace. try { setRotorPresets((((await GetRotorPresets()) ?? []) as any)); setRotorPresetsLoaded(true); } catch {} try { + try { setListenPref(!!(await GetAudioMonitorPref())); } catch {} const rl: any = await GetRadios(); setRadios(rl ?? []); // The backend is the only one who knows which radio is on the air — @@ -3626,6 +3629,22 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged {t('cat.icomNetAudioHint')} + {!!(catCfg as any).icom_net_audio && ( + + )} )} {catCfg.backend === 'tci' && ( diff --git a/frontend/src/lib/i18n.tsx b/frontend/src/lib/i18n.tsx index 198a9da..bd5fefa 100644 --- a/frontend/src/lib/i18n.tsx +++ b/frontend/src/lib/i18n.tsx @@ -376,7 +376,7 @@ const en: Dict = { 'cat.radioMyRig': 'MY_RIG', 'cat.radioMyRigPh': 'e.g. IC-7610 + PGXL', 'cat.radioMyRigHint': 'Written into MY_RIG on every QSO made with this radio, ahead of the per-band station in Operating conditions — that one says what you planned to use, this one says which radio is keying. Leave it empty to keep the old behaviour.', 'cat.radio': 'Radio', 'cat.radioNamePh': 'Name (e.g. FTDX10)', 'cat.radioAddHint': 'Add a radio, copied from this one', 'cat.radioRemoveHint': 'Remove this radio', 'cat.radioHint': 'Everything below configures the selected radio. Switch between them from the CAT button in the status bar — the logbook, the callsign and the rest of the station stay as they are.', 'cat.enable': 'Enable CAT', 'cat.brand': 'Radio', 'cat.backend': 'Backend', 'cat.optOmnirig': 'OmniRig', 'cat.optFlex': 'FlexRadio (API)', 'cat.share': 'Share CAT with other programs', 'cat.shareHint': 'Another program then reaches the radio through OpsLog — with every backend, not only the native ones. For Hamlib pick the rig model "Hamlib NET rigctl" and enter 127.0.0.1:4532; for TCI point the program at 127.0.0.1:40001.', 'cat.shareProto': 'Protocol', 'cat.shareRigctl': 'Hamlib NET rigctl — WSJT-X, JTDX, MSHV, Log4OM', 'cat.shareTci': 'TCI — Expert Electronics', 'cat.shareTciClash': 'The CAT backend is TCI too: ExpertSDR is probably already using port 40001 on this PC. Give the server another port, or share over Hamlib instead.', 'cat.sharePort': 'Sharing port', 'cat.pttKey': 'Enable PTT hotkey', 'cat.pttKeyPress': 'Press a key…', 'cat.pttKeyNone': 'Click to set a key', 'cat.pttKeyClear': 'Clear', 'cat.pttKeyToggle': 'Toggle mode (press to key, press again to unkey)', 'cat.pttKeyHint': 'While OpsLog is focused, this key keys the transmitter — held down by default (release to stop), or latched in toggle mode. It uses the Audio → PTT method (CAT / RTS / DTR), falling back to CAT keying. Pick a key you never type while logging (e.g. Pause, ScrollLock, or a footswitch mapped to one) — OpsLog swallows it so it never lands in a field.', 'cat.optXiegu': 'Xiegu (USB)', 'cat.xieguPort': 'Xiegu CAT port', 'cat.xieguBaudHint': 'Must match the radio menu (G90 default: 19200).', 'cat.xieguAddrHint': 'Factory CI-V address of the G90/X6100 family: 0x70.', 'cat.xieguPTTLine': 'How the rig is keyed', 'cat.xieguPTTCiv': 'CI-V command', 'cat.xieguPTTHint': 'A G90 does not transmit on the CI-V command: interfaces like the DE-19 key it on RTS or DTR. Pick the line yours uses \u2014 it is also what lets WSJT-X transmit through the shared CAT link.', 'cat.optYaesu': 'Yaesu (USB)', 'cat.optKenwood': 'Kenwood (USB, network)', 'cat.optElecraft': 'Elecraft K3/K4 (USB, network)', 'cat.elecraftHint': 'Digital modes automatically use DATA A (MD6+DT0) — the sub-mode FT8 audio needs.', 'cat.civTrace': 'Log the CAT protocol', 'cat.civTraceHint': 'Writes every CAT frame to and from the radio into the log \u2014 CI-V as hex, Kenwood as the text it exchanges. For reporting a rig that answers oddly \u2014 a button that does the wrong thing, a frequency that jumps. Session only: it is a diagnostic, and it makes the log large.', 'cat.kenwoodPort': 'Kenwood COM port', 'cat.kenwoodPortHint': 'The rig\u2019s CAT/USB serial port (TS-590, TS-890, TS-990, TS-2000, and Elecraft K3/K4 which speak the same dialect).', 'cat.kenwoodBaudHint': 'Must match MENU on the radio: a TS-590 leaves the factory at 9600, a TS-890 at 115200.', 'cat.kwLink': 'Connection', 'cat.kwLinkBridge': 'RS-232 to Ethernet (serial bridge)', 'cat.kwLinkNative': 'The radio\u2019s own network protocol', 'cat.kwLinkNativeHint': 'Not supported yet. It is a session with its own framing and login, not the CAT byte stream over a socket, so it has to be implemented per radio — and against one. Use USB, or a serial-to-Ethernet bridge, until then.', 'cat.kwLinkUsb': 'USB / serial', 'cat.kwLinkNet': 'Network', 'cat.kenwoodHostHint': 'The network option carries the SAME CAT commands over TCP instead of a cable: a serial-over-network bridge (ser2net, an Ethernet-serial adapter, a Raspberry Pi in the shack), or a radio that exposes its raw CAT port. It is NOT Hamlib — port 4532 is rigctld, a different protocol, and it is what OpsLog itself SERVES under \u201cShare CAT\u201d.', 'cat.kenwoodHost': 'Or over the network (host:port)', 'cat.yaesuPort': 'Yaesu CAT port', 'cat.yaesuPortHint': 'The rig CAT port — on an FTDX10/FTDX101 over USB this is the ENHANCED COM port, not the standard one.', 'cat.yaesuBaudHint': 'Must match the radio menu (FTDX10/FTDX101 default: 38400).', 'cat.lowerLines': 'Lower the DTR and RTS lines on connect', 'cat.lowerLinesHint': 'If your radio is always on TX, tick this.', 'cat.kwDataMode': 'Data modes (FT8/PSK…) use', 'cat.kwDataUsb': 'USB', 'cat.kwDataMd6': 'DATA A — MD6+DT0 (Elecraft K3/K4)', 'cat.kwDataKeep': 'Leave the rig’s mode unchanged', 'cat.kwDataHint': 'What OpsLog sets on the rig for a data mode. No single command fits every rig: an Elecraft K3/K4 wants DATA (MD6); a TS-590SG/TS-990S data mode is a USB modifier set on the rig, so pick USB or, safest, "Leave unchanged" and switch the rig to DATA yourself. On MD6 a plain Kenwood (TS-590/990) would land on FSK/RTTY — do not use it there.', 'cat.optIcom': 'Icom (CI-V USB)', 'cat.optIcomNet': 'Icom (CI-V network)', 'cat.optTci': 'TCI', 'flxpw.title': 'FlexRadio \u2014 power per band and mode', 'flxpw.hint': 'TX power applied when the band or mode changes. Leave a box empty to leave the power alone.', 'flxpw.band': 'Band', 'flxb.title': 'FlexRadio \u2014 per-band antennas and power', 'flxb.hint': 'Antennas are applied when the band changes; power when the band or the mode changes. Leave a power box empty to leave it alone.', 'flxb.rxAnt': 'RX antenna', 'flxb.txAnt': 'TX antenna', 'flxb.noRadio': 'No antennas reported yet \u2014 connect the FlexRadio, then reopen this panel.', 'flxpw.phone': 'Phone', 'flxpw.digi': 'Digital', 'flxpw.noBands': 'No bands configured \u2014 add them in Lists \u2192 Bands.', 'flxpw.saved': 'Saved', 'cat.icomNetHost': 'Rig IP / hostname', 'cat.icomNetUser': 'Network user (ID)', 'cat.icomNetPass': 'Network password', 'cat.icomNetHint': "Connects to the rig's built-in LAN server directly — no RS-BA1 or Remote Utility needed (close them first). Use the Network User1 ID/Password set in the rig's Network menu. A rig in standby is powered on automatically.", - 'cat.icomNetAudio': 'Stream RX audio over the network (experimental)', + 'cat.icomNetListen': 'Play it through the speakers', 'cat.icomNetListenHint': 'Untick to keep the stream silent — recordings and the voice keyer still work. Same switch as the speaker button on the Icom console.', 'cat.icomNetAudio': 'Stream RX audio over the network (experimental)', 'cat.icomNetAudioHint': 'Play the rig’s received audio through your Listening device (Settings → Audio) over the 50003 stream. Experimental — the audio framing is pending on-rig verification; leave off if control misbehaves.', 'cat.omnirigRig': 'OmniRig rig slot', 'cat.omnirigVfo': 'VFO to read', 'cat.omnirigVfoAuto': 'As reported by the rig file', 'cat.omnirigVfoA': 'Always VFO A (main)', 'cat.omnirigVfoB': 'Always VFO B (sub)', 'cat.omnirigVfoHint': 'OmniRig reports the active VFO from the rig file, and some files get it wrong — the frequency then follows the other VFO and appears frozen. Force one here if that happens.', 'cat.flexIp': 'FlexRadio IP', 'cat.port': 'Port', 'cat.flexSpots': 'Show cluster spots on the panadapter', 'cat.flexSpotsHint': "(spots from OpsLog's DX cluster appear on the radio, auto-expire after 30 min)", 'cat.flexDecodeSpots': 'Show WSJT-X decodes on the panadapter', 'cat.flexDecodeSpotsHint': '(heard FT8/FT4 stations from your WSJT-X/JTDX UDP feed, one spot per call)', 'cat.flexDecodeSecs': 'Display for', 'cat.flexDecodeSecsHint': 'seconds before a station is removed', 'cat.flexOptions': 'What OpsLog does with the radio', 'flexzoom.title': 'Zoom the panadapter on a spot click', 'flexzoom.enable': 'Resize the panadapter when a spot is clicked', 'flexzoom.cw': 'CW', 'flexzoom.ssb': 'Phone', 'flexzoom.digi': 'Digital', 'flexzoom.centre': 'Re-centre on the spot as well', 'flexzoom.centreHint': '(off keeps your window where you put it and only changes its width)', 'spotcol.title': 'Spot colours on the panadapter', 'spotcol.enable': 'Colour spots by status', 'spotcol.reset': 'restore defaults', 'spotcol.send': 'Send this status to the panadapter', 'spotcol.text': 'Text colour', 'spotcol.bg': 'Background colour', 'spotcol.s_new': 'Entity never worked', 'spotcol.s_new-band-mode': 'Entity new on this band AND mode', 'spotcol.s_new-band': 'Entity new on this band', 'spotcol.s_new-mode': 'Entity new in this mode', 'spotcol.s_new-slot': 'New slot', 'spotcol.s_new-pota': 'New POTA park', 'spotcol.s_new-county': 'New US county', 'spotcol.s_new-pfx': 'New WPX prefix', 'spotcol.s_my-call': 'My own callsign', 'spotcol.s_worked': 'Callsign already worked', 'spotcol.s_none': 'Nothing new', 'cat.flexDvkDax': 'Switch transmit audio to DAX for voice messages', @@ -887,7 +887,7 @@ const fr: Dict = { 'cat.radioMyRig': 'MY_RIG', 'cat.radioMyRigPh': 'ex. IC-7610 + PGXL', 'cat.radioMyRigHint': "Inscrit dans MY_RIG sur chaque QSO fait avec cette radio, avant la station par bande des Conditions de trafic — celle-ci dit ce qui était prévu, celle-là dit quelle radio émet. Laisser vide conserve l'ancien comportement.", 'cat.radio': 'Radio', 'cat.radioNamePh': 'Nom (ex. FTDX10)', 'cat.radioAddHint': 'Ajouter une radio, copiée sur celle-ci', 'cat.radioRemoveHint': 'Supprimer cette radio', 'cat.radioHint': "Tout ce qui suit configure la radio sélectionnée. On passe de l'une à l'autre par le bouton CAT de la barre d'état — le carnet, l'indicatif et le reste de la station ne bougent pas.", 'cat.enable': 'Activer le CAT', 'cat.brand': 'Radio', 'cat.backend': 'Backend', 'cat.optOmnirig': 'OmniRig', 'cat.optFlex': 'FlexRadio (API)', 'cat.share': 'Partager le CAT avec les autres logiciels', 'cat.shareHint': "Un autre logiciel atteint alors la radio à travers OpsLog — avec tous les backends, pas seulement les natifs. Pour Hamlib, choisissez le modèle « Hamlib NET rigctl » et saisissez 127.0.0.1:4532 ; pour TCI, pointez le logiciel sur 127.0.0.1:40001.", 'cat.shareProto': 'Protocole', 'cat.shareRigctl': 'Hamlib NET rigctl — WSJT-X, JTDX, MSHV, Log4OM', 'cat.shareTci': 'TCI — Expert Electronics', 'cat.shareTciClash': 'Le backend CAT est aussi en TCI : ExpertSDR occupe probablement déjà le port 40001 sur ce PC. Donnez un autre port au serveur, ou partagez en Hamlib.', 'cat.sharePort': 'Port de partage', 'cat.pttKey': 'Activer la touche PTT', 'cat.pttKeyPress': 'Appuyez sur une touche…', 'cat.pttKeyNone': 'Cliquez pour définir une touche', 'cat.pttKeyClear': 'Effacer', 'cat.pttKeyToggle': 'Mode bascule (appui = émission, nouvel appui = arrêt)', 'cat.pttKeyHint': "Quand OpsLog a le focus, cette touche passe la radio en émission — maintenue par défaut (relâcher pour arrêter), ou verrouillée en mode bascule. Elle utilise la méthode PTT de Audio → PTT (CAT / RTS / DTR), avec repli sur le CAT. Choisissez une touche que vous ne tapez jamais en journalisant (ex. Pause, Arrêt défil., ou une pédale mappée dessus) — OpsLog l'intercepte pour qu'elle n'atterrisse pas dans un champ.", 'cat.optXiegu': 'Xiegu (USB)', 'cat.xieguPort': 'Port CAT Xiegu', 'cat.xieguBaudHint': 'Doit correspondre au menu de la radio (G90 par défaut : 19200).', 'cat.xieguAddrHint': "Adresse CI-V d'usine de la famille G90/X6100 : 0x70.", 'cat.xieguPTTLine': 'Passage en \u00e9mission', 'cat.xieguPTTCiv': 'Commande CI-V', 'cat.xieguPTTHint': 'Un G90 ne passe pas en \u00e9mission sur la commande CI-V : les interfaces comme le DE-19 le pilotent par RTS ou DTR. Choisissez la ligne de la v\u00f4tre \u2014 c\u2019est aussi ce qui permet \u00e0 WSJT-X d\u2019\u00e9mettre via le partage CAT.', 'cat.optYaesu': 'Yaesu (USB)', 'cat.optKenwood': 'Kenwood (USB, réseau)', 'cat.optElecraft': 'Elecraft K3/K4 (USB, réseau)', 'cat.elecraftHint': 'Les modes numériques passent automatiquement en DATA A (MD6+DT0) — le sous-mode dont l’audio FT8 a besoin.', 'cat.civTrace': 'Journaliser le protocole CAT', 'cat.civTraceHint': '\u00c9crit dans le journal chaque trame CAT \u00e9chang\u00e9e avec la radio \u2014 CI-V en hexad\u00e9cimal, Kenwood en texte. Pour signaler une radio qui r\u00e9pond de travers \u2014 un bouton qui fait autre chose, une fr\u00e9quence qui saute. Valable pour la session seulement : c\u2019est un diagnostic, et le journal grossit vite.', 'cat.kenwoodPort': 'Port COM Kenwood', 'cat.kenwoodPortHint': 'Le port s\u00e9rie CAT/USB de la radio (TS-590, TS-890, TS-990, TS-2000, ainsi que les Elecraft K3/K4 qui parlent le m\u00eame dialecte).', 'cat.kenwoodBaudHint': 'Doit correspondre au MENU de la radio : un TS-590 sort d\u2019usine \u00e0 9600, un TS-890 \u00e0 115200.', 'cat.kwLink': 'Connexion', 'cat.kwLinkBridge': 'RS-232 vers Ethernet (pont s\u00e9rie)', 'cat.kwLinkNative': 'Protocole r\u00e9seau propre \u00e0 la radio', 'cat.kwLinkNativeHint': "Pas encore pris en charge. C'est une session avec son propre encapsulage et son identification, pas le flux CAT dans une socket : cela s'impl\u00e9mente radio par radio, et face \u00e0 une vraie. En attendant : USB, ou un pont s\u00e9rie-Ethernet.", 'cat.kwLinkUsb': 'USB / série', 'cat.kwLinkNet': 'Réseau', 'cat.kenwoodHostHint': "L'option réseau transporte les MÊMES commandes CAT en TCP au lieu d'un câble : un pont série-réseau (ser2net, adaptateur Ethernet-série, Raspberry Pi au shack), ou une radio qui expose son port CAT brut. Ce n'est PAS du Hamlib — le port 4532 est celui de rigctld, un autre protocole, et c'est celui qu'OpsLog lui-même PROPOSE sous « Partager le CAT ».", 'cat.kenwoodHost': 'Ou par le r\u00e9seau (h\u00f4te:port)', 'cat.yaesuPort': 'Port CAT Yaesu', 'cat.yaesuPortHint': "Le port CAT de la radio — sur un FTDX10/FTDX101 en USB c'est le port COM ENHANCED, pas le standard.", 'cat.yaesuBaudHint': 'Doit correspondre au menu de la radio (FTDX10/FTDX101 par défaut : 38400).', 'cat.lowerLines': 'Abaisser les lignes DTR et RTS à la connexion', 'cat.lowerLinesHint': 'Si votre radio est toujours en émission, cochez ceci.', 'cat.kwDataMode': 'Modes data (FT8/PSK…)', 'cat.kwDataUsb': 'USB', 'cat.kwDataMd6': 'DATA A — MD6+DT0 (Elecraft K3/K4)', 'cat.kwDataKeep': 'Ne pas changer le mode de la radio', 'cat.kwDataHint': "Ce qu'OpsLog règle sur la radio pour un mode data. Aucune commande unique ne convient à toutes : un Elecraft K3/K4 veut DATA (MD6) ; sur un TS-590SG/TS-990S le mode data est un modificateur d'USB réglé sur la radio, choisissez donc USB ou, plus sûr, « Ne pas changer » et passez la radio en DATA vous-même. En MD6 un Kenwood classique (TS-590/990) tomberait en FSK/RTTY — à ne pas utiliser là.", 'cat.optIcom': 'Icom (CI-V USB)', 'cat.optIcomNet': 'Icom (CI-V réseau)', 'cat.optTci': 'TCI', 'flxpw.title': 'FlexRadio \u2014 puissance par bande et par mode', 'flxpw.hint': 'Puissance d\u2019\u00e9mission appliqu\u00e9e au changement de bande ou de mode. Laissez une case vide pour ne pas toucher \u00e0 la puissance.', 'flxpw.band': 'Bande', 'flxb.title': 'FlexRadio \u2014 antennes et puissance par bande', 'flxb.hint': 'Les antennes sont appliqu\u00e9es au changement de bande ; la puissance au changement de bande ou de mode. Laissez une case de puissance vide pour ne pas y toucher.', 'flxb.rxAnt': 'Antenne RX', 'flxb.txAnt': 'Antenne TX', 'flxb.noRadio': 'Aucune antenne remont\u00e9e \u2014 connectez le FlexRadio, puis rouvrez ce panneau.', 'flxpw.phone': 'Phonie', 'flxpw.digi': 'Num\u00e9rique', 'flxpw.noBands': 'Aucune bande configur\u00e9e \u2014 ajoutez-les dans Listes \u2192 Bandes.', 'flxpw.saved': 'Enregistr\u00e9', 'cat.icomNetHost': 'IP / nom d\'hôte du poste', 'cat.icomNetUser': 'Utilisateur réseau (ID)', 'cat.icomNetPass': 'Mot de passe réseau', 'cat.icomNetHint': "Se connecte directement au serveur LAN intégré du poste — sans RS-BA1 ni Remote Utility (ferme-les d'abord). Utilise l'ID/mot de passe Network User1 configurés dans le menu Network du poste. Un poste en veille est allumé automatiquement.", - 'cat.icomNetAudio': 'Diffuser l’audio RX par le réseau (expérimental)', + 'cat.icomNetListen': 'Écouter dans les enceintes', 'cat.icomNetListenHint': 'Décochez pour garder le flux silencieux — enregistrements et voice keyer fonctionnent toujours. Même interrupteur que le bouton haut-parleur de la console Icom.', 'cat.icomNetAudio': 'Diffuser l’audio RX par le réseau (expérimental)', 'cat.icomNetAudioHint': 'Écoute l’audio reçu du poste sur ton périphérique d’écoute (Réglages → Audio) via le flux 50003. Expérimental — le format audio reste à vérifier sur le poste ; laisse désactivé si le contrôle se comporte mal.', 'cat.omnirigRig': 'Slot OmniRig', 'cat.omnirigVfo': 'VFO à lire', 'cat.omnirigVfoAuto': 'Selon le fichier radio', 'cat.omnirigVfoA': 'Toujours le VFO A (principal)', 'cat.omnirigVfoB': 'Toujours le VFO B (secondaire)', 'cat.omnirigVfoHint': "OmniRig indique le VFO actif d'après le fichier radio, et certains fichiers se trompent — la fréquence suit alors l'autre VFO et paraît figée. Forcez-en un ici le cas échéant.", 'cat.flexIp': 'IP FlexRadio', 'cat.port': 'Port', 'cat.flexSpots': 'Afficher les spots cluster sur le panadapter', 'cat.flexSpotsHint': "(les spots du cluster DX d'OpsLog apparaissent sur la radio, expirent après 30 min)", 'cat.flexDecodeSpots': 'Afficher les décodes WSJT-X sur le panadapter', 'cat.flexDecodeSpotsHint': '(stations FT8/FT4 entendues via ton flux UDP WSJT-X/JTDX, un spot par station)', 'cat.flexDecodeSecs': 'Affichage pendant', 'cat.flexDecodeSecsHint': 'secondes avant retrait d\'une station', 'cat.flexOptions': "Ce qu’OpsLog fait avec la radio", 'flexzoom.title': 'Zoomer le panadapter au clic sur un spot', 'flexzoom.enable': 'Redimensionner le panadapter au clic sur un spot', 'flexzoom.cw': 'CW', 'flexzoom.ssb': 'Phonie', 'flexzoom.digi': 'Numérique', 'flexzoom.centre': 'Recentrer aussi sur le spot', 'flexzoom.centreHint': '(décoché, ta fenêtre reste où tu l’as mise et seule sa largeur change)', 'spotcol.title': 'Couleurs des spots sur le panadapter', 'spotcol.enable': 'Colorer les spots selon leur statut', 'spotcol.reset': 'valeurs par défaut', 'spotcol.send': 'Envoyer ce statut au panadapter', 'spotcol.text': 'Couleur du texte', 'spotcol.bg': 'Couleur de fond', 'spotcol.s_new': 'Entité jamais contactée', 'spotcol.s_new-band-mode': 'Entité nouvelle sur cette bande ET ce mode', 'spotcol.s_new-band': 'Entité nouvelle sur cette bande', 'spotcol.s_new-mode': 'Entité nouvelle dans ce mode', 'spotcol.s_new-slot': 'Nouveau slot', 'spotcol.s_new-pota': 'Nouveau parc POTA', 'spotcol.s_new-county': 'Nouveau comté US', 'spotcol.s_new-pfx': 'Nouveau préfixe WPX', 'spotcol.s_my-call': 'Mon propre indicatif', 'spotcol.s_worked': 'Indicatif déjà contacté', 'spotcol.s_none': 'Rien de neuf', diff --git a/frontend/wailsjs/go/main/App.d.ts b/frontend/wailsjs/go/main/App.d.ts index 8fe20f3..31df129 100644 --- a/frontend/wailsjs/go/main/App.d.ts +++ b/frontend/wailsjs/go/main/App.d.ts @@ -406,6 +406,8 @@ export function GetAntGeniusSettings():Promise; export function GetAntGeniusStatus():Promise; +export function GetAudioMonitorPref():Promise; + export function GetAudioSettings():Promise; export function GetAutostartPrograms():Promise>; diff --git a/frontend/wailsjs/go/main/App.js b/frontend/wailsjs/go/main/App.js index 5895dab..31ce89f 100644 --- a/frontend/wailsjs/go/main/App.js +++ b/frontend/wailsjs/go/main/App.js @@ -750,6 +750,10 @@ export function GetAntGeniusStatus() { return window['go']['main']['App']['GetAntGeniusStatus'](); } +export function GetAudioMonitorPref() { + return window['go']['main']['App']['GetAudioMonitorPref'](); +} + export function GetAudioSettings() { return window['go']['main']['App']['GetAudioSettings'](); }