From 75518b074b18f50ede75e94d2bf000e629076b64 Mon Sep 17 00:00:00 2001 From: Anthony Olszynski Date: Tue, 9 Feb 2021 08:50:47 +0100 Subject: [PATCH 1/2] update ServiceControl_v1.0.5 --- Info.h | 31 +-- MenuWinClass.cpp | 567 ++++++++++++++++++++++++--------------------- MenuWinClass.h | 32 +-- ServiceClass.cpp | 172 +++++++------- ServiceClass.h | 44 +--- ServiceControl.pro | 9 +- Start.cpp | 59 ----- TaskClass.cpp | 2 - TaskClass.h | 11 +- 9 files changed, 446 insertions(+), 481 deletions(-) delete mode 100644 Start.cpp diff --git a/Info.h b/Info.h index 46cddb6..13022d7 100644 --- a/Info.h +++ b/Info.h @@ -3,21 +3,22 @@ #define VERSION "1.0.4" #define APPNAME "ServiceControl" -#define ABOUT_INFO "\n\ - " APPNAME " " VERSION " \n\ - \n\ - Navigation keys: \n\ - Up - move cursor up | Down - move cursor down \n\ - right - move cursor right | left - move cursor left \n\ - PgUp - move page up | PgDown - move page down \n\ - / - for search | ? - for this help \n\ - Action keys: \n\ - Space - anwählen/abwählen | F10 - exit | ESC - Close info/help\n\ - F1 - start/stop unit | F2 - reload/update | TAB - switch Menu/ \n\ - F3 - enabled unit | F4 - disabled unit | Servicelist/ \n\ - F5 - unmasked unit | F6 - masked unit | Search \n\ ----------------------------------------------------------------------------\n\ - License: GPLv3 (c) Anthony Olszynski \n\ +#define HELP_INFO "\n\ + " APPNAME " " VERSION " \n\ + \n\ + Navigation keys: \n\ + ← ↓ ↑ → - move cursor into Menu Service List and Search field. \n\ + PgUp / PgDown - move page up and down. \n\ + Pos1 / End - jump from first to last \n\ + ? - Show this help. \n\ + Action keys: \n\ + Space - anwählen/abwählen | F10 - exit \n\ + F1 - start/stop unit | ESC - Close Subwins info/help \n\ + F3 - enabled/disable unit | TAB - switch Menu/ \n\ + F5 - mask/unmasked unit | Servicelist/ \n\ + F2 - reload/update | Search \n\ +-------------------------------------------------------------------------\n\ + License: GPLv3 (c) Anthony Olszynski \n\ " #endif //_INFO_H diff --git a/MenuWinClass.cpp b/MenuWinClass.cpp index 15b5aa6..aedb7a1 100644 --- a/MenuWinClass.cpp +++ b/MenuWinClass.cpp @@ -1,4 +1,4 @@ - #include + #include using namespace std; @@ -8,17 +8,11 @@ MenuWinClass *MenuWinClass_MWC = new MenuWinClass(); FENSTER MenuWinClass::START; HAUPTMENU MenuWinClass::TOPMENU; -WINDOW* MenuWinClass::TMPWIN; -MENU* MenuWinClass::TMPMENU; -int MenuWinClass::MeInAl = 0; INAPPMENU MenuWinClass::SERVICEMENU; -int MenuWinClass::LiMeInAl; -WINDOW* MenuWinClass::LiTMPWIN; -MENU* MenuWinClass::LiTMPMENU; -string MenuWinClass::PATTERN; + ServiceClass ServiceClass; vector ServiceList; -int MenuWinClass::TabKey = 1; +TabID MenuWinClass::TabKey = MainTab1; WinID& operator++(WinID& WID, int) { return WID = (WID == WinID::ENDWIN) ? WinID::MAINWIN : static_cast(static_cast(WID) + 1); @@ -38,8 +32,20 @@ MenuID& operator--(MenuID& MID, int) { }; ostream& operator<<(ostream& MID, MenuID e) { static const vector EnumString = {"DATEIMENU", "DAEMONMENU", "SYSTEMCTLMENU", "INFOMENU", "MAINMENU", "ENDMENU"}; +// char test[1000]; +// sprintf(test, "%c", EnumString[static_cast(e)].c_str()); return MID << EnumString[static_cast(e)]; }; +TabID& operator++(TabID& TID, int) { + return TID = (TID == TabID::MainTab3) ? TabID::MainTab1 : static_cast(static_cast(TID) + 1); +}; +TabID& operator--(TabID& TID, int) { + return TID = (TID == TabID::MainTab3) ? TabID::MainTab1 : static_cast(static_cast(TID) - 1); +}; +ostream& operator<<(ostream& TID, TabID e) { + static const vector EnumString = {"MainTab1", "MainTab2", "MainTab3"}; + return TID << EnumString[static_cast(e)]; +}; MenuWinClass::MenuWinClass() { START.WinSize.RAND = 1; @@ -253,10 +259,22 @@ void MenuWinClass::CreateWin(WINDOW* win, WinID WID) { break; } case ENDWIN: { break; } - default: { break; } } - refresh(); - wrefresh(win); + if (is_pad(win) == true) { + string tmpname = string(VARNAME(win)); + if (tmpname == "MenuWinClass::START.TMPWin4") { + refresh(); + prefresh(MenuWinClass::START.TMPWin4, 0, 0, 2, 1, MenuWinClass::START.HRYw4() + 1, MenuWinClass::START.WCXw4()); + } else if (tmpname == "MenuWinClass::START.TMPWin5") { + refresh(); + //prefresh(MenuWinClass::START.TMPWin5, 0, 0, MenuWinClass::START.HRY()-4, + // MenuWinClass::START.WCX()-46, MenuWinClass::START.HRYw5(), MenuWinClass::START.WCXw5()); + wrefresh(MenuWinClass::START.TMPWin5); + } + } else { + refresh(); + wrefresh(win); + } } /*---------Fenster_Erzeugen-----------------------*/ void MenuWinClass::ResizeHandler(int signal) { UNUSED(signal); @@ -268,6 +286,7 @@ void MenuWinClass::ResizeHandler(int signal) { MenuWinClass::CreateWin(MenuWinClass::START.TMPWin3, INFOWIN); MenuWinClass::CreateWin(MenuWinClass::START.TMPWin4, LISTPAD); MenuWinClass::CreateWin(MenuWinClass::START.TMPWin5, DESCWIN); + MenuWinClass::RefreshWindows(); } /*---------Resize_Fenster_neu_Erzeugen----------------*/ void MenuWinClass::ScrollPad(WINDOW* SubWin, int StartY, int StartX, int Height, int Width, int PadHeight) { int Choice = 0, Key = 0; @@ -357,12 +376,12 @@ void MenuWinClass::FensterDraw() { } void MenuWinClass::Hauptmenu(void) { MenuWinClass::TOPMENU.MID = MAINMENU; - MenuWinClass::TOPMENU.HMName = string("HAUPTMENÜ"); + MenuWinClass::TOPMENU.HMName = string("MAINMENU"); MenuWinClass::TOPMENU.HMItem = static_cast(calloc(5, sizeof(ITEM*))); - MenuWinClass::TOPMENU.HMItem[0] = new_item(" Datei", MenuWinClass::TOPMENU.HMName.c_str()); - MenuWinClass::TOPMENU.HMItem[1] = new_item("DaemonType", MenuWinClass::TOPMENU.HMName.c_str()); - MenuWinClass::TOPMENU.HMItem[2] = new_item("Systemctl", MenuWinClass::TOPMENU.HMName.c_str()); - MenuWinClass::TOPMENU.HMItem[3] = new_item("Info", MenuWinClass::TOPMENU.HMName.c_str()); + MenuWinClass::TOPMENU.HMItem[0] = new_item(" Datei", "DATEIMENU"); + MenuWinClass::TOPMENU.HMItem[1] = new_item("DaemonType", "DAEMONMENU"); + MenuWinClass::TOPMENU.HMItem[2] = new_item("Systemctl", "SYSTEMCTLMENU"); + MenuWinClass::TOPMENU.HMItem[3] = new_item("Info", "INFOMENU"); MenuWinClass::TOPMENU.HMItem[4] = nullptr; MenuWinClass::TOPMENU.HMMenu = new_menu(MenuWinClass::TOPMENU.HMItem); MenuWinClass::START.TMPWin1 = newwin(MenuWinClass::START.HRYw1(), MenuWinClass::START.WCXw1(), 0, 0); @@ -384,7 +403,7 @@ void MenuWinClass::Hauptmenu(void) { } /* Hauptmenü */ void MenuWinClass::DateiMenu(void) { TOPMENU.UME.UMID = 1; - TOPMENU.UME.UMEName = string("Datei"); + TOPMENU.UME.UMEName = string("DATEIMENU"); TOPMENU.UME.UMEWin = newwin(6, 15, 1, 0); wbkgd(TOPMENU.UME.UMEWin, COLOR_PAIR(TOPMENU.MenuColor.BK_UNTERMENU)); box(TOPMENU.UME.UMEWin, 0, 0); @@ -410,7 +429,7 @@ void MenuWinClass::DateiMenu(void) { } /* Datei Untermenü */ void MenuWinClass::DaemonTypeMenu(void) { TOPMENU.UME.UMID = 2; - TOPMENU.UME.UMEName = string("DaemonType"); + TOPMENU.UME.UMEName = string("DAEMONMENU"); TOPMENU.UME.UMEWin = newwin(12, 10, 1, 11); box(TOPMENU.UME.UMEWin, 0, 0); TOPMENU.UME.UMEItem = static_cast(calloc(11, sizeof(ITEM*))); @@ -442,7 +461,7 @@ void MenuWinClass::DaemonTypeMenu(void) { } /* DaemonType Untermenü */ void MenuWinClass::SystemctlMenu(void) { TOPMENU.UME.UMID = 3; - TOPMENU.UME.UMEName = string("Systemctl"); + TOPMENU.UME.UMEName = string("SYSTEMCTLMENU"); TOPMENU.UME.UMEWin = newwin(12, 18, 1, 22); box(TOPMENU.UME.UMEWin, 0, 0); TOPMENU.UME.UMEItem = static_cast(calloc(11, sizeof(ITEM*))); @@ -474,7 +493,7 @@ void MenuWinClass::SystemctlMenu(void) { } /* Systemctl Untermenü */ void MenuWinClass::InfoMenu(void) { TOPMENU.UME.UMID = 4; - TOPMENU.UME.UMEName = string("Info"); + TOPMENU.UME.UMEName = string("INFOMENU"); TOPMENU.UME.UMEWin = newwin(5, 12, 1, 33); wbkgd(TOPMENU.UME.UMEWin, COLOR_PAIR(TOPMENU.MenuColor.BK_UNTERMENU)); box(TOPMENU.UME.UMEWin, 0, 0); @@ -501,25 +520,25 @@ WINDOW* MenuWinClass::TempWin(string Name, MenuID MID) { if ((Name.compare(" Datei") == 0) || (MID == DATEIMENU)) { //MenuWinClass::CreateMenu(MenuWinClass::TOPMENU.UME.UMEWin, MenuWinClass::TOPMENU.UME.UMEMenu, DATEIMENU, "DATEIMENU"); MenuWinClass::DateiMenu(); - MenuWinClass::TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; - MenuWinClass::TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; + MenuWinClass::START.TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; + MenuWinClass::TOPMENU.TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; } else if ((Name.compare("DaemonType") == 0) || (MID == DAEMONMENU)) { //MenuWinClass::CreateMenu(MenuWinClass::TOPMENU.UME.UMEWin, MenuWinClass::TOPMENU.UME.UMEMenu, SYSTEMMENU, "SYSTEMMENU"); MenuWinClass::DaemonTypeMenu(); - MenuWinClass::TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; - MenuWinClass::TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; + MenuWinClass::START.TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; + MenuWinClass::TOPMENU.TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; } else if ((Name.compare("Systemctl") == 0) || (MID == SYSTEMCTLMENU)) { //MenuWinClass::CreateMenu(MenuWinClass::TOPMENU.UME.UMEWin, MenuWinClass::TOPMENU.UME.UMEMenu, SERVERMENU, "SERVERMENU"); MenuWinClass::SystemctlMenu(); - MenuWinClass::TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; - MenuWinClass::TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; + MenuWinClass::START.TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; + MenuWinClass::TOPMENU.TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; } else if ((Name.compare("Info") == 0) || (MID == INFOMENU)) { //MenuWinClass::CreateMenu(MenuWinClass::TOPMENU.UME.UMEWin, MenuWinClass::TOPMENU.UME.UMEMenu, SOFTWAREMENU, "SOFTWAREMENU"); MenuWinClass::InfoMenu(); - MenuWinClass::TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; - MenuWinClass::TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; + MenuWinClass::START.TMPWIN = MenuWinClass::TOPMENU.UME.UMEWin; + MenuWinClass::TOPMENU.TMPMENU = MenuWinClass::TOPMENU.UME.UMEMenu; } - return MenuWinClass::TMPWIN; + return MenuWinClass::START.TMPWIN; } /* Menü und Win Neuzuordnen */ void MenuWinClass::StartMenuAuswahl(string wahl) { string menupoint = MenuWinClass::SERVICEMENU.AktivName; @@ -533,52 +552,52 @@ void MenuWinClass::StartMenuAuswahl(string wahl) { } else if (wahl.compare("Systemctl") == 0) { InfoMenu(); } else if (wahl.compare("Service") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "service"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Swap") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "swap"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Timer") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "timer"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Device") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "device"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Mount") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "mount"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Path") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "path"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Target") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "target"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Socket") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "socket"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Slice") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "slice"; ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("Scope") == 0) { - ServiceClass_MWC->start = 0; + ServiceClass_MWC->ListStart = 0; ServiceClass_MWC->selected = 0; ServiceClass_MWC->systemctlwahl = "scope"; ServiceClass_MWC->ServiceListFill(); @@ -595,7 +614,7 @@ void MenuWinClass::StartMenuAuswahl(string wahl) { exit(EXIT_SUCCESS); } else if (wahl.compare("START") == 0) { pos_menu_cursor(MenuWinClass::SERVICEMENU.LMenu); - befehl = "systemctl start " + menupoint + " --now"; + befehl = "systemctl ListStart " + menupoint + " --now"; TaskClass_MWC->TERM_AUSGABE(befehl); ServiceClass_MWC->ServiceListFill(); } else if (wahl.compare("STOP") == 0) { @@ -644,6 +663,7 @@ void MenuWinClass::StartMenuAuswahl(string wahl) { } /* MenüPoint to command */ void MenuWinClass::RefreshWindows(){ refresh(); + redrawwin(MenuWinClass::START.TMPWin1); wrefresh(MenuWinClass::START.TMPWin1); redrawwin(MenuWinClass::START.TMPWin2); wrefresh(MenuWinClass::START.TMPWin2); @@ -658,242 +678,253 @@ void MenuWinClass::RefreshWindows(){ } int MenuWinClass::MenuStart(int Key) { -//try { - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[MenuWinClass::MeInAl]); - TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); - string tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); - string MeAuWa = ""; - ServiceClass_MWC->TableMoveRow(); - while ((Key = wgetch(stdscr)) != KEY_F(10)) { - switch (MenuWinClass::TabKey) { - case 1: { - switch (Key) { - case '?': { ServiceClass_MWC->Statusabfrage(ABOUT_INFO); break; } - case 27: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(1, "++", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case KEY_DOWN: { - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_DOWN_ITEM); - ServiceClass_MWC->TableMoveRow(); - break; - } - case KEY_UP: { - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_UP_ITEM); - ServiceClass_MWC->TableMoveRow(); - break; - } - case KEY_NPAGE: { - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_SCR_DPAGE); - ServiceClass_MWC->TableMoveRow(); - break; - } - case KEY_PPAGE: { - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_SCR_UPAGE); - ServiceClass_MWC->TableMoveRow(); - break; - } - case KEY_END: { - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_LAST_ITEM); - ServiceClass_MWC->TableMoveRow(); - break; - } - case KEY_HOME: { - ServiceClass_MWC->start = 0; - ServiceClass_MWC->selected = 0; - ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_FIRST_ITEM); - ServiceClass_MWC->TableMoveRow(); - break; - } - case 0x09: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(1, "++", 3); - TMPWIN = TempWin("Datei", DATEIMENU); - redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); - wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); - break; - } - case KEY_BTAB: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(1, "--", 3); - TMPWIN = TempWin("Datei", DATEIMENU); - redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); - wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); - break; - } - case KEY_BACKSPACE: { ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_BACK_PATTERN); break; } - case 10: { - string menupoint = MenuWinClass::SERVICEMENU.AktivName; - string befehl = "systemctl status " + menupoint; - ServiceClass_MWC->Statusabfrage(TaskClass_MWC->TERM_AUSGABE(befehl)); - break; } - case 32: { ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_TOGGLE_ITEM); break; } - default: { if (Key > 10 && Key < 128) { - //ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_NEXT_MATCH); - } - break;} - } - if (MenuWinClass_MWC->TabKey == 1) { - curs_set(false); - ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); - MenuWinClass::TOPMENU.LoescheUME(); - MenuWinClass::RefreshWindows(); - } else if (MenuWinClass_MWC->TabKey == 2) { - curs_set(false); - MenuWinClass::RefreshWindows(); - wrefresh(MenuWinClass::START.TMPWin1); - redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); - wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); - } else if (MenuWinClass_MWC->TabKey == 3) { - curs_set(true); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass::PATTERN.c_str(), -1); - MenuWinClass::RefreshWindows(); - } + //try { + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[MenuWinClass::TOPMENU.MeInAl]); + MenuWinClass::START.TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), + (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); + string tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); + string MeAuWa = ""; + ServiceClass_MWC->TableMoveRow(); + while ((Key = wgetch(stdscr)) != KEY_F(10)) { + switch (MenuWinClass::TabKey) { + case MainTab1: { + switch (Key) { + case '?': { ServiceClass_MWC->Statusabfrage(HELP_INFO); break; } + case 353: { + MenuWinClass_MWC->TabKey--; + //MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(1, "--", 3); + MenuWinClass::START.TMPWIN = TempWin("Datei", DATEIMENU); + redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); + wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); break; - } /* MainWindow ListMenu */ - case 2: { - switch (Key) { - case '?': { ServiceClass_MWC->Statusabfrage(ABOUT_INFO); break; } - case 27: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "++", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case KEY_DOWN: { menu_driver(TOPMENU.UME.UMEMenu, REQ_DOWN_ITEM); break; } - case KEY_UP: { menu_driver(TOPMENU.UME.UMEMenu, REQ_UP_ITEM); break; } - case KEY_RIGHT: { - MenuWinClass::TOPMENU.LoescheUME(); - menu_driver(MenuWinClass::TOPMENU.HMMenu, REQ_RIGHT_ITEM); - tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); - TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); - break; - } - case KEY_LEFT: { - MenuWinClass::TOPMENU.LoescheUME(); // delete before menu drive - menu_driver(MenuWinClass::TOPMENU.HMMenu, REQ_LEFT_ITEM); - tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); - TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); - break; - } - case 0x09: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "++", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case KEY_BTAB: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "--", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case 10: { - MenuWinClass::MeInAl = item_index(current_item(MenuWinClass::TOPMENU.HMMenu)); - StartMenuAuswahl(item_name(current_item(MenuWinClass::TOPMENU.UME.UMEMenu))); - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "++", 2); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; } - } - if (MenuWinClass_MWC->TabKey == 1) { - curs_set(false); - ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); - MenuWinClass::TOPMENU.LoescheUME(); - MenuWinClass::RefreshWindows(); - } else if (MenuWinClass_MWC->TabKey == 2) { - curs_set(false); - MenuWinClass::RefreshWindows(); - wrefresh(MenuWinClass::START.TMPWin1); - redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); - wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); - } else if (MenuWinClass_MWC->TabKey == 3) { - curs_set(true); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass::PATTERN.c_str(), -1); - MenuWinClass::RefreshWindows(); - } + } + case 9: { + MenuWinClass_MWC->TabKey++; + //MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(1, "++", 3); + MenuWinClass::START.TMPWIN = TempWin("Datei", DATEIMENU); + redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); + wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); + break; } + case KEY_ENTER: + case 10: { + string menupoint = MenuWinClass::SERVICEMENU.AktivName; + string befehl = "systemctl status " + menupoint; + ServiceClass_MWC->Statusabfrage(TaskClass_MWC->TERM_AUSGABE(befehl)); + break; } + case 32: { ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_TOGGLE_ITEM); break; } + case KEY_BACKSPACE: { ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_BACK_PATTERN); break; } + case KEY_DOWN: { + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_DOWN_ITEM); + ServiceClass_MWC->TableMoveRow(); break; - } /* Hauptmenu */ - case 3:{ - int y,x; - getyx(MenuWinClass::START.TMPWin3, y, x); - int curposi = (x - 33); - switch (Key) { - case '?':{ ServiceClass_MWC->Statusabfrage(ABOUT_INFO); break; } - case 27:{ break; } - case 127: - case KEY_BACKSPACE:{ - MenuWinClass::PATTERN = ServiceClass_MWC->SearchDriver(REQ_DEL_BACKSPACE, MenuWinClass::START.TMPWin3, Key, MenuWinClass::PATTERN, curposi); - break; } - case KEY_DC:{ - MenuWinClass::PATTERN = ServiceClass_MWC->SearchDriver(REQ_DEL_DC, MenuWinClass::START.TMPWin3, Key, MenuWinClass::PATTERN, curposi); - break; } - case KEY_RIGHT:{ - MenuWinClass::PATTERN = ServiceClass_MWC->SearchDriver(REQ_RIGHT, MenuWinClass::START.TMPWin3, Key, MenuWinClass::PATTERN, curposi); - break; } - case KEY_LEFT:{ - MenuWinClass::PATTERN = ServiceClass_MWC->SearchDriver(REQ_LEFT, MenuWinClass::START.TMPWin3, Key, MenuWinClass::PATTERN, curposi); - break; } - case 0x09: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(3, "++", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case KEY_BTAB: { - MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(3, "--", 3); - set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); - MenuWinClass::TOPMENU.LoescheUME(); - wrefresh(MenuWinClass::START.TMPWin1); - break; - } - case KEY_ENTER: - case 10:{ break; } - default:{ - if (Key > 10 && Key < 128) { - MenuWinClass::PATTERN = ServiceClass_MWC->SearchDriver(REQ_INS_DEFAULT, MenuWinClass::START.TMPWin3, Key, MenuWinClass::PATTERN, curposi); - //ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_NEXT_MATCH); - } - break; } - } - if (MenuWinClass_MWC->TabKey == 1) { - curs_set(false); - ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); - MenuWinClass::TOPMENU.LoescheUME(); - MenuWinClass::RefreshWindows(); - } else if (MenuWinClass_MWC->TabKey == 2) { - curs_set(false); - MenuWinClass::RefreshWindows(); - wrefresh(MenuWinClass::START.TMPWin1); - redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); - wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); - } else if (MenuWinClass_MWC->TabKey == 3) { - curs_set(true); - MenuWinClass::RefreshWindows(); - } + } + case KEY_UP: { + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_UP_ITEM); + ServiceClass_MWC->TableMoveRow(); + break; + } + case KEY_NPAGE: { + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_SCR_DPAGE); + ServiceClass_MWC->TableMoveRow(); + break; + } + case KEY_PPAGE: { + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_SCR_UPAGE); + ServiceClass_MWC->TableMoveRow(); + break; + } + case KEY_END: { + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_LAST_ITEM); + ServiceClass_MWC->TableMoveRow(); break; - }/* search at tmpwin3 */ } - if (Key == KEY_F(10)) { break; } + case KEY_HOME: { + ServiceClass_MWC->ListStart = 0; + ServiceClass_MWC->selected = 0; + ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_FIRST_ITEM); + ServiceClass_MWC->TableMoveRow(); + break; + } + default: { if (Key > 32 && Key < 126) { + //ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_NEXT_MATCH); + break; } } + } + if (MenuWinClass_MWC->TabKey == MainTab1) { + curs_set(false); + ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); + MenuWinClass::TOPMENU.LoescheUME(); + MenuWinClass::RefreshWindows(); + } else if (MenuWinClass_MWC->TabKey == MainTab2) { + curs_set(false); + MenuWinClass::RefreshWindows(); + wrefresh(MenuWinClass::START.TMPWin1); + redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); + wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); + } else if (MenuWinClass_MWC->TabKey == MainTab3) { + curs_set(true); + MenuWinClass::RefreshWindows(); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_MWC->SearchPattern.c_str(), -1); + wrefresh(MenuWinClass::START.TMPWin3); + } + break; + } /* MainWindow ListMenu */ + case MainTab2: { + switch (Key) { + case '?': { ServiceClass_MWC->Statusabfrage(HELP_INFO); break; } + case 353: { + MenuWinClass_MWC->TabKey--; + //MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "--", 3); + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; + } + case 9: { + MenuWinClass_MWC->TabKey++; + //MenuWinClass_MWC->TabKey = TaskClass_MWC->ZahlenWerk(2, "++", 3); + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; + } + case KEY_ENTER: + case 10: { + MenuWinClass::TOPMENU.MeInAl = item_index(current_item(MenuWinClass::TOPMENU.HMMenu)); + StartMenuAuswahl(item_name(current_item(MenuWinClass::TOPMENU.UME.UMEMenu))); + MenuWinClass_MWC->TabKey++; // = TaskClass_MWC->ZahlenWerk(2, "++", 2); + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; } + /*case 27: { + MenuWinClass_MWC->TabKey--; + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; }*/ + case KEY_DOWN: { menu_driver(TOPMENU.UME.UMEMenu, REQ_DOWN_ITEM); break; } + case KEY_UP: { menu_driver(TOPMENU.UME.UMEMenu, REQ_UP_ITEM); break; } + case KEY_LEFT: { + MenuWinClass::TOPMENU.LoescheUME(); // delete before menu drive + menu_driver(MenuWinClass::TOPMENU.HMMenu, REQ_LEFT_ITEM); + tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); + MenuWinClass::START.TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), + (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); + break; } + case KEY_RIGHT: { + MenuWinClass::TOPMENU.LoescheUME(); + menu_driver(MenuWinClass::TOPMENU.HMMenu, REQ_RIGHT_ITEM); + tmpMeNa = string(item_name(current_item(MenuWinClass::TOPMENU.HMMenu))); + MenuWinClass::START.TMPWIN = TempWin(item_name(current_item(MenuWinClass::TOPMENU.HMMenu)), + (MenuID)item_index(current_item(MenuWinClass::TOPMENU.HMMenu))); + break;} + } + if (MenuWinClass_MWC->TabKey == MainTab1) { + curs_set(false); + ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); + MenuWinClass::TOPMENU.LoescheUME(); + MenuWinClass::RefreshWindows(); + } else if (MenuWinClass_MWC->TabKey == MainTab2) { + curs_set(false); + MenuWinClass::RefreshWindows(); + wrefresh(MenuWinClass::START.TMPWin1); + redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); + wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); + } else if (MenuWinClass_MWC->TabKey == MainTab3) { + curs_set(true); + MenuWinClass::RefreshWindows(); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_MWC->SearchPattern.c_str(), -1); + wrefresh(MenuWinClass::START.TMPWin3); + } + break; + } /* Hauptmenu */ + case MainTab3:{ + int wcx = getcurx(MenuWinClass::START.TMPWin3); + int curposi = (wcx - 33); + switch (Key) { + case 353:{ + MenuWinClass_MWC->TabKey--; + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; } + case 9:{ + MenuWinClass_MWC->TabKey++; + set_current_item(MenuWinClass::TOPMENU.HMMenu, MenuWinClass::TOPMENU.HMItem[0]); + MenuWinClass::TOPMENU.LoescheUME(); + wrefresh(MenuWinClass::START.TMPWin1); + break; } + case KEY_ENTER: + case 10:{ break; } + case 27:{ MenuWinClass_MWC->SearchPattern = ""; + int MaxSearchChar = (MenuWinClass::START.WCX() - (MenuWinClass::SucheStartWCX + MenuWinClass::START.BorderWeight)); + MenuWinClass_MWC->Dummy.assign(MaxSearchChar, ' '); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, MenuWinClass_MWC->SucheStartWCX, MenuWinClass_MWC->Dummy.c_str(), -1); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_MWC->SearchPattern.c_str(), -1); + wrefresh(MenuWinClass::START.TMPWin3); + break; } + case '?':{ ServiceClass_MWC->Statusabfrage(HELP_INFO); break; } + case KEY_BACKSPACE:{ + MenuWinClass_MWC->SearchPattern = ServiceClass_MWC->SearchDriver(REQ_DEL_BACKSPACE, MenuWinClass::START.TMPWin3, Key, MenuWinClass_MWC->SearchPattern, curposi); + break; } + case KEY_DC:{ + MenuWinClass_MWC->SearchPattern = ServiceClass_MWC->SearchDriver(REQ_DEL_DC, MenuWinClass::START.TMPWin3, Key, MenuWinClass_MWC->SearchPattern, curposi); + break; } + case KEY_LEFT:{ + MenuWinClass_MWC->SearchPattern = ServiceClass_MWC->SearchDriver(REQ_LEFT, MenuWinClass::START.TMPWin3, Key, MenuWinClass_MWC->SearchPattern, curposi); + break; } + case KEY_RIGHT:{ + MenuWinClass_MWC->SearchPattern = ServiceClass_MWC->SearchDriver(REQ_RIGHT, MenuWinClass::START.TMPWin3, Key, MenuWinClass_MWC->SearchPattern, curposi); + break; } + default:{ + if ((Key > 32 && Key < 126)) { // || (Key == 182 || Key == 150 || Key == 164 || Key == 132 || Key == 188 || Key == 156)) { + MenuWinClass_MWC->SearchPattern = ServiceClass_MWC->SearchDriver(REQ_INS_DEFAULT, MenuWinClass::START.TMPWin3, Key, MenuWinClass_MWC->SearchPattern, curposi); + //ServiceClass_MWC->TableDriver(ServiceClass_MWC->ServiceList, REQ_NEXT_MATCH); + } + break; } + } + if (MenuWinClass_MWC->TabKey == MainTab1) { + curs_set(false); + ServiceClass_MWC->INFOWINDOW(MenuWinClass::SERVICEMENU.AktivName); + MenuWinClass::TOPMENU.LoescheUME(); + MenuWinClass::RefreshWindows(); + } else if (MenuWinClass_MWC->TabKey == MainTab2) { + curs_set(false); + MenuWinClass::RefreshWindows(); + wrefresh(MenuWinClass::START.TMPWin1); + redrawwin(MenuWinClass::TOPMENU.UME.UMEWin); + wrefresh(MenuWinClass::TOPMENU.UME.UMEWin); + } else if (MenuWinClass_MWC->TabKey == MainTab3) { + curs_set(true); + MenuWinClass::RefreshWindows(); + wrefresh(MenuWinClass::START.TMPWin3); + } + break; + } /* search at tmpwin3 */ } + if (Key == KEY_F(10)) { break; } + } return Key; -// } catch (const NCursesException* e) { endwin(); std::cerr << e->message << std::endl; cout << e->errorno; return -1; -// } catch (const NCursesException& e) { endwin(); std::cerr << e.message << std::endl; cout << e.errorno; return -1; -// } catch (const std::exception& e) { endwin(); std::cerr << "Exception: " << e.what() << std::endl; cout << EXIT_FAILURE; return -1; } + // } catch (const NCursesException* e) { endwin(); std::cerr << e->message << std::endl; cout << e->errorno; return -1; } + // catch (const NCursesException& e) { endwin(); std::cerr << e.message << std::endl; cout << e.errorno; return -1; } + // catch (const std::exception& e) { endwin(); std::cerr << "Exception: " << e.what() << std::endl; cout << EXIT_FAILURE; return -1; } } /* Menü surf funktion */ + + MenuWinClass::~MenuWinClass(){ - if (MenuWinClass::START.TMPWin1) {werase(MenuWinClass::START.TMPWin1); delwin(MenuWinClass::START.TMPWin1); endwin();} - if (MenuWinClass::START.TMPWin2) {werase(MenuWinClass::START.TMPWin2); delwin(MenuWinClass::START.TMPWin2); endwin();} - if (MenuWinClass::START.TMPWin3) {werase(MenuWinClass::START.TMPWin3); delwin(MenuWinClass::START.TMPWin3); endwin();} - if (MenuWinClass::START.TMPWin4) {werase(MenuWinClass::START.TMPWin4); delwin(MenuWinClass::START.TMPWin4); endwin();} + if (MenuWinClass::START.TimeWin) {werase(MenuWinClass::START.TimeWin); delwin(MenuWinClass::START.TimeWin); endwin();} + if (MenuWinClass::SERVICEMENU.LMItem) {unpost_menu(MenuWinClass::SERVICEMENU.LMenu); SAFE_DELETE(MenuWinClass::SERVICEMENU.LMItem); SAFE_DELETE_ARRAY(MenuWinClass::SERVICEMENU.LMItem);} + if (MenuWinClass::TOPMENU.UME.UMEItem) { unpost_menu(MenuWinClass::TOPMENU.UME.UMEMenu); SAFE_DELETE(MenuWinClass::TOPMENU.UME.UMEItem); SAFE_DELETE_ARRAY(MenuWinClass::TOPMENU.UME.UMEItem);} + if (MenuWinClass::TOPMENU.HMItem) { unpost_menu(MenuWinClass::TOPMENU.HMMenu); SAFE_DELETE(MenuWinClass::TOPMENU.HMItem); SAFE_DELETE_ARRAY(MenuWinClass::TOPMENU.HMItem);} if (MenuWinClass::START.TMPWin5) {werase(MenuWinClass::START.TMPWin5); delwin(MenuWinClass::START.TMPWin5); endwin();} + if (MenuWinClass::START.TMPWin4) {werase(MenuWinClass::START.TMPWin4); delwin(MenuWinClass::START.TMPWin4); endwin();} + if (MenuWinClass::START.TMPWin3) {werase(MenuWinClass::START.TMPWin3); delwin(MenuWinClass::START.TMPWin3); endwin();} + if (MenuWinClass::START.TMPWin2) {werase(MenuWinClass::START.TMPWin2); delwin(MenuWinClass::START.TMPWin2); endwin();} + if (MenuWinClass::START.TMPWin1) {werase(MenuWinClass::START.TMPWin1); delwin(MenuWinClass::START.TMPWin1); endwin();} + werase(stdscr); + ServiceList.clear(); + vector(ServiceList).swap (ServiceList); + clear(); } - diff --git a/MenuWinClass.h b/MenuWinClass.h index 20a6e63..fc106ec 100644 --- a/MenuWinClass.h +++ b/MenuWinClass.h @@ -9,6 +9,7 @@ using namespace std; enum WinID { MENUWIN = 0, MAINWIN = 1, INFOWIN = 2, LISTPAD = 3, DESCWIN = 4, TIMEWIN = 5, ENDWIN = 6 }; enum MenuID { DATEIMENU = 0, DAEMONMENU = 1, SYSTEMCTLMENU = 2, INFOMENU = 3, MAINMENU = 4, ENDMENU = 5 }; +enum TabID { MainTab1 = 1, MainTab2 = 2, MainTab3 = 3 }; struct FENSTER { int FEID {0}; @@ -41,6 +42,8 @@ struct FENSTER { int WCXtime() {return static_cast(roundf(20));}; WinID TimeWinID {TIMEWIN}; WINDOW *TimeWin = newwin(HRYtime(), WCXtime(), 0, (WCX() - 20)); + WINDOW *TMPWIN; /* Temporäres Window, zwischen speicher */ + TabID TabKeyHist[4] {MainTab3,MainTab1,MainTab2,MainTab3}; /*1. before 2. in use 3. next 4. after next*/ int TMPWinHigh {0}; FORM *TMPForm1 {nullptr}; FIELD **TMPField1 {nullptr}; @@ -122,6 +125,8 @@ struct HAUPTMENU { string HMName; MENU *HMMenu {nullptr}; ITEM **HMItem {nullptr}; + MENU *TMPMENU; /* Temporärer Menu zwischen speicher */ + int MeInAl {0}; //############################################### struct UNTERMENU { int UMID; @@ -151,29 +156,27 @@ struct HAUPTMENU { } }; struct INAPPMENU { - friend class MenuWinClass; - int LMID; - std::string LMName; - MENU* LMenu {nullptr}; + int LMID; + string LMName; + MENU* LMenu {nullptr}; ITEM** LMItem {nullptr}; string AktivName = ""; - + friend class MenuWinClass; }; -class MenuWinClass: public INAPPMENU { +class MenuWinClass { public: /*################################################*/ static FENSTER START; static HAUPTMENU TOPMENU; - static int MeInAl; - static WINDOW *TMPWIN; - static MENU *TMPMENU; static INAPPMENU SERVICEMENU; - static int LiMeInAl; - static WINDOW* LiTMPWIN; - static MENU* LiTMPMENU; - static string PATTERN; - static int TabKey;// {1}; + static TabID TabKey; // {1}; + //############################ + static const int SucheStartWCX = 33; + char SearchChar[BUFSIZ]; + string SearchPattern; + string Dummy; + static int MenuStart(int Key); /*#############_WINDOW_###########################*/ static void StartWin(); static void StopWin(); @@ -193,7 +196,6 @@ class MenuWinClass: public INAPPMENU { static WINDOW* TempWin(string Name, MenuID MID); static void StartMenuAuswahl(string wahl); static void RefreshWindows(); - static int MenuStart(int Key); /*#############_Constructor/De_###################*/ MenuWinClass(); ~MenuWinClass(); diff --git a/ServiceClass.cpp b/ServiceClass.cpp index ed8ccca..27f60cf 100644 --- a/ServiceClass.cpp +++ b/ServiceClass.cpp @@ -76,8 +76,7 @@ void ServiceClass::ServiceListe(){ int mcols = 0; unsigned long count = ServiceList.size(); MenuWinClass_SC->SERVICEMENU.LMItem = static_cast(calloc(count, sizeof(ITEM *))); - for (unsigned long i = 0; i < (count-2); i++) - { + for (unsigned long i = 0; i < (count-2); i++) { MenuWinClass_SC->SERVICEMENU.LMItem[i] = new_item(ServiceList[i].Name.c_str(), ServiceList[i].Status.c_str()); } MenuWinClass_SC->SERVICEMENU.LMItem[count-1] = nullptr; @@ -251,8 +250,10 @@ void ServiceClass::Statusabfrage(string ausgabestatus) { if (STATUSWIN){werase(STATUSWIN);delwin(STATUSWIN);} redrawwin(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin2)); wrefresh(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin2)); + touchwin(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin2)); redrawwin(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin3)); wrefresh(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin3)); + touchwin(TaskClass_SC->ClearWindow(MenuWinClass::START.TMPWin3)); prefresh(MenuWinClass_SC->START.TMPWin4, 0, 0, 2, 1, MenuWinClass_SC->START.HRYw4() + 1, MenuWinClass_SC->START.WCXw4()); prefresh(MenuWinClass_SC->START.TMPWin5, 0, 0, MenuWinClass_SC->START.HRY()-4, MenuWinClass_SC->START.WCX()-46, MenuWinClass_SC->START.HRYw5(), MenuWinClass_SC->START.WCXw5()); } @@ -375,13 +376,13 @@ void ServiceClass::TableMoveRow() { //drawUnits } // const int oneX = unit->sub & A_COLOR; for (int i = 0; i < MenuWinClass_SC->START.HRYw4(); i++) { - if ((i + ServiceClass::start) > static_cast(ServiceList.size() - 1)) { + if ((i + ServiceClass::ListStart) > static_cast(ServiceList.size() - 1)) { break; } - SERVICES unit = ServiceList[static_cast(start + i)]; + SERVICES unit = ServiceList[static_cast(ListStart + i)]; if (i == selected) { StateColor.SetSignalColor(17, 37, 27, 87); - MenuWinClass::SERVICEMENU.AktivName = ServiceList[static_cast(start + selected)].Name; + MenuWinClass::SERVICEMENU.AktivName = ServiceList[static_cast(ListStart + selected)].Name; wattron(MenuWinClass_SC->START.TMPWin4, COLOR_PAIR(87)|A_BOLD); } TableDraw(unit, i); @@ -538,29 +539,30 @@ void ServiceClass::TableDraw(SERVICES unit, int y) { } void ServiceClass::TableDriver(std::vector SRVLIST,int key){ int ps = MenuWinClass_SC->START.HRYw4()-1; +// string Dummy = Dummy.assign(40 ,' '); switch(key){ case REQ_LEFT_ITEM:{ break;} case REQ_RIGHT_ITEM:{ break;} case REQ_UP_ITEM:{ - if (start > 0 && selected < ps) { // / 2 - start--; + if (ListStart > 0 && selected < ps) { // / 2 + ListStart--; } else if (selected > 0) { selected--; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_UP_ITEM); } break;} case REQ_DOWN_ITEM:{ - int offset = start + selected; + int offset = ListStart + selected; int max = static_cast(SRVLIST.size()); - if ((start + ps) < max) { + if ((ListStart + ps) < max) { if (selected < ps) { // / 2 selected++; } else { - start++; + ListStart++; } } else if (offset < max) { selected++; @@ -568,7 +570,7 @@ void ServiceClass::TableDriver(std::vector SRVLIST,int key){ if (offset >= max) { selected = ps; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_DOWN_ITEM); } break;} @@ -577,67 +579,67 @@ void ServiceClass::TableDriver(std::vector SRVLIST,int key){ case REQ_SCR_DLINE:{ break;} case REQ_SCR_UPAGE:{ - if (start > 0) { - start -= ps; + if (ListStart > 0) { + ListStart -= ps; } - if (start < 0) { - start = 0; + if (ListStart < 0) { + ListStart = 0; selected = 0; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_UP_ITEM); } break;} case REQ_SCR_DPAGE:{ int max = static_cast(SRVLIST.size()-1); - if ((start + ps) < max) { // / 2 - start += ps; + if ((ListStart + ps) < max) { // / 2 + ListStart += ps; } - if ((start + ps) > max) { - start = max - ps; + if ((ListStart + ps) > max) { + ListStart = max - ps; selected = ps; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_DOWN_ITEM); } break;} case REQ_FIRST_ITEM:{ - if (start > 0 && selected < ps) { // / 2 - start--; + if (ListStart > 0 && selected < ps) { // / 2 + ListStart--; } else if (selected > 0) { selected--; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_UP_ITEM); } break;} case REQ_LAST_ITEM:{ int max = static_cast(SRVLIST.size()-1); - start = max - ps; + ListStart = max - ps; selected = ps; - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_UP_ITEM); } break;} case REQ_NEXT_ITEM:{ - if (start > 0 && selected < ps) { // / 2 - start--; + if (ListStart > 0 && selected < ps) { // / 2 + ListStart--; } else if (selected > 0) { selected--; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_UP_ITEM); } break;} case REQ_PREV_ITEM:{ - int offset = start + selected; + int offset = ListStart + selected; int max = static_cast(SRVLIST.size()); - if ((start + ps) < max) { + if ((ListStart + ps) < max) { if (selected < ps) { // / 2 selected++; } else { - start++; + ListStart++; } } else if (offset < max) { selected++; @@ -645,7 +647,7 @@ void ServiceClass::TableDriver(std::vector SRVLIST,int key){ if (offset >= max) { selected = ps; } - if (SRVLIST[static_cast(start + selected)].Name.empty()) { + if (SRVLIST[static_cast(ListStart + selected)].Name.empty()) { ServiceClass::TableDriver(SRVLIST,REQ_DOWN_ITEM); } break;} @@ -654,15 +656,15 @@ void ServiceClass::TableDriver(std::vector SRVLIST,int key){ case REQ_CLEAR_PATTERN:{ break;} case REQ_BACK_PATTERN:{ - if (MenuWinClass_SC->PATTERN.size()>0) {MenuWinClass_SC->PATTERN.pop_back(); MenuWinClass_SC->PATTERN.shrink_to_fit();}; + if (MenuWinClass_SC->SearchPattern.size()>0) {MenuWinClass_SC->SearchPattern.pop_back(); MenuWinClass_SC->SearchPattern.shrink_to_fit();}; mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, " ",-1); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->PATTERN.c_str(),-1); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->SearchPattern.c_str(),-1); break;} case REQ_NEXT_MATCH:{ int position = 0; for (auto unit : ServiceList) { if (!unit.Name.empty()) { - if (unit.Name.rfind(MenuWinClass_SC->PATTERN.c_str()) != std::string::npos) { + if (unit.Name.rfind(MenuWinClass_SC->SearchPattern.c_str()) != std::string::npos) { lastFound = position; moveTo(position); } position++; @@ -671,7 +673,7 @@ void ServiceClass::TableDriver(std::vector SRVLIST,int key){ } } if (lastFound == 0) { - MenuWinClass_SC->PATTERN.clear(); + MenuWinClass_SC->SearchPattern.clear(); return; } lastFound = 0; @@ -686,7 +688,7 @@ void ServiceClass::searchInput() { while ((key=wgetch(stdscr)) != KEY_F(10)) { switch(key) { case 27:{ // ESC - MenuWinClass_SC->PATTERN.clear(); + MenuWinClass_SC->SearchPattern.clear(); mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, " ",-1); break;} case KEY_ENTER: // Ctrl-M @@ -694,16 +696,16 @@ void ServiceClass::searchInput() { TableDriver(ServiceList,REQ_NEXT_MATCH); break;} case KEY_BACKSPACE:{ - if (MenuWinClass_SC->PATTERN.size()>0) {MenuWinClass_SC->PATTERN.pop_back(); MenuWinClass_SC->PATTERN.shrink_to_fit();}; + if (MenuWinClass_SC->SearchPattern.size()>0) {MenuWinClass_SC->SearchPattern.pop_back(); MenuWinClass_SC->SearchPattern.shrink_to_fit();}; mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, " ",-1); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->PATTERN.c_str(),-1); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->SearchPattern.c_str(),-1); TableDriver(ServiceList,REQ_NEXT_MATCH); break;} default:{ if (key > 10 && key < 128) { - sprintf(searchString,"%c",key); - MenuWinClass_SC->PATTERN.append(string(searchString)); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->PATTERN.c_str(),-1); + sprintf(MenuWinClass_SC->SearchChar,"%c",key); + MenuWinClass_SC->SearchPattern.append(string(MenuWinClass_SC->SearchChar)); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->SearchPattern.c_str(),-1); TableDriver(ServiceList,REQ_NEXT_MATCH); } break;} @@ -721,73 +723,80 @@ void ServiceClass::drawSearch() { /* * Lets indicate it is a search input */ char text[BUFSIZ] = ""; if (lastFound == 0) { - sprintf(searchString,"%s",text); - MenuWinClass_SC->PATTERN.append(string(searchString)); + sprintf(MenuWinClass_SC->SearchChar,"%s",text); + MenuWinClass_SC->SearchPattern.append(string(MenuWinClass_SC->SearchChar)); //sprintf(text, "%s%s", text, searchString); } /* * Draw it using any visible, light color */ //drawStatus(1, text, 0); - mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->PATTERN.c_str(),-1); + mvwaddnstr(MenuWinClass::START.TMPWin3, 4, 33, MenuWinClass_SC->SearchPattern.c_str(),-1); } void ServiceClass::moveTo(int position) { - start = selected = 0; + ListStart = selected = 0; for (int i = 0; i < position; i++) { TableDriver(ServiceList,REQ_UP_ITEM); } } string ServiceClass::SearchDriver(SeaReq drv, WINDOW *Win, int Key, string Search, int Posi) { - static const int Start = 33; - int hry, wcx; - getyx(Win, hry, wcx); - int MaxSearchTextLaenge = (MenuWinClass::START.WCX() - (Start + MenuWinClass::START.BorderWeight)); + int wcx = getcurx(Win); + int MaxSearchChar = (MenuWinClass::START.WCX() - (MenuWinClass::SucheStartWCX + MenuWinClass::START.BorderWeight)); int Laenge = Search.length(); - int AbsolPosi; - AbsolPosi = (Start + Posi); - char TmpKey[BUFSIZE] = ""; + int AbsolPosi = (MenuWinClass::SucheStartWCX + Posi); + int AbsolSuchWort = (MenuWinClass::SucheStartWCX + Laenge); + MenuWinClass_SC->Dummy.assign(MaxSearchChar, ' '); + char TmpKey[BUFSIZE]; sprintf(TmpKey, "%c", Key); - string dummi; - dummi.assign(MaxSearchTextLaenge,' '); switch (drv) { case REQ_DEL_BACKSPACE:{ - if ((wcx > Start) && (wcx <= (Start + Laenge))) { - Search.erase(Posi-1, 1); - mvwaddnstr(Win, 4, Start, dummi.c_str(), -1); - mvwaddnstr(Win, 4, Start, Search.c_str(), -1); - wmove(Win, 4, AbsolPosi - 1); + if ((wcx > MenuWinClass_SC->SucheStartWCX) && (wcx <= (MenuWinClass_SC->SucheStartWCX + Laenge))) { + if (Laenge > 0) { + int del = (Posi - 1); + Search.erase(del, 1); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, MenuWinClass_SC->Dummy.c_str(), -1); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, Search.c_str(), -1); + wmove(Win, 4, AbsolPosi -1); + } } break; } case REQ_DEL_DC:{ - if ((wcx > Start) && (wcx < (Start + Laenge))) { - Search.erase(Posi+1, 1); - mvwaddnstr(Win, 4, Start, dummi.c_str(), -1); - mvwaddnstr(Win, 4, Start, Search.c_str(), -1); - wmove(Win, 4, AbsolPosi - 1); + if ((wcx > MenuWinClass_SC->SucheStartWCX) && (wcx < (MenuWinClass_SC->SucheStartWCX + Laenge))) { + if (Laenge > 0) { + int del = (Posi); + Search.erase(del, 1); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, MenuWinClass_SC->Dummy.c_str(), -1); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, Search.c_str(), -1); + wmove(Win, 4, AbsolPosi); + } } break; } case REQ_RIGHT:{ - if ((wcx > Start) && (wcx <= (Start + Laenge))) { - //if ((Posi != 0) || ((Posi-1) <= Laenge)) { - int cursorbewegen = AbsolPosi +1; - wmove(Win, 4, cursorbewegen); + if ((wcx > MenuWinClass_SC->SucheStartWCX) && (wcx <= (MenuWinClass_SC->SucheStartWCX + Laenge))) { + if ((AbsolPosi + 1) <= AbsolSuchWort) { + int cursorbewegen = AbsolPosi +1; + wmove(Win, 4, cursorbewegen); + } } break; } case REQ_LEFT:{ - if ((wcx > Start) && (wcx <= (Start + Laenge))) { - //if ((Posi != 0) || ((Posi-1) <= Laenge)) { - int cursorbewegen = AbsolPosi -1; - wmove(Win, 4, cursorbewegen); + if ((wcx > MenuWinClass_SC->SucheStartWCX) && (wcx <= (MenuWinClass_SC->SucheStartWCX + Laenge))) { + if (AbsolPosi <= AbsolSuchWort) { + int cursorbewegen = AbsolPosi -1; + wmove(Win, 4, cursorbewegen); + } } break; } case REQ_INS_DEFAULT:{ - if (Key > 10 && Key < 128) { + if ((Key > 32 && Key < 126)) { + // || (Key == 195 || Key == 182 || Key == 150 || Key == 164 || Key == 132 || Key == 188 || Key == 156)){ + //if (Key > 32 && Key < 126) { if (Posi < Laenge) { Search.insert(Posi, string(TmpKey)); - mvwaddnstr(Win, 4, Start, Search.c_str(), -1); - wmove(Win, 4, (Start + Posi)); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, Search.c_str(), -1); + wmove(Win, 4, (MenuWinClass_SC->SucheStartWCX + Posi)); } else { Search.append(string(TmpKey)); - mvwaddnstr(Win, 4, Start, Search.c_str(), -1); + mvwaddnstr(Win, 4, MenuWinClass_SC->SucheStartWCX, Search.c_str(), -1); } }; break;} @@ -796,10 +805,9 @@ string ServiceClass::SearchDriver(SeaReq drv, WINDOW *Win, int Key, string Searc return Search; } /*##################################################################################*/ + ServiceClass::ServiceClass(){ systemctlwahl = "service"; } -ServiceClass::~ServiceClass(){ - -} +ServiceClass::~ServiceClass(){ } /*##################################################################################*/ diff --git a/ServiceClass.h b/ServiceClass.h index 914b2e8..622c23d 100644 --- a/ServiceClass.h +++ b/ServiceClass.h @@ -5,40 +5,17 @@ #include #include -//enum _INPUT_FOR { -// INPUT_FOR_LIST, -// INPUT_FOR_SEARCH -//}; - #define ERR_PREFIX "Failed: " #define SYSV_INSTALL_EXEC "/lib/systemd/systemd-sysv-install" +enum _INPUT_FOR { MENU_MOVE, LIST_MOVE, SEARCH_INPUT }; enum SeaReq { REQ_RIGHT, REQ_LEFT, REQ_DEL_DC, REQ_DEL_BACKSPACE, REQ_INS_DEFAULT}; -enum { - UNIT_STATE_DISABLED = 0x01, - UNIT_STATE_ENABLED = 0x02, - UNIT_STATE_STATIC = 0x03, - UNIT_STATE_BAD = 0x04, - UNIT_STATE_MASKED = 0x05, - UNIT_STATE_TMP = 0x06, - UNIT_STATE_GENERATED = 0x07, - UNIT_SUBSTATE_RUNNING = 0x08, - UNIT_SUBSTATE_CONNECTED = 0x09, - UNIT_SUBSTATE_INVALID = 0x0a, - UNIT_SUBSTATE_TMP = 0x0b, - UNIT_SUBSTATE_DEAD = 0x0c, - UNIT_SUBSTATE_EXITED = 0x0d, - UNIT_LOADSTATE_LOADED = 0x0e, - UNIT_LOADSTATE_NOTFOUND = 0x0f, - UNIT_LOADSTATE_UNLOAD = 0x10, - UNIT_ACTIVESTATE_ACTIVE = 0x11, - UNIT_ACTIVESTATE_INACTIVE = 0x12 -}; -enum STATE_FLAGS { - STATE_FLAGS_ENABLE, - STATE_FLAGS_DISABLE, - STATE_FLAGS_DISABLE_ISO -}; +enum { UNIT_STATE_DISABLED = 0x01, UNIT_STATE_ENABLED = 0x02, UNIT_STATE_STATIC = 0x03, UNIT_STATE_BAD = 0x04, + UNIT_STATE_MASKED = 0x05, UNIT_STATE_TMP = 0x06, UNIT_STATE_GENERATED = 0x07, UNIT_SUBSTATE_RUNNING = 0x08, + UNIT_SUBSTATE_CONNECTED = 0x09, UNIT_SUBSTATE_INVALID = 0x0a, UNIT_SUBSTATE_TMP = 0x0b, UNIT_SUBSTATE_DEAD = 0x0c, + UNIT_SUBSTATE_EXITED = 0x0d, UNIT_LOADSTATE_LOADED = 0x0e, UNIT_LOADSTATE_NOTFOUND = 0x0f, UNIT_LOADSTATE_UNLOAD = 0x10, + UNIT_ACTIVESTATE_ACTIVE = 0x11, UNIT_ACTIVESTATE_INACTIVE = 0x12 }; +enum STATE_FLAGS { STATE_FLAGS_ENABLE, STATE_FLAGS_DISABLE, STATE_FLAGS_DISABLE_ISO }; struct SignalColor { int Red {18}; //Error or inaktive @@ -74,11 +51,11 @@ class ServiceClass { string systemctlwahl; /*#####################################################*/ SignalColor StateColor; - char searchString[BUFSIZ] = ""; + char SearchChar[BUFSIZ] = ""; unsigned char inputFor = 0; int lastFound = 0; int selected = 0; - int start = 0; + int ListStart = 0; string AktivName {""}; /*#####################################################*/ void ServiceListFill(); @@ -93,9 +70,12 @@ class ServiceClass { void TableDraw(SERVICES unit, int y); void TableDriver(vector SRVLIST, int key); void moveTo(int position); + void searchInput(); void drawSearch(); string SearchDriver(SeaReq drv, WINDOW *Win, int Key, string Search, int Posi); + /*#####################################################*/ + /*#####################################################*/ ServiceClass(); ~ServiceClass(); diff --git a/ServiceControl.pro b/ServiceControl.pro index a5c39c2..c52d3b4 100644 --- a/ServiceControl.pro +++ b/ServiceControl.pro @@ -1,5 +1,5 @@ TEMPLATE = app -CONFIG += console c++17 +CONFIG += console c++21 CONFIG -= app_bundle CONFIG -= qt @@ -80,22 +80,19 @@ unix:!macx: LIBS += -lncurses++w -Wall -lncursesw -lmenuw -lmenu -lformw -lpanel ########################################################################### SOURCES += \ -# MenuClass.cpp \ -# WinClass.cpp \ MenuWinClass.cpp \ ServiceClass.cpp \ - Start.cpp \ + ServiceControl.cpp \ TaskClass.cpp HEADERS += \ Info.h \ -# WinClass.h \ -# MenuClass.h \ MenuWinClass.h \ ServiceClass.h \ TaskClass.h DISTFILES += \ + systemd.txt \ zeug.txt diff --git a/Start.cpp b/Start.cpp deleted file mode 100644 index f7249fd..0000000 --- a/Start.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -//#include -//#include -#include -#include -#include - -using namespace std; - -TaskClass * TaskClassS = new TaskClass(); -ServiceClass * ServiceClassS = new ServiceClass(); -MenuWinClass *MenuWinClassS = new MenuWinClass(); - -int main (int argc, char* argv[]) { -//try { - if (argc > 1) { - if (string(argv[1]).compare("-h")) { - cout << ABOUT_INFO << " " << VERSION << endl; - return 0; - exit(EXIT_SUCCESS); - } else { - //fn = string(argv[1]); - //ed = Editor(fn); - } - } - - int Key = 0; - werase(stdscr); - MenuWinClassS->StartWin(); - signal(SIGWINCH, MenuWinClass::ResizeHandler); - //-------------_DatumUhrZeit_datumuhrzeit_----------------------------------------------- - //std::thread worker(&TaskClass::process_signal, std::ref(TaskPtr), "DateTime"); - //worker.detach(); - MenuWinClass::SetWinSize(); - MenuWinClassS->FensterDraw(); - - refresh(); - wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); - touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); - redrawwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); - wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); - touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); - wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin3)); - touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin3)); - prefresh(MenuWinClass::START.TMPWin4, 0, 0, 2, 1, MenuWinClass::START.HRYw4() + 1, MenuWinClass::START.WCXw4()); - prefresh(MenuWinClass::START.TMPWin5, 0, 0, MenuWinClass::START.HRY()-4, - MenuWinClass::START.WCX()-46, MenuWinClass::START.HRYw5(), MenuWinClass::START.WCXw5()); - redrawwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); - wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); - - do { Key = MenuWinClass::MenuStart(Key); if (Key == KEY_F(10)) { break; } } while ((Key = getch()) != KEY_F(10)); - - ServiceClassS->ENDE(); - MenuWinClassS->StopWin(); - -// } catch (const NCursesException *e) { endwin(); std::cerr << e->message << std::endl; cout << e->errorno; -// } catch (const NCursesException &e) { endwin(); std::cerr << e.message << std::endl; cout << e.errorno; -// } catch (const std::exception &e) { endwin(); std::cerr << "Exception: " << e.what() << std::endl; cout << EXIT_FAILURE; } -} diff --git a/TaskClass.cpp b/TaskClass.cpp index 4d72df4..de9fbf4 100644 --- a/TaskClass.cpp +++ b/TaskClass.cpp @@ -8,9 +8,7 @@ using namespace std; TaskClass *TaskClass_TC = new TaskClass(); -//MenuClass *MenuPtr_TC = new MenuClass(); ServiceClass *ServiceClass_TC = new ServiceClass(); -//WinClass *WinPtr_TC = new WinClass(); MenuWinClass *MenuWinClass_TC = new MenuWinClass(); volatile int signal_flag; diff --git a/TaskClass.h b/TaskClass.h index 1ec5fe9..fb1c7de 100644 --- a/TaskClass.h +++ b/TaskClass.h @@ -14,15 +14,21 @@ #include #include #include -#include +#include #include #include #include #include +#include + +#include +#include #include #include -#include +#ifndef CTRL +#define CTRL(c) ((c) & 037) +#endif //#define CTRLD 4 #define BUFSIZE 8192 #define CLEARSCR system ( "clear" ) @@ -31,6 +37,7 @@ #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p) = nullptr; } } #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define SIZEOF(table) (sizeof(table) / sizeof(table[0])) +#define VARNAME(name) #name #define RST "\x1B[0m"; #define KRED "\x1B[31m"; #define KGRN "\x1B[32m"; From 5998203191f6ad69df55bfe3353bb5c1e71a9d1f Mon Sep 17 00:00:00 2001 From: Anthony Olszynski Date: Tue, 9 Feb 2021 08:52:22 +0100 Subject: [PATCH 2/2] update ServiceControl_v1.0.5 --- ServiceControl.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ServiceControl.cpp diff --git a/ServiceControl.cpp b/ServiceControl.cpp new file mode 100644 index 0000000..5078fdc --- /dev/null +++ b/ServiceControl.cpp @@ -0,0 +1,59 @@ +#include +//#include +//#include +#include +#include +#include + +using namespace std; + +TaskClass * TaskClassS = new TaskClass(); +ServiceClass * ServiceClassS = new ServiceClass(); +MenuWinClass *MenuWinClassS = new MenuWinClass(); + +int main (int argc, char* argv[]) { +//try { + if (argc > 1) { + if (string(argv[1]).compare("-h")) { + cout << HELP_INFO << " " << VERSION << endl; + return 0; + exit(EXIT_SUCCESS); + } else { + //fn = string(argv[1]); + //ed = Editor(fn); + } + } + + int Key = 0; + werase(stdscr); + MenuWinClassS->StartWin(); + signal(SIGWINCH, MenuWinClass::ResizeHandler); + //-------------_DatumUhrZeit_datumuhrzeit_----------------------------------------------- + //std::thread worker(&TaskClass::process_signal, std::ref(TaskPtr), "DateTime"); + //worker.detach(); + MenuWinClass::SetWinSize(); + MenuWinClassS->FensterDraw(); + + refresh(); + wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); + touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); + redrawwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); + wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); + touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin2)); + wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin3)); + touchwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin3)); + prefresh(MenuWinClass::START.TMPWin4, 0, 0, 2, 1, MenuWinClass::START.HRYw4() + 1, MenuWinClass::START.WCXw4()); +// prefresh(MenuWinClass::START.TMPWin5, 0, 0, MenuWinClass::START.HRY()-4, +// MenuWinClass::START.WCX()-46, MenuWinClass::START.HRYw5(), MenuWinClass::START.WCXw5()); + redrawwin(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); + wrefresh(TaskClassS->ClearWindow(MenuWinClass::START.TMPWin1)); + + do { Key = MenuWinClass::MenuStart(Key); if (Key == KEY_F(10)) { break; }; } while ((Key = getch()) != KEY_F(10)); + + ServiceClassS->ENDE(); + MenuWinClassS->StopWin(); + +// } catch (const NCursesException *e) { endwin(); std::cerr << e->message << std::endl; cout << e->errorno; +// } catch (const NCursesException &e) { endwin(); std::cerr << e.message << std::endl; cout << e.errorno; +// } catch (const std::exception &e) { endwin(); std::cerr << "Exception: " << e.what() << std::endl; cout << EXIT_FAILURE; } +}