#include #include #include #include #include #include "gettext.h" #include "main.h" #include "globals.h" #include "status.h" #include "configuration.h" #include "fl_digi.h" #include "versions.h" #include "waterfall.h" #include "modem.h" #include "psk.h" #include "cw.h" #include "mfsk.h" #include "rtty.h" #include "olivia.h" #include "dominoex.h" #include "feld.h" #include "throb.h" #include "wwv.h" #include "analysis.h" #include "rigsupport.h" #include "Viewer.h" #define STATUS_FILENAME "status" status progStatus = { MODE_BPSK31, // trx_mode lastmode; 50, // int mainX; 50, // int mainY; WMIN, // int mainW; HMIN, // int mainH; Hrcvtxt, // int RxTextHeight; false, // bool rigShown; 50, // int rigX; 50, // int rigY; 560, // int rigW 80, // int rigH 1000, // int carrier; 1, // int mag; NORMAL, // WFdisp::WFspeed -20, // reflevel -70, // ampspan 40, // uint VIEWERnchars 50, // uint VIEWERxpos 50, // uint VIEWERypos false, // bool VIEWERvisible false, // bool LOGenabled 5.0, // double sldrSquelchValue true, // bool afconoff true, // bool sqlonoff 1.0, // double RcvMixer; 1.0, // double XmtMixer; 0, // int scopeX; 0, // int scopeY; false, // bool scopeVisible; 50, // int scopeW; 50, // int scopeH; "macros.mdf", // string LastMacroFile; false, // bool spot_recv false, // bool spot_log false // bool bLastStateRead; }; void status::saveLastState() { mainX = fl_digi_main->x(); mainY = fl_digi_main->y(); mainW = fl_digi_main->w(); mainH = fl_digi_main->h(); RxTextHeight = ReceiveText->h(); carrier = wf->Carrier(); mag = wf->Mag(); speed = wf->Speed(); reflevel = progdefaults.wfRefLevel; ampspan = progdefaults.wfAmpSpan; LOGenabled = false; Fl_Menu_Item *mnulogging = getMenuItem(_("Log File")); if (mnulogging) LOGenabled = mnulogging->value(); VIEWERvisible = false; if (dlgViewer && dlgViewer->visible()) { VIEWERxpos = dlgViewer->x(); VIEWERypos = dlgViewer->y(); VIEWERvisible = true; } rigShown = false; if (rigcontrol && rigcontrol->visible()) { rigX = rigcontrol->x(); rigY = rigcontrol->y(); rigW = rigcontrol->w(); rigH = rigcontrol->h(); rigShown = true; } scopeVisible = false; if (scopeview && scopeview->visible()) { scopeVisible = true; scopeX = scopeview->x(); scopeY = scopeview->y(); scopeW = scopeview->w(); scopeH = scopeview->h(); } Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME); spref.set("version", PACKAGE_VERSION); spref.set("mode", (int)lastmode); spref.set("squelch_enabled", sqlonoff); spref.set("squelch_level", sldrSquelchValue); spref.set("afc_enabled", afconoff); spref.set("rx_mixer_level", RcvMixer); spref.set("tx_mixer_level", XmtMixer); spref.set("rx_text_height", RxTextHeight); spref.set("log_enabled", LOGenabled); spref.set("wf_carrier", carrier); spref.set("wf_mag", mag); spref.set("wf_speed", speed); spref.set("wf_reflevel", reflevel); spref.set("wf_ampspan", ampspan); spref.set("main_x", mainX); spref.set("main_y", mainY); spref.set("main_w", mainW); spref.set("main_h", mainH); spref.set("rigctl_visible", rigShown); spref.set("rigctl_x", rigX); spref.set("rigctl_y", rigY); spref.set("rigctl_w", rigW); spref.set("rigctl_h", rigH); spref.set("viewer_visible", VIEWERvisible); spref.set("viewer_x", static_cast(VIEWERxpos)); spref.set("viewer_y", static_cast(VIEWERypos)); spref.set("viewer_nchars", static_cast(VIEWERnchars)); spref.set("scope_visible", scopeVisible); spref.set("scope_x", scopeX); spref.set("scope_y", scopeY); spref.set("scope_w", scopeW); spref.set("scope_h", scopeH); spref.set("last_macro_file", LastMacroFile.c_str()); spref.set("spot_recv", spot_recv); spref.set("spot_log", spot_recv); } void status::loadLastState() { Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME); char version[64]; version[sizeof(version)-1] = '\0'; bLastStateRead = spref.get("version", version, "", sizeof(version)-1); // Skip loading the rest of the status variables if we didn't read a // version name/value pair; also clear everything to avoid creating // entries out of existing file contents. if (!bLastStateRead) { while (spref.entries()) spref.deleteEntry(spref.entry(0)); return; } int i; spref.get("mode", i, i); lastmode = (trx_mode) i; spref.get("squelch_enabled", i, i); sqlonoff = i; spref.get("squelch_level", sldrSquelchValue, sldrSquelchValue); spref.get("afc_enabled", i, i); afconoff = i; spref.get("rx_mixer_level", RcvMixer, RcvMixer); spref.get("tx_mixer_level", XmtMixer, XmtMixer); spref.get("rx_text_height", RxTextHeight, RxTextHeight); spref.get("log_enabled", i, i); LOGenabled = i; spref.get("wf_carrier", carrier, carrier); spref.get("wf_mag", mag, mag); spref.get("wf_speed", speed, speed); spref.get("wf_reflevel", reflevel, reflevel); progdefaults.wfRefLevel = reflevel; spref.get("wf_ampspan", ampspan, ampspan); progdefaults.wfAmpSpan = ampspan; spref.get("main_x", mainX, mainX); spref.get("main_y", mainY, mainY); spref.get("main_w", mainW, mainW); spref.get("main_h", mainH, mainH); spref.get("rigctl_visible", i, i); rigShown = i; spref.get("rigctl_x", rigX, rigX); spref.get("rigctl_y", rigY, rigY); spref.get("rigctl_w", rigW, rigW); spref.get("rigctl_h", rigH, rigH); spref.get("viewer_visible", i, i); VIEWERvisible = i; spref.get("viewer_x", i, i); VIEWERxpos = i; spref.get("viewer_y", i, i); VIEWERypos = i; spref.get("viewer_nchars", i, i); VIEWERnchars = i; spref.get("scope_visible", i, i); scopeVisible = i; spref.get("scope_x", scopeX, scopeX); spref.get("scope_y", scopeY, scopeY); spref.get("scope_w", scopeW, scopeW); spref.get("scope_h", scopeH, scopeH); char *defbuffer; spref.get("last_macro_file", defbuffer, "macros.mdf"); LastMacroFile = defbuffer; if (defbuffer) free(defbuffer); spref.get("spot_recv", i, i); spot_recv = i; spref.get("spot_log", i, i); spot_log = i; } void status::initLastState() { if (!bLastStateRead) loadLastState(); init_modem(lastmode); while (!active_modem) MilliSleep(100); wf->opmode(); wf->Mag(mag); wf->Speed(speed); wf->setRefLevel(); wf->setAmpSpan(); wf->movetocenter(); FL_LOCK_D(); btn_afconoff->value(afconoff); btn_sqlonoff->value(sqlonoff); sldrSquelch->value(sldrSquelchValue); valRcvMixer->value(RcvMixer * 100.0); valXmtMixer->value(XmtMixer * 100.0); FL_UNLOCK_D(); { fl_digi_main->resize(mainX, mainY, mainW, mainH); int X, Y, W, H, Yx, Hx; X = ReceiveText->x(); Y = ReceiveText->y(); W = ReceiveText->w(); H = ReceiveText->h(); Yx = TransmitText->y(); Hx = TransmitText->h(); // ReceiveText->resize(X,Y,W,RxTextHeight); // FHdisp->resize(X,Y,W,RxTextHeight); // TransmitText->resize(X, Y + RxTextHeight, W, H + Hx - RxTextHeight); TiledGroup->position( X, Y + H, X, Y + RxTextHeight); } if (!progdefaults.docked_rig_control && rigShown == true) { if (!rigcontrol) createRigDialog(); rigcontrol->resize(rigX, rigY, rigW, rigH); rigcontrol->show(); } if (VIEWERvisible == true) openViewer(); if (scopeview) { scopeview->resize(scopeX, scopeY, scopeW, scopeH); if (scopeVisible == true) scopeview->show(); } if (LOGenabled) { Fl_Menu_Item *mnulogging = getMenuItem(_("Log File")); if (!mnulogging) return; mnulogging->set(); } }