diff --git a/configure.ac b/configure.ac index 7030a2c3..1aacdc51 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl major and minor must be integers; patch may dnl contain other characters or be empty m4_define(FLDIGI_MAJOR, [3]) m4_define(FLDIGI_MINOR, [0]) -m4_define(FLDIGI_PATCH, [4AG]) +m4_define(FLDIGI_PATCH, [4AH]) AC_INIT([fldigi], FLDIGI_MAJOR.FLDIGI_MINOR[FLDIGI_PATCH], [w1hkj AT w1hkj DOT com]) diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx index c4c4a8cc..040b49aa 100644 --- a/src/dialogs/confdialog.cxx +++ b/src/dialogs/confdialog.cxx @@ -853,6 +853,45 @@ progdefaults.changed = true; Fl_Group *tabMisc=(Fl_Group *)0; +Fl_Tabs *tabsMisc=(Fl_Tabs *)0; + +Fl_Group *tabCPUspeed=(Fl_Group *)0; + +Fl_Check_Button *chkSlowCpu=(Fl_Check_Button *)0; + +static void cb_chkSlowCpu(Fl_Check_Button* o, void*) { + progdefaults.slowcpu = o->value(); +progdefaults.changed = true; +} + +Fl_Group *tabMacros=(Fl_Group *)0; + +Fl_Check_Button *btnUseLastMacro=(Fl_Check_Button *)0; + +static void cb_btnUseLastMacro(Fl_Check_Button* o, void*) { + progdefaults.UseLastMacro = o->value(); +update_main_title(); +progdefaults.changed = true; +} + +Fl_Group *tabRSid=(Fl_Group *)0; + +Fl_Check_Button *chkTransmitRSid=(Fl_Check_Button *)0; + +static void cb_chkTransmitRSid(Fl_Check_Button* o, void*) { + progdefaults.TransmitRSid = o->value(); +progdefaults.changed = true; +} + +Fl_Check_Button *chkRSidWideSearch=(Fl_Check_Button *)0; + +static void cb_chkRSidWideSearch(Fl_Check_Button* o, void*) { + progdefaults.rsidWideSearch=o->value(); +progdefaults.changed = true; +} + +Fl_Group *tabSweetSpot=(Fl_Group *)0; + Fl_Value_Input *valCWsweetspot=(Fl_Value_Input *)0; static void cb_valCWsweetspot(Fl_Value_Input* o, void*) { @@ -881,27 +920,6 @@ static void cb_btnStartAtSweetSpot(Fl_Check_Button* o, void*) { progdefaults.changed = true; } -Fl_Check_Button *chkTransmitRSid=(Fl_Check_Button *)0; - -static void cb_chkTransmitRSid(Fl_Check_Button* o, void*) { - progdefaults.TransmitRSid = o->value(); -progdefaults.changed = true; -} - -Fl_Check_Button *chkRSidWideSearch=(Fl_Check_Button *)0; - -static void cb_chkRSidWideSearch(Fl_Check_Button* o, void*) { - progdefaults.rsidWideSearch=o->value(); -progdefaults.changed = true; -} - -Fl_Check_Button *chkSlowCpu=(Fl_Check_Button *)0; - -static void cb_chkSlowCpu(Fl_Check_Button* o, void*) { - progdefaults.slowcpu = o->value(); -progdefaults.changed = true; -} - Fl_Group *tabModems=(Fl_Group *)0; Fl_Tabs *tabsModems=(Fl_Tabs *)0; @@ -1389,13 +1407,6 @@ static void cb_cntrAUTOCRLF(Fl_Counter* o, void*) { progdefaults.changed = true; } -Fl_Check_Button *btnRTTY_USB=(Fl_Check_Button *)0; - -static void cb_btnRTTY_USB(Fl_Check_Button* o, void*) { - //progdefaults.RTTY_USB = o->value(); -//progdefaults.changed = true; -} - static void cb_btnRTTYafc(Fl_Round_Button*, void*) { progdefaults.rtty_afcspeed=0; progdefaults.changed = true; @@ -1463,12 +1474,12 @@ static const char szStopBits[] = "1|1.5|2"; static const char szOliviaTones[] = "2|4|8|16|32|64|128|256"; static const char szOliviaBandwidth[] = "125|250|500|1000|2000"; static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800"; - { Fl_Double_Window* o = new Fl_Double_Window(400, 250, "fldigi - config"); + { Fl_Double_Window* o = new Fl_Double_Window(400, 255, "fldigi - config"); w = o; o->color(FL_DARK2); o->selection_color((Fl_Color)51); o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE); - { tabsConfigure = new Fl_Tabs(0, 0, 405, 220); + { tabsConfigure = new Fl_Tabs(0, 0, 405, 225); tabsConfigure->color(FL_DARK1); tabsConfigure->selection_color((Fl_Color)9); { tabOperator = new Fl_Group(0, 25, 400, 195, "Oper"); @@ -2136,71 +2147,98 @@ l with your sound hardware."); } // Fl_Tabs* tabsSoundCard tabSoundCard->end(); } // Fl_Group* tabSoundCard - { tabMisc = new Fl_Group(0, 25, 400, 195, "Misc"); + { tabMisc = new Fl_Group(0, 25, 405, 200, "Misc"); tabMisc->color((Fl_Color)51); tabMisc->selection_color((Fl_Color)51); tabMisc->hide(); - { Fl_Group* o = new Fl_Group(5, 35, 390, 90, "Sweet Spot"); - o->box(FL_ENGRAVED_FRAME); - o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Value_Input* o = valCWsweetspot = new Fl_Value_Input(50, 59, 65, 20, "CW"); - valCWsweetspot->minimum(200); - valCWsweetspot->maximum(4000); - valCWsweetspot->step(1); - valCWsweetspot->value(1000); - valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot); - o->value(progdefaults.CWsweetspot); - } // Fl_Value_Input* valCWsweetspot - { Fl_Value_Input* o = valRTTYsweetspot = new Fl_Value_Input(182, 59, 65, 20, "RTTY"); - valRTTYsweetspot->minimum(200); - valRTTYsweetspot->maximum(4000); - valRTTYsweetspot->step(1); - valRTTYsweetspot->value(1000); - valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot); - o->value(progdefaults.RTTYsweetspot); - } // Fl_Value_Input* valRTTYsweetspot - { Fl_Value_Input* o = valPSKsweetspot = new Fl_Value_Input(315, 59, 65, 20, "PSK etal"); - valPSKsweetspot->minimum(200); - valPSKsweetspot->maximum(4000); - valPSKsweetspot->step(1); - valPSKsweetspot->value(1000); - valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot); - o->value(progdefaults.PSKsweetspot); - } // Fl_Value_Input* valPSKsweetspot - { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(49, 88, 246, 25, "Start New Modem at Sweet Spot"); - btnStartAtSweetSpot->down_box(FL_DOWN_BOX); - btnStartAtSweetSpot->value(1); - btnStartAtSweetSpot->callback((Fl_Callback*)cb_btnStartAtSweetSpot); - o->value(progdefaults.StartAtSweetSpot); - } // Fl_Check_Button* btnStartAtSweetSpot - o->end(); - } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 125, 390, 45, "RSid"); - o->box(FL_ENGRAVED_FRAME); - o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = chkTransmitRSid = new Fl_Check_Button(49, 138, 119, 20, "Transmit RSid"); - chkTransmitRSid->tooltip("Transmit Reed Solomon ID"); - chkTransmitRSid->down_box(FL_DOWN_BOX); - chkTransmitRSid->callback((Fl_Callback*)cb_chkTransmitRSid); - o->value(progdefaults.TransmitRSid); - } // Fl_Check_Button* chkTransmitRSid - { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(188, 140, 85, 15, "Wide Search Detector"); - chkRSidWideSearch->down_box(FL_DOWN_BOX); - chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch); - o->value(progdefaults.rsidWideSearch); - } // Fl_Check_Button* chkRSidWideSearch - o->end(); - } // Fl_Group* o - { Fl_Group* o = new Fl_Group(5, 172, 390, 43, "CPU speed"); - o->box(FL_ENGRAVED_FRAME); - o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); - { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(110, 182, 89, 20, "Slow cpu"); - chkSlowCpu->down_box(FL_DOWN_BOX); - chkSlowCpu->callback((Fl_Callback*)cb_chkSlowCpu); - o->value(progdefaults.slowcpu); - } // Fl_Check_Button* chkSlowCpu - o->end(); - } // Fl_Group* o + { tabsMisc = new Fl_Tabs(0, 25, 400, 195); + { tabCPUspeed = new Fl_Group(0, 50, 400, 170, "CPU speed"); + tabCPUspeed->hide(); + { Fl_Group* o = new Fl_Group(5, 62, 390, 43); + o->box(FL_ENGRAVED_FRAME); + o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); + { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(110, 72, 89, 20, "Slow cpu"); + chkSlowCpu->down_box(FL_DOWN_BOX); + chkSlowCpu->callback((Fl_Callback*)cb_chkSlowCpu); + o->value(progdefaults.slowcpu); + } // Fl_Check_Button* chkSlowCpu + o->end(); + } // Fl_Group* o + tabCPUspeed->end(); + } // Fl_Group* tabCPUspeed + { tabMacros = new Fl_Group(0, 50, 400, 170, "Macros"); + { Fl_Group* o = new Fl_Group(5, 55, 390, 49); + o->box(FL_ENGRAVED_FRAME); + { Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(30, 70, 274, 15, "load last used Macro set on startup"); + btnUseLastMacro->down_box(FL_DOWN_BOX); + btnUseLastMacro->callback((Fl_Callback*)cb_btnUseLastMacro); + o->value(progdefaults.UseLastMacro); + } // Fl_Check_Button* btnUseLastMacro + o->end(); + } // Fl_Group* o + tabMacros->end(); + } // Fl_Group* tabMacros + { tabRSid = new Fl_Group(0, 50, 400, 170, "RSid"); + tabRSid->hide(); + { Fl_Group* o = new Fl_Group(5, 65, 390, 45); + o->box(FL_ENGRAVED_FRAME); + o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); + { Fl_Check_Button* o = chkTransmitRSid = new Fl_Check_Button(49, 78, 119, 20, "Transmit RSid"); + chkTransmitRSid->tooltip("Transmit Reed Solomon ID"); + chkTransmitRSid->down_box(FL_DOWN_BOX); + chkTransmitRSid->callback((Fl_Callback*)cb_chkTransmitRSid); + o->value(progdefaults.TransmitRSid); + } // Fl_Check_Button* chkTransmitRSid + { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(188, 80, 85, 15, "Wide Search Detector"); + chkRSidWideSearch->down_box(FL_DOWN_BOX); + chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch); + o->value(progdefaults.rsidWideSearch); + } // Fl_Check_Button* chkRSidWideSearch + o->end(); + } // Fl_Group* o + tabRSid->end(); + } // Fl_Group* tabRSid + { tabSweetSpot = new Fl_Group(0, 50, 400, 170, "Sweet Spot"); + tabSweetSpot->hide(); + { Fl_Group* o = new Fl_Group(5, 60, 390, 75); + o->box(FL_ENGRAVED_FRAME); + o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); + { Fl_Value_Input* o = valCWsweetspot = new Fl_Value_Input(50, 71, 65, 20, "CW"); + valCWsweetspot->minimum(200); + valCWsweetspot->maximum(4000); + valCWsweetspot->step(1); + valCWsweetspot->value(1000); + valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot); + o->value(progdefaults.CWsweetspot); + } // Fl_Value_Input* valCWsweetspot + { Fl_Value_Input* o = valRTTYsweetspot = new Fl_Value_Input(182, 71, 65, 20, "RTTY"); + valRTTYsweetspot->minimum(200); + valRTTYsweetspot->maximum(4000); + valRTTYsweetspot->step(1); + valRTTYsweetspot->value(1000); + valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot); + o->value(progdefaults.RTTYsweetspot); + } // Fl_Value_Input* valRTTYsweetspot + { Fl_Value_Input* o = valPSKsweetspot = new Fl_Value_Input(315, 71, 65, 20, "PSK etal"); + valPSKsweetspot->minimum(200); + valPSKsweetspot->maximum(4000); + valPSKsweetspot->step(1); + valPSKsweetspot->value(1000); + valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot); + o->value(progdefaults.PSKsweetspot); + } // Fl_Value_Input* valPSKsweetspot + { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(49, 100, 246, 25, "Start New Modem at Sweet Spot"); + btnStartAtSweetSpot->down_box(FL_DOWN_BOX); + btnStartAtSweetSpot->value(1); + btnStartAtSweetSpot->callback((Fl_Callback*)cb_btnStartAtSweetSpot); + o->value(progdefaults.StartAtSweetSpot); + } // Fl_Check_Button* btnStartAtSweetSpot + o->end(); + } // Fl_Group* o + tabSweetSpot->end(); + } // Fl_Group* tabSweetSpot + tabsMisc->end(); + } // Fl_Tabs* tabsMisc tabMisc->end(); } // Fl_Group* tabMisc { tabModems = new Fl_Group(0, 25, 401, 195, "Modem"); @@ -2738,13 +2776,6 @@ l with your sound hardware."); cntrAUTOCRLF->callback((Fl_Callback*)cb_cntrAUTOCRLF); cntrAUTOCRLF->align(FL_ALIGN_LEFT); } // Fl_Counter* cntrAUTOCRLF - { Fl_Check_Button* o = btnRTTY_USB = new Fl_Check_Button(235, 185, 22, 22, "RTTY is USB"); - btnRTTY_USB->down_box(FL_DOWN_BOX); - btnRTTY_USB->callback((Fl_Callback*)cb_btnRTTY_USB); - btnRTTY_USB->align(FL_ALIGN_LEFT); - btnRTTY_USB->hide(); - //o->value(progdefaults.RTTY_USB); - } // Fl_Check_Button* btnRTTY_USB { Fl_Group* o = new Fl_Group(135, 60, 130, 60, "AFC"); o->box(FL_ENGRAVED_FRAME); o->color((Fl_Color)51); @@ -2808,10 +2839,10 @@ l with your sound hardware."); } // Fl_Group* tabModems tabsConfigure->end(); } // Fl_Tabs* tabsConfigure - { btnCloseConfig = new Fl_Return_Button(285, 222, 100, 25, "Close"); + { btnCloseConfig = new Fl_Return_Button(285, 228, 100, 25, "Close"); btnCloseConfig->callback((Fl_Callback*)cb_btnCloseConfig); } // Fl_Return_Button* btnCloseConfig - { btnSaveConfig = new Fl_Button(15, 222, 100, 25, "Save Config"); + { btnSaveConfig = new Fl_Button(15, 228, 100, 25, "Save Config"); btnSaveConfig->callback((Fl_Callback*)cb_btnSaveConfig); } // Fl_Button* btnSaveConfig o->end(); diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl index c6bcc136..fe9da516 100644 --- a/src/dialogs/confdialog.fl +++ b/src/dialogs/confdialog.fl @@ -39,10 +39,10 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 code {} {} Fl_Window {} { label {fldigi - config} open - xywh {611 467 400 250} type Double color 45 selection_color 51 align 80 visible + xywh {555 456 400 255} type Double color 45 selection_color 51 align 80 visible } { Fl_Tabs tabsConfigure {open - xywh {0 0 405 220} color 47 selection_color 9 + xywh {0 0 405 225} color 47 selection_color 9 } { Fl_Group tabOperator { label Oper @@ -809,14 +809,14 @@ o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");} } } Fl_Group tabSoundCard { - label SndCrd open + label SndCrd xywh {0 25 400 195} color 51 selection_color 51 hide } { Fl_Tabs tabsSoundCard {open xywh {0 25 400 195} selection_color 10 } { Fl_Group tabAudio { - label {Audio devices} open + label {Audio devices} xywh {0 50 400 170} color 51 selection_color 51 } { Fl_Group AudioOSS {open @@ -898,7 +898,7 @@ resetSoundCard();} } } Fl_Group tabAudioOpt { - label {Audio settings} open + label {Audio settings} xywh {0 50 400 170} color 51 selection_color 51 hide } { Fl_Spinner cntRxRateCorr { @@ -1025,70 +1025,103 @@ progdefaults.changed = true;} } Fl_Group tabMisc { label Misc open - xywh {0 25 400 195} color 51 selection_color 51 hide + xywh {0 25 405 200} color 51 selection_color 51 hide } { - Fl_Group {} { - label {Sweet Spot} open - xywh {5 35 390 90} box ENGRAVED_FRAME align 21 + Fl_Tabs tabsMisc {open + xywh {0 25 400 195} } { - Fl_Value_Input valCWsweetspot { - label CW - callback {progdefaults.CWsweetspot=o->value(); + Fl_Group tabCPUspeed { + label {CPU speed} open + xywh {0 50 400 170} hide + } { + Fl_Group {} {open + xywh {5 62 390 43} box ENGRAVED_FRAME align 21 + } { + Fl_Check_Button chkSlowCpu { + label {Slow cpu} + callback {progdefaults.slowcpu = o->value(); progdefaults.changed = true;} - xywh {50 59 65 20} minimum 200 maximum 4000 step 1 value 1000 - code0 {o->value(progdefaults.CWsweetspot);} + xywh {110 72 89 20} down_box DOWN_BOX + code0 {o->value(progdefaults.slowcpu);} + } + } } - Fl_Value_Input valRTTYsweetspot { - label RTTY - callback {progdefaults.RTTYsweetspot=o->value(); + Fl_Group tabMacros { + label Macros open + xywh {0 50 400 170} + } { + Fl_Group {} {open + xywh {5 55 390 49} box ENGRAVED_FRAME + } { + Fl_Check_Button btnUseLastMacro { + label {load last used Macro set on startup} + callback {progdefaults.UseLastMacro = o->value(); +update_main_title(); progdefaults.changed = true;} - xywh {182 59 65 20} minimum 200 maximum 4000 step 1 value 1000 - code0 {o->value(progdefaults.RTTYsweetspot);} + xywh {30 70 274 15} down_box DOWN_BOX + code0 {o->value(progdefaults.UseLastMacro);} + } + } } - Fl_Value_Input valPSKsweetspot { - label {PSK etal} - callback {progdefaults.PSKsweetspot=o->value(); + Fl_Group tabRSid { + label RSid open + xywh {0 50 400 170} hide + } { + Fl_Group {} {open + xywh {5 65 390 45} box ENGRAVED_FRAME align 21 + } { + Fl_Check_Button chkTransmitRSid { + label {Transmit RSid} + callback {progdefaults.TransmitRSid = o->value(); progdefaults.changed = true;} - xywh {315 59 65 20} minimum 200 maximum 4000 step 1 value 1000 - code0 {o->value(progdefaults.PSKsweetspot);} + tooltip {Transmit Reed Solomon ID} xywh {49 78 119 20} down_box DOWN_BOX + code0 {o->value(progdefaults.TransmitRSid);} + } + Fl_Check_Button chkRSidWideSearch { + label {Wide Search Detector} + callback {progdefaults.rsidWideSearch=o->value(); +progdefaults.changed = true;} + xywh {188 80 85 15} down_box DOWN_BOX + code0 {o->value(progdefaults.rsidWideSearch);} + } + } } - Fl_Check_Button btnStartAtSweetSpot { - label {Start New Modem at Sweet Spot} - callback {progdefaults.StartAtSweetSpot = o->value(); + Fl_Group tabSweetSpot { + label {Sweet Spot} open + xywh {0 50 400 170} hide + } { + Fl_Group {} {open + xywh {5 60 390 75} box ENGRAVED_FRAME align 21 + } { + Fl_Value_Input valCWsweetspot { + label CW + callback {progdefaults.CWsweetspot=o->value(); progdefaults.changed = true;} - xywh {49 88 246 25} down_box DOWN_BOX value 1 - code0 {o->value(progdefaults.StartAtSweetSpot);} - } - } - Fl_Group {} { - label RSid open - xywh {5 125 390 45} box ENGRAVED_FRAME align 21 - } { - Fl_Check_Button chkTransmitRSid { - label {Transmit RSid} - callback {progdefaults.TransmitRSid = o->value(); + xywh {50 71 65 20} minimum 200 maximum 4000 step 1 value 1000 + code0 {o->value(progdefaults.CWsweetspot);} + } + Fl_Value_Input valRTTYsweetspot { + label RTTY + callback {progdefaults.RTTYsweetspot=o->value(); progdefaults.changed = true;} - tooltip {Transmit Reed Solomon ID} xywh {49 138 119 20} down_box DOWN_BOX - code0 {o->value(progdefaults.TransmitRSid);} - } - Fl_Check_Button chkRSidWideSearch { - label {Wide Search Detector} - callback {progdefaults.rsidWideSearch=o->value(); + xywh {182 71 65 20} minimum 200 maximum 4000 step 1 value 1000 + code0 {o->value(progdefaults.RTTYsweetspot);} + } + Fl_Value_Input valPSKsweetspot { + label {PSK etal} + callback {progdefaults.PSKsweetspot=o->value(); progdefaults.changed = true;} - xywh {188 140 85 15} down_box DOWN_BOX - code0 {o->value(progdefaults.rsidWideSearch);} - } - } - Fl_Group {} { - label {CPU speed} open - xywh {5 172 390 43} box ENGRAVED_FRAME align 21 - } { - Fl_Check_Button chkSlowCpu { - label {Slow cpu} - callback {progdefaults.slowcpu = o->value(); + xywh {315 71 65 20} minimum 200 maximum 4000 step 1 value 1000 + code0 {o->value(progdefaults.PSKsweetspot);} + } + Fl_Check_Button btnStartAtSweetSpot { + label {Start New Modem at Sweet Spot} + callback {progdefaults.StartAtSweetSpot = o->value(); progdefaults.changed = true;} - xywh {110 182 89 20} down_box DOWN_BOX - code0 {o->value(progdefaults.slowcpu);} + xywh {49 100 246 25} down_box DOWN_BOX value 1 + code0 {o->value(progdefaults.StartAtSweetSpot);} + } + } } } } @@ -1640,13 +1673,6 @@ progdefaults.changed = true;} progdefaults.changed = true;} xywh {321 117 65 20} type Simple align 4 minimum 68 maximum 80 step 1 value 72 } - Fl_Check_Button btnRTTY_USB { - label {RTTY is USB} - callback {//progdefaults.RTTY_USB = o->value(); -//progdefaults.changed = true;} - xywh {235 185 22 22} down_box DOWN_BOX align 4 hide - code0 {//o->value(progdefaults.RTTY_USB);} - } Fl_Group {} { label AFC open xywh {135 60 130 60} box ENGRAVED_FRAME color 51 align 21 @@ -1710,12 +1736,12 @@ progdefaults.changed = true;} Fl_Return_Button btnCloseConfig { label Close callback {closeDialog();} - xywh {285 222 100 25} + xywh {285 228 100 25} } Fl_Button btnSaveConfig { label {Save Config} callback {progdefaults.saveDefaults();} - xywh {15 222 100 25} + xywh {15 228 100 25} } } } diff --git a/src/dialogs/fl_digi.cxx b/src/dialogs/fl_digi.cxx index 7abb36d0..f2fd4515 100644 --- a/src/dialogs/fl_digi.cxx +++ b/src/dialogs/fl_digi.cxx @@ -1615,12 +1615,16 @@ int below(Fl_Widget* w) char main_window_title[256]; void update_main_title() { - snprintf(main_window_title, sizeof(main_window_title), - "%s %s -- %s", - PACKAGE_NAME, PACKAGE_VERSION, - progdefaults.myCall.empty() ? "NO CALLSIGN SET" : progdefaults.myCall.c_str()); - if (fl_digi_main != NULL) - fl_digi_main->label(main_window_title); + string macrotitle = " -- "; + macrotitle.append(progStatus.LastMacroFile); + + snprintf(main_window_title, sizeof(main_window_title), + "%s %s -- %s %s", + PACKAGE_NAME, PACKAGE_VERSION, + progdefaults.myCall.empty() ? "NO CALLSIGN SET" : progdefaults.myCall.c_str(), + macrotitle.c_str()); + if (fl_digi_main != NULL) + fl_digi_main->label(main_window_title); } diff --git a/src/include/confdialog.h b/src/include/confdialog.h index 608121ca..dd557164 100644 --- a/src/include/confdialog.h +++ b/src/include/confdialog.h @@ -120,13 +120,19 @@ extern Fl_Input_Choice *menuMix; extern void resetMixerControls(); extern Fl_Check_Button *btnMixer; extern Fl_Group *tabMisc; +extern Fl_Tabs *tabsMisc; +extern Fl_Group *tabCPUspeed; +extern Fl_Check_Button *chkSlowCpu; +extern Fl_Group *tabMacros; +extern Fl_Check_Button *btnUseLastMacro; +extern Fl_Group *tabRSid; +extern Fl_Check_Button *chkTransmitRSid; +extern Fl_Check_Button *chkRSidWideSearch; +extern Fl_Group *tabSweetSpot; extern Fl_Value_Input *valCWsweetspot; extern Fl_Value_Input *valRTTYsweetspot; extern Fl_Value_Input *valPSKsweetspot; extern Fl_Check_Button *btnStartAtSweetSpot; -extern Fl_Check_Button *chkTransmitRSid; -extern Fl_Check_Button *chkRSidWideSearch; -extern Fl_Check_Button *chkSlowCpu; extern Fl_Group *tabModems; extern Fl_Tabs *tabsModems; extern Fl_Group *tabCW; @@ -202,7 +208,6 @@ extern Fl_Check_Button *chkPseudoFSK; extern Fl_Check_Button *btnCRCRLF; extern Fl_Check_Button *btnAUTOCRLF; extern Fl_Counter *cntrAUTOCRLF; -extern Fl_Check_Button *btnRTTY_USB; extern Fl_Round_Button *btnRTTYafc[3]; extern Fl_Check_Button *btnPreferXhairScope; extern Fl_Check_Button *chkXagc; diff --git a/src/include/configuration.h b/src/include/configuration.h index 13c1f748..9ce957f1 100644 --- a/src/include/configuration.h +++ b/src/include/configuration.h @@ -180,6 +180,7 @@ struct configuration { bool useTimer; int macronumber; int timeout; + bool UseLastMacro; // Mixer configuration string MXdevice; diff --git a/src/include/status.h b/src/include/status.h index ebeaed36..c6b1f65f 100644 --- a/src/include/status.h +++ b/src/include/status.h @@ -1,6 +1,10 @@ #ifndef _status_H #define _status_H +#include +#include +#include + #include "globals.h" struct status { @@ -35,12 +39,14 @@ struct status { bool scopeVisible; int scopeW; int scopeH; + string LastMacroFile; bool bLastStateRead; void initLastState(); void saveLastState(); void loadLastState(); + }; extern status progStatus; diff --git a/src/misc/configuration.cxx b/src/misc/configuration.cxx index bd6c6d13..8bcc4aec 100644 --- a/src/misc/configuration.cxx +++ b/src/misc/configuration.cxx @@ -217,6 +217,7 @@ configuration progdefaults = { false, // bool useTimer; 0, // int macronumber; 0, // int timeout; + 0, // bool UseLastMacro; "", // string MXdevice false, // bool MicIn; @@ -330,7 +331,7 @@ enum TAG { \ AUDIOIO, OSSDEVICE, PADEVICE, PORTINDEVICE, PORTININDEX, PORTOUTDEVICE, PORTOUTINDEX, PULSESERVER, SAMPLERATE, INSAMPLERATE, OUTSAMPLERATE, SAMPLECONVERTER, RXCORR, TXCORR, TXOFFSET, USELEADINGZEROS, CONTESTSTART, CONTESTDIGITS, - USETIMER, MACRONUMBER, TIMEOUT, + USETIMER, MACRONUMBER, TIMEOUT, USELASTMACRO, MXDEVICE, PCMVOLUME, MICIN, LINEIN, ENABLEMIXER, MUTEINPUT, @@ -562,6 +563,7 @@ void configuration::writeDefaultsXML() writeXMLbool(f, "USETIMER", useTimer); writeXMLint(f, "MACRONUMBER", macronumber); writeXMLint(f, "TIMEOUT", timeout); + writeXMLbool(f, "USELASTMACRO", UseLastMacro); writeXMLstr(f, "MXDEVICE", MXdevice); writeXMLdbl(f, "PCMVOLUME", PCMvolume); writeXMLbool(f, "MICIN", MicIn); @@ -1036,6 +1038,9 @@ bool configuration::readDefaultsXML() case TIMEOUT : timeout = atoi(getstring(xml).c_str()); break; + case USELASTMACRO : + UseLastMacro = atoi(getstring(xml).c_str()); + break; case MXDEVICE : MXdevice = getstring(xml); break; @@ -1331,6 +1336,7 @@ bool configuration::readDefaultsXML() else if (!strcmp("USETIMER", nodeName)) tag = USETIMER; else if (!strcmp("MACRONUMBER", nodeName)) tag = MACRONUMBER; else if (!strcmp("TIMEOUT", nodeName)) tag = TIMEOUT; + else if (!strcmp("USELASTMACRO", nodeName)) tag = USELASTMACRO; else if (!strcmp("MXDEVICE", nodeName)) tag = MXDEVICE; else if (!strcmp("PCMVOLUME", nodeName)) tag = PCMVOLUME; else if (!strcmp("MICIN", nodeName)) tag = MICIN; diff --git a/src/misc/macros.cxx b/src/misc/macros.cxx index 348ae84d..ff7694ce 100644 --- a/src/misc/macros.cxx +++ b/src/misc/macros.cxx @@ -11,6 +11,7 @@ #include "newinstall.h" #include "globals.h" #include "debug.h" +#include "status.h" #include #include "fileselect.h" @@ -577,7 +578,12 @@ void MACROTEXT::loadDefault() { int erc; string Filename = HomeDir; - Filename.append("macros.mdf"); + if (progdefaults.UseLastMacro == true) + Filename.append(progStatus.LastMacroFile); + else { + Filename.append("macros.mdf"); + progStatus.LastMacroFile = "macros.mdf"; + } if ((erc = loadMacros(Filename)) != 0) #ifndef __CYGWIN__ LOG_ERROR("Error #%d loading %s\n", erc, Filename.c_str()); @@ -589,19 +595,25 @@ void MACROTEXT::loadDefault() void MACROTEXT::openMacroFile() { string deffilename = HomeDir; - deffilename.append("macros.mdf"); + deffilename.append(progStatus.LastMacroFile); const char *p = FSEL::select("Open macro file", "Fldigi macro definition file\t*.mdf", deffilename.c_str()); - if (p) + if (p) { loadMacros(p); + progStatus.LastMacroFile = fl_filename_name(p); + update_main_title(); + } } void MACROTEXT::saveMacroFile() { string deffilename = HomeDir; - deffilename.append("macros.mdf"); + deffilename.append(progStatus.LastMacroFile); const char *p = FSEL::saveas("Save macro file", "Fldigi macro definition file\t*.mdf", deffilename.c_str()); - if (p) + if (p) { saveMacros(p); + progStatus.LastMacroFile = fl_filename_name(p); + update_main_title(); + } } diff --git a/src/misc/status.cxx b/src/misc/status.cxx index 8d6cdaf7..ce6afcf7 100644 --- a/src/misc/status.cxx +++ b/src/misc/status.cxx @@ -66,6 +66,7 @@ status progStatus = { false, // bool scopeVisible; 50, // int scopeW; 50, // int scopeH; + "macros.mdf", // string LastMacroFile; false // bool bLastStateRead; }; @@ -154,6 +155,8 @@ void status::saveLastState() spref.set("scope_y", scopeY); spref.set("scope_w", scopeW); spref.set("scope_h", scopeH); + + spref.set("last_macro_file", LastMacroFile.c_str()); } void status::loadLastState() @@ -211,6 +214,11 @@ void status::loadLastState() 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); } void status::initLastState() diff --git a/src/olivia/olivia.cxx b/src/olivia/olivia.cxx index 95587488..02180b2b 100644 --- a/src/olivia/olivia.cxx +++ b/src/olivia/olivia.cxx @@ -27,16 +27,16 @@ #include -#include #include #include #include "olivia.h" #include "sound.h" -#include "status.h" #include "confdialog.h" +#include "status.h" + using namespace std; double olivia::nco(double freq)