diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx index b332d12c..eda2728c 100644 --- a/src/dialogs/confdialog.cxx +++ b/src/dialogs/confdialog.cxx @@ -5065,6 +5065,18 @@ static void cb_btnKmlPurgeOnStartup(Fl_Check_Button* o, void*) { progdefaults.changed = true; } +Fl_Check_Button *btn_kml_enabled=(Fl_Check_Button *)0; + +static void cb_btn_kml_enabled(Fl_Check_Button* o, void*) { + progdefaults.kml_enabled = o->value(); +if (progdefaults.kml_enabled) { + kml_init(true); + progdefaults.changed = true; +} else { + KmlServer::Exit(); +}; +} + Fl_Group *tabQRZ=(Fl_Group *)0; Fl_Tabs *tabsQRZ=(Fl_Tabs *)0; @@ -11066,6 +11078,16 @@ and restarted if needed.")); btnKmlPurgeOnStartup->callback((Fl_Callback*)cb_btnKmlPurgeOnStartup); o->value(progdefaults.kml_purge_on_startup); } // Fl_Check_Button* btnKmlPurgeOnStartup + { Fl_Group* o = new Fl_Group(283, 327, 310, 40); + o->box(FL_ENGRAVED_FRAME); + { Fl_Check_Button* o = btn_kml_enabled = new Fl_Check_Button(305, 337, 242, 19, _("KML server enabled (On / Off)")); + btn_kml_enabled->tooltip(_("Uncheck if KML is never used")); + btn_kml_enabled->down_box(FL_DOWN_BOX); + btn_kml_enabled->callback((Fl_Callback*)cb_btn_kml_enabled); + o->value(progdefaults.kml_enabled); + } // Fl_Check_Button* btn_kml_enabled + o->end(); + } // Fl_Group* o tabKML->end(); } // Fl_Group* tabKML tabsMisc->end(); diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl index fdb746eb..762785f9 100644 --- a/src/dialogs/confdialog.fl +++ b/src/dialogs/confdialog.fl @@ -359,7 +359,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600 static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {} Fl_Window {} { label {Fldigi configuration} open - xywh {610 168 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible + xywh {611 168 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible } { Fl_Tabs tabsConfigure {open xywh {0 0 600 380} color 50 selection_color 50 @@ -6319,6 +6319,22 @@ progdefaults.changed = true;} tooltip {Empties KML documents when starting program.} xywh {322 231 172 15} down_box DOWN_BOX code0 {o->value(progdefaults.kml_purge_on_startup);} } + Fl_Group {} {open + xywh {283 327 310 40} box ENGRAVED_FRAME + } { + Fl_Check_Button btn_kml_enabled { + label {KML server enabled (On / Off)} + callback {progdefaults.kml_enabled = o->value(); +if (progdefaults.kml_enabled) { + kml_init(true); + progdefaults.changed = true; +} else { + KmlServer::Exit(); +}} + tooltip {Uncheck if KML is never used} xywh {305 337 242 19} down_box DOWN_BOX + code0 {o->value(progdefaults.kml_enabled);} + } + } } } } diff --git a/src/include/confdialog.h b/src/include/confdialog.h index d2bb90e0..8208d562 100644 --- a/src/include/confdialog.h +++ b/src/include/confdialog.h @@ -621,6 +621,7 @@ extern Fl_Button *btlTestKmlCommand; extern Fl_Button *btnSelectKmlDestDir; extern Fl_Button *btlPurge; extern Fl_Check_Button *btnKmlPurgeOnStartup; +extern Fl_Check_Button *btn_kml_enabled; extern Fl_Group *tabQRZ; extern Fl_Tabs *tabsQRZ; extern Fl_Round_Button *btnQRZWEBnotavailable; diff --git a/src/include/configuration.h b/src/include/configuration.h index 557d7bec..60b0c832 100644 --- a/src/include/configuration.h +++ b/src/include/configuration.h @@ -352,6 +352,9 @@ ELEM_(bool, PseudoFSK, "PSEUDOFSK", \ "Generate Pseudo-FSK signal on right audio channel", \ false) \ + ELEM_(bool, kml_enabled, "KMLSERVER_ENABLED", \ + "Enable kml server threads", \ + true) \ ELEM_(bool, SynopAdifDecoding, "SYNOPADIFDECODING", \ "Decoding of Synop weather information on RTTY to ADIF log", \ false) \ diff --git a/src/main.cxx b/src/main.cxx index 385afcf7..78c4ff66 100644 --- a/src/main.cxx +++ b/src/main.cxx @@ -750,7 +750,8 @@ int main(int argc, char ** argv) void exit_process() { - KmlServer::Exit(); + if (progdefaults.kml_enabled) + KmlServer::Exit(); arq_close(); kiss_close(); XML_RPC_Server::stop(); @@ -1709,6 +1710,8 @@ static void arg_error(const char* name, const char* arg, bool missing) /// Sets or resets the KML parameters, and loads existing files. void kml_init(bool load_files) { + if (progdefaults.kml_enabled == false) return; // disabled kml service + KmlServer::GetInstance()->InitParams( progdefaults.kml_command, progdefaults.kml_save_dir,