/* * FeitCSI is the tool for extracting CSI information from supported intel NICs. * Copyright (C) 2023 Miroslav Hutar. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MAIN_WINDOW_H #define MAIN_WINDOW_H #include #include "gui/Plot.h" #include "gui/CsiProcessingWindow.h" class MainWindow : public Gtk::ApplicationWindow { Glib::RefPtr ui; public: MainWindow(BaseObjectType *obj, Glib::RefPtr const &builder); void fatalError(std::string msg); Glib::RefPtr builder; private: int chartWidth = 0; int chartHeight = 0; bool measuring = false; bool injecting = false; CsiProcessingWindow csiProcessingWindow; std::stringstream coutBuffer; std::map errors; Glib::RefPtr consoleScrollbarAdjustment; Glib::RefPtr errorDialog; Glib::RefPtr measureButton; Glib::RefPtr injectButton; Glib::RefPtr frequency; Glib::RefPtr channelWidth; Glib::RefPtr outputFile; Glib::RefPtr filePath; Glib::RefPtr format; Glib::RefPtr mcs; Glib::RefPtr spatialStreams; Glib::RefPtr guardInterval; Glib::RefPtr ltf; Glib::RefPtr txPower; Glib::RefPtr coding; Glib::RefPtr injectDelay; Glib::RefPtr injectRepeat; Glib::RefPtr console; Glib::RefPtr errorMessages; Plot plot; void closeButton(); bool onWindowDelete(GdkEventAny *event); void onWindowInit(); void onResize(); void frequencyChange(); void outputFileChange(); void channelWidthChange(); void formatChange(); void mcsChange(); void spatialStreamsChange(); void ltfChange(); void guardIntervalChange(); void txPowerChange(); void codingChange(); void injectDelayChange(); void injectRepeatChange(); void updateErrorMessages(); void measureButtonClicked(); void injectButtonClicked(); void updateSensitivity(); }; #endif