LogDoctor/logdoctor/mainwindow.h

875 lines
22 KiB
C
Raw Normal View History

2022-06-21 21:07:06 +02:00
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
2022-06-20 21:44:58 +02:00
#include "ui_mainwindow.h"
2022-07-26 20:44:47 +02:00
#include <QMainWindow>
#include <QCloseEvent>
2022-06-20 21:44:58 +02:00
#include <QTranslator>
2022-07-26 20:44:47 +02:00
#include <QFontDatabase>
#include <QMessageBox>
#include <QTreeWidget>
#include <QChartView>
2022-06-21 21:07:06 +02:00
#include "utilities/strings.h"
#include "modules/tb.h"
2022-08-27 11:18:02 +02:00
#include "modules/craplog/craplog.h"
#include "modules/crapview/crapview.h"
#include "modules/craphelp/craphelp.h"
#include "modules/crapup/crapup.h"
#include "modules/crapinfo/crapinfo.h"
#include "tools/crapnote/crapnote.h"
2022-08-27 11:18:02 +02:00
2022-11-24 22:29:50 +01:00
#include "games/crisscross/game.h"
#include "games/snake/game.h"
2022-10-16 16:27:13 +02:00
2022-06-23 04:00:37 +02:00
2022-06-20 21:44:58 +02:00
QT_BEGIN_NAMESPACE
2022-06-21 21:07:06 +02:00
namespace Ui { class MainWindow; }
2022-06-20 21:44:58 +02:00
QT_END_NAMESPACE
//! MainWindow
/*!
The parent window
*/
2022-06-21 21:07:06 +02:00
class MainWindow : public QMainWindow
2022-06-20 21:44:58 +02:00
{
Q_OBJECT
2022-06-20 21:44:58 +02:00
public:
2023-01-23 19:07:24 +01:00
explicit MainWindow( QWidget* parent=nullptr );
2022-06-21 21:07:06 +02:00
~MainWindow();
2022-06-21 21:07:06 +02:00
private slots:
void closeEvent( QCloseEvent *event ) override;
////////////////
//// CUSTOM ////
2022-07-21 21:45:52 +02:00
void wait_ActiveWindow();
void update_Craplog_PerfData();
void check_CraplogLLT_Finished();
//////////////
//// TABS ////
void on_button_Tab_Log_clicked();
void on_button_Tab_View_clicked();
void on_button_Tab_Conf_clicked();
//// STATS ////
void on_button_Tab_StatsWarn_clicked();
void on_button_Tab_StatsSpeed_clicked();
void on_button_Tab_StatsCount_clicked();
void on_button_Tab_StatsDay_clicked();
void on_button_Tab_StatsRelat_clicked();
void on_button_Tab_StatsGlob_clicked();
/////////////////
//// CRAPLOG ////
void on_button_Logs_Down_clicked();
void on_button_Logs_Up_clicked();
void refreshLogsList();
void runCraplog();
void on_button_LogFiles_ViewFile_clicked();
2022-06-25 21:17:40 +02:00
void on_checkBox_LogFiles_CheckAll_stateChanged(int arg1);
void on_button_LogFiles_RefreshList_clicked();
2022-06-21 21:07:06 +02:00
void on_listLogFiles_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_listLogFiles_itemChanged(QTreeWidgetItem *item, int column);
2022-06-26 23:12:57 +02:00
void on_button_LogFiles_Apache_clicked();
void on_button_LogFiles_Nginx_clicked();
void on_button_LogFiles_Iis_clicked();
void on_button_MakeStats_Start_clicked();
//////////////////
//// CRAPVIEW ////
void drawStatsWarn();
void drawStatsSpeed();
void drawStatsCount();
void drawStatsDay();
void drawStatsRelat();
void makeStatsGlobals();
//// WARNINGS ////
void on_box_StatsWarn_WebServer_currentIndexChanged(int index);
void on_box_StatsWarn_Year_currentIndexChanged(int index);
void on_box_StatsWarn_Month_currentIndexChanged(int index);
void on_box_StatsWarn_Day_currentIndexChanged(int index);
void on_checkBox_StatsWarn_Hour_stateChanged(int state);
void on_box_StatsWarn_Hour_currentIndexChanged(int index);
void on_button_StatsWarn_Draw_clicked();
2022-07-28 22:45:38 +02:00
void on_button_StatsWarn_Update_clicked();
//// SPEED ////
2022-07-21 21:45:52 +02:00
void on_box_StatsSpeed_WebServer_currentIndexChanged(int index);
2022-07-09 18:16:09 +02:00
2022-07-21 21:45:52 +02:00
void on_box_StatsSpeed_Year_currentIndexChanged(int index);
void on_box_StatsSpeed_Month_currentIndexChanged(int index);
void on_box_StatsSpeed_Day_currentIndexChanged(int index);
2022-07-21 21:45:52 +02:00
void on_button_StatsSpeed_Draw_clicked();
//// COUNTS ////
void on_box_StatsCount_WebServer_currentIndexChanged(int index);
void on_box_StatsCount_Year_currentIndexChanged(int index);
void on_box_StatsCount_Month_currentIndexChanged(int index);
void on_box_StatsCount_Day_currentIndexChanged(int index);
void on_button_StatsCount_Protocol_clicked();
void on_button_StatsCount_Method_clicked();
void on_button_StatsCount_Uri_clicked();
void on_button_StatsCount_Query_clicked();
void on_button_StatsCount_Response_clicked();
void on_button_StatsCount_Referrer_clicked();
void on_button_StatsCount_Cookie_clicked();
void on_button_StatsCount_UserAgent_clicked();
void on_button_StatsCount_Client_clicked();
//// DAY-TIME ////
void on_box_StatsDay_WebServer_currentIndexChanged(int index);
void on_box_StatsDay_LogsField_currentIndexChanged(int index);
void on_box_StatsDay_FromYear_currentIndexChanged(int index);
void on_box_StatsDay_FromMonth_currentIndexChanged(int index);
void on_box_StatsDay_FromDay_currentIndexChanged(int index);
void on_checkBox_StatsDay_Period_stateChanged(int state);
void on_box_StatsDay_ToYear_currentIndexChanged(int index);
void on_box_StatsDay_ToMonth_currentIndexChanged(int index);
void on_box_StatsDay_ToDay_currentIndexChanged(int index);
void on_button_StatsDay_Draw_clicked();
//// RELATIONAL ////
void on_box_StatsRelat_WebServer_currentIndexChanged(int index);
void on_box_StatsRelat_LogsField_1_currentIndexChanged(int index);
void on_box_StatsRelat_LogsField_2_currentIndexChanged(int index);
void on_box_StatsRelat_FromYear_currentIndexChanged(int index);
void on_box_StatsRelat_FromMonth_currentIndexChanged(int index);
void on_box_StatsRelat_FromDay_currentIndexChanged(int index);
void on_box_StatsRelat_ToYear_currentIndexChanged(int index);
void on_box_StatsRelat_ToMonth_currentIndexChanged(int index);
void on_box_StatsRelat_ToDay_currentIndexChanged(int index);
void on_button_StatsRelat_Draw_clicked();
void on_button_StatsGlob_Apache_clicked();
void on_button_StatsGlob_Nginx_clicked();
void on_button_StatsGlob_Iis_clicked();
/////////////////
//// CRAPSET ////
//// WINDOW ////
void on_checkBox_ConfWindow_Geometry_clicked(bool checked);
void on_box_ConfWindow_Theme_currentIndexChanged(int index);
void on_box_ConfWindow_Icons_currentIndexChanged(int index);
//// DIALOGS ////
void on_slider_ConfDialogs_General_sliderReleased();
void on_slider_ConfDialogs_Logs_sliderReleased();
void on_slider_ConfDialogs_Stats_sliderReleased();
//// TEXT BROWSER ////
void on_box_ConfTextBrowser_Font_currentIndexChanged(int index);
void on_checkBox_ConfTextBrowser_WideLines_clicked(bool checked);
void on_box_ConfTextBrowser_ColorScheme_currentIndexChanged(int index);
//// CHARTS ////
void on_box_ConfCharts_Theme_currentIndexChanged(int index);
//// DATABASES ////
void on_inLine_ConfDatabases_Data_Path_textChanged(const QString &arg1);
void on_inLine_ConfDatabases_Data_Path_returnPressed();
void on_button_ConfDatabases_Data_Save_clicked();
void on_inLine_ConfDatabases_Hashes_Path_textChanged(const QString &arg1);
void on_inLine_ConfDatabases_Hashes_Path_returnPressed();
void on_button_ConfDatabases_Hashes_Save_clicked();
void on_checkBox_ConfDatabases_DoBackup_clicked(bool checked);
void on_spinBox_ConfDatabases_NumBackups_valueChanged(int arg1);
//// LOGS DEFAULTS ////
void on_radio_ConfDefaults_Apache_toggled(bool checked);
void on_radio_ConfDefaults_Nginx_toggled(bool checked);
void on_radio_ConfDefaults_Iis_toggled(bool checked);
//// LOGS CONTROL ////
void on_checkBox_ConfControl_Usage_clicked(bool checked);
void on_checkBox_ConfControl_Size_clicked(bool checked);
void on_spinBox_ConfControl_Size_editingFinished();
//// APACHE ////
void on_inLine_ConfApache_Path_String_textChanged(const QString &arg1);
void on_inLine_ConfApache_Path_String_returnPressed();
void on_button_ConfApache_Path_Save_clicked();
void on_inLine_ConfApache_Format_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfApache_Format_String_returnPressed();
void on_button_ConfApache_Format_Save_clicked();
void on_button_ConfApache_Format_Sample_clicked();
void on_button_ConfApache_Format_Help_clicked();
void on_box_ConfApache_Warnlist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfApache_Warnlist_Used_clicked(bool checked);
void on_inLine_ConfApache_Warnlist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfApache_Warnlist_String_returnPressed();
void on_button_ConfApache_Warnlist_Add_clicked();
void on_list_ConfApache_Warnlist_List_itemSelectionChanged();
void on_button_ConfApache_Warnlist_Remove_clicked();
void on_button_ConfApache_Warnlist_Up_clicked();
void on_button_ConfApache_Warnlist_Down_clicked();
void on_box_ConfApache_Blacklist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfApache_Blacklist_Used_clicked(bool checked);
void on_inLine_ConfApache_Blacklist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfApache_Blacklist_String_returnPressed();
void on_button_ConfApache_Blacklist_Add_clicked();
void on_list_ConfApache_Blacklist_List_itemSelectionChanged();
void on_button_ConfApache_Blacklist_Remove_clicked();
void on_button_ConfApache_Blacklist_Up_clicked();
void on_button_ConfApache_Blacklist_Down_clicked();
//// NGINX ////
void on_inLine_ConfNginx_Path_String_textChanged(const QString &arg1);
void on_inLine_ConfNginx_Path_String_returnPressed();
void on_button_ConfNginx_Path_Save_clicked();
void on_inLine_ConfNginx_Format_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfNginx_Format_String_returnPressed();
void on_button_ConfNginx_Format_Save_clicked();
void on_button_ConfNginx_Format_Sample_clicked();
void on_button_ConfNginx_Format_Help_clicked();
void on_box_ConfNginx_Warnlist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfNginx_Warnlist_Used_clicked(bool checked);
void on_inLine_ConfNginx_Warnlist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfNginx_Warnlist_String_returnPressed();
void on_button_ConfNginx_Warnlist_Add_clicked();
void on_list_ConfNginx_Warnlist_List_itemSelectionChanged();
void on_button_ConfNginx_Warnlist_Remove_clicked();
void on_button_ConfNginx_Warnlist_Up_clicked();
void on_button_ConfNginx_Warnlist_Down_clicked();
void on_box_ConfNginx_Blacklist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfNginx_Blacklist_Used_clicked(bool checked);
void on_inLine_ConfNginx_Blacklist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfNginx_Blacklist_String_returnPressed();
void on_button_ConfNginx_Blacklist_Add_clicked();
void on_list_ConfNginx_Blacklist_List_itemSelectionChanged();
void on_button_ConfNginx_Blacklist_Remove_clicked();
void on_button_ConfNginx_Blacklist_Up_clicked();
void on_button_ConfNginx_Blacklist_Down_clicked();
//// IIS ////
void on_inLine_ConfIis_Path_String_textChanged(const QString &arg1);
void on_inLine_ConfIis_Path_String_returnPressed();
void on_button_ConfIis_Path_Save_clicked();
void on_radio_ConfIis_Format_W3C_toggled(bool checked);
void on_radio_ConfIis_Format_NCSA_toggled(bool checked);
void on_radio_ConfIis_Format_IIS_toggled(bool checked);
void on_inLine_ConfIis_Format_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfIis_Format_String_returnPressed();
void on_button_ConfIis_Format_Save_clicked();
void on_button_ConfIis_Format_Sample_clicked();
void on_button_ConfIis_Format_Help_clicked();
void on_box_ConfIis_Warnlist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfIis_Warnlist_Used_clicked(bool checked);
void on_inLine_ConfIis_Warnlist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfIis_Warnlist_String_returnPressed();
void on_button_ConfIis_Warnlist_Add_clicked();
void on_list_ConfIis_Warnlist_List_itemSelectionChanged();
void on_button_ConfIis_Warnlist_Remove_clicked();
void on_button_ConfIis_Warnlist_Up_clicked();
void on_button_ConfIis_Warnlist_Down_clicked();
void on_box_ConfIis_Blacklist_Field_currentTextChanged(const QString &arg1);
void on_checkBox_ConfIis_Blacklist_Used_clicked(bool checked);
void on_inLine_ConfIis_Blacklist_String_cursorPositionChanged(int arg1, int arg2);
void on_inLine_ConfIis_Blacklist_String_returnPressed();
void on_button_ConfIis_Blacklist_Add_clicked();
void on_list_ConfIis_Blacklist_List_itemSelectionChanged();
void on_button_ConfIis_Blacklist_Remove_clicked();
void on_button_ConfIis_Blacklist_Up_clicked();
void on_button_ConfIis_Blacklist_Down_clicked();
///////////////
//// MENU ////
//// LANGUAGE ////
void menu_actionEnglishGb_triggered();
void menu_actionEspanolEs_triggered();
void menu_actionFrancaisFr_triggered();
void menu_actionItalianoIt_triggered();
void menu_actionJapaneseJp_triggered();
void menu_actionPortuguesBr_triggered();
//// TOOLS ////
void menu_actionBlockNote_triggered();
//// UTILITIES ////
void menu_actionInfos_triggered();
void menu_actionCheckUpdates_triggered();
//// GAMES ////
2022-10-16 16:27:13 +02:00
void menu_actionCrissCross_triggered();
2022-10-17 20:19:56 +02:00
void menu_actionSnake_triggered();
2022-06-20 21:44:58 +02:00
private:
2022-06-21 21:07:06 +02:00
Ui::MainWindow *ui;
// current version of LogDoctor
2023-01-23 19:07:24 +01:00
const float version = 2.02;
// web servers ID constants
const unsigned int APACHE_ID=11, NGINX_ID=12, IIS_ID=13;
2023-01-23 19:07:24 +01:00
const QString wsFromIndex( const int index ) const;
//////////////////////////
//// OPERATING SYSTEM ////
2022-08-27 10:35:58 +02:00
const std::string home_path = StringOps::rstrip( QStandardPaths::locate( QStandardPaths::HomeLocation, "", QStandardPaths::LocateDirectory ).toStdString(), "/" );
// 1: linux, 2:windows, 3:mac
#if defined( Q_OS_DARWIN )
// Darwin-based systems: macOS, iOS, watchOS and tvOS.
const unsigned int OS = 3;
const std::string configs_path = this->home_path + "/Lybrary/Preferences/LogDoctor/logdoctor.conf";
const std::string logdoc_path = this->home_path + "/Lybrary/Application Support/LogDoctor";
#elif defined( Q_OS_WIN )
// Microsoft Windows systems
2022-08-27 10:35:58 +02:00
const unsigned int OS = 2;
const std::string configs_path = this->home_path + "/AppData/Local/LogDoctor/logdoctor.conf";
const std::string logdoc_path = this->home_path + "/AppData/Local/LogDoctor";
#elif defined( Q_OS_UNIX )
// Unix-like systems: Linux, BSD and SysV
const unsigned int OS = 1;
const std::string configs_path = this->home_path + "/.config/LogDoctor/logdoctor.conf";
const std::string logdoc_path = "/usr/share/LogDoctor";
#else
#error "System not supported"
#endif
//! Defines OS specific stuff
void defineOSspec();
////////////////////////
//// CONFIGURATIONS ////
////////////////////////
//! Reads the configurations file and apply the resulting configuration
void readConfigs();
//! Writes the current configuration on file
void writeConfigs();
//! Converts a list of items to a string
/*!
\param list The list to stringify
\param user_agents Whether to apply the special rule to parse user-agents lists or not
\return The resulting string
\see writeConfigs()
*/
2023-01-23 19:07:24 +01:00
const std::string list2string( const std::vector<std::string>& list, const bool user_agent=false ) const;
//! Retrieves a list of items from the given string
/*!
\param list The list to stringify
\param user_agents Whether to apply the special rule to parse user-agents lists or not
\return The resulting list
\see readConfigs()
*/
2023-01-23 19:07:24 +01:00
const std::vector<std::string> string2list( const std::string& string, const bool user_agent=false ) const;
// string to bool and vice versa
const std::unordered_map<std::string, bool> s2b = { {"true",true}, {"false",false} };
const std::unordered_map<bool, std::string> b2s = { {true,"true"}, {false,"false"} };
//////////////////
//// LANGUAGE ////
QTranslator translator;
std::string language = "en_GB";
//! Translates the UI to the selected language
void updateUiLanguage();
/////////////////////////
//// WINDOW GEOMETRY ////
//! Converts the window's geometry to string
/*!
\see writeConfigs()
*/
2023-01-23 19:07:24 +01:00
const std::string geometryToString() const;
//! Retrieves the window geometry from the given string
/*!
\see readConfigs()
*/
2023-01-23 19:07:24 +01:00
void setGeometryFromString( const std::string& geometry );
/////////////////
//// GENERAL ////
// quantoty of informational dialogs to display
int dialogs_level = 2; // 0: essential, 1: usefull, 2: explanatory
// default web server
int default_ws = 11;
2022-07-09 18:16:09 +02:00
2022-07-06 21:03:58 +02:00
//////////////////
//// GRAPHICS ////
//////////////////
// remember window position and sizes
bool remember_window = true;
// themes
int window_theme_id = 0;
int charts_theme_id = 0;
int icons_theme_id = 0;
QString icons_theme;
//! Auto-detects the icon-set to use depending on the current window theme
void detectIconsTheme();
//! Updates the icons on the window
void updateUiIcons();
//! Updates the window theme
void updateUiTheme();
//! Updates the fonts on the window
void updateUiFonts();
const std::vector<QChart::ChartTheme> CHARTS_THEMES = {
QChart::ChartTheme::ChartThemeLight,
QChart::ChartTheme::ChartThemeDark,
QChart::ChartTheme::ChartThemeBrownSand,
QChart::ChartTheme::ChartThemeBlueCerulean
};
// color schemes
2022-06-27 21:55:14 +02:00
std::unordered_map<int, std::unordered_map<std::string, QString>> TB_COLOR_SCHEMES;
// colors
std::unordered_map<std::string, QColor> COLORS;
// fonts
2022-06-25 18:48:08 +02:00
std::unordered_map<std::string, QFont> FONTS;
int font_size = 13;
int font_size_big = 16;
int font_size_small = 10;
2022-06-25 18:48:08 +02:00
// base font families, to build fonts from
QString main_font_family;
QString alternative_font_family;
QString script_font_family;
2022-07-06 21:03:58 +02:00
/////////////////////
//// GENERAL USE ////
2022-07-06 21:03:58 +02:00
/////////////////////
//! Printable size, including suffix
2023-01-23 19:07:24 +01:00
const QString printableSize( const int bytes ) const;
//! Printable time, including suffix(es)
2023-01-23 19:07:24 +01:00
const QString printableTime( const int seconds ) const;
//! Printable speed, namely printable size over printable time
2023-01-23 19:07:24 +01:00
const QString printableSpeed( const int bytes, const int secs ) const;
//! Resolves the given path and returns the canonical path
2023-01-23 19:07:24 +01:00
const std::string resolvePath( const std::string& path ) const;
//! Returns the parent folder of the given path
2023-01-23 19:07:24 +01:00
const std::string parentPath( const std::string& path ) const;
2022-06-25 18:48:08 +02:00
////////////////
//// CHECKS ////
////////////////
bool initiating = true;
bool db_ok = true;
//! Makes the initial integrity checks
void makeInitialChecks();
//! Checks the integrity of the logs data collection database
2023-01-23 19:07:24 +01:00
const bool checkDataDB();
///////////////////
//// DATABASES ////
///////////////////
bool db_edited = false;
bool db_do_backup = true;
2022-08-23 00:58:17 +02:00
unsigned db_backups_number = 3;
//! Backs-up the logs data collection database
2023-01-23 19:07:24 +01:00
void backupDatabase() const;
std::string db_data_path;
std::string db_hashes_path;
// actions when working on a db
bool db_working = false;
//! Called when a member begins/ends performing operations on the database
2023-01-23 19:07:24 +01:00
void setDbWorkingState( const bool state );
2022-07-06 21:03:58 +02:00
//////////////////
//// CRAPTABS ////
//////////////////
2023-01-23 19:07:24 +01:00
void switchMainTab( const int new_index );
2022-07-06 21:03:58 +02:00
/////////////////
//// CRAPLOG ////
/////////////////
2022-07-06 21:03:58 +02:00
Craplog craplog;
QTimer* craplog_timer = new QTimer();
QTimer* waiter_timer;
std::chrono::system_clock::time_point waiter_timer_start;
std::chrono::system_clock::duration waiter_timer_elapsed;
//! The logs parser started working
2022-07-06 21:03:58 +02:00
void craplogStarted();
//! The logs parser finished working
2022-07-06 21:03:58 +02:00
void craplogFinished();
void checkMakeStats_Makable();
2022-07-06 21:03:58 +02:00
//////////////
//// LOGS ////
bool loading_LogsList = false;
void disableAllButtons_LogFiles_WS();
void enableAllButtons_LogFiles_WS();
bool hide_used_files = false;
bool refreshing_list = false;
//////////////////////
//// TEXT BROWSER ////
2022-06-27 21:55:14 +02:00
TextBrowser TB;
2022-07-01 21:30:15 +02:00
//////////////////////////
//// LOGS PERFORMANCE ////
void update_MakeStats_labels();
void update_MakeStats_graphs();
void reset_MakeStats_labels();
2022-07-01 21:30:15 +02:00
2022-07-21 21:45:52 +02:00
//////////////////
//// CRAPVIEW ////
//////////////////
2022-07-21 21:45:52 +02:00
Crapview crapview;
QTimer *crapview_timer = new QTimer();
// change tab
2023-01-23 19:07:24 +01:00
void switchStatsTab( const int new_index );
//! Queries the available dates from the db and apply to the tabs
/*!
\see Crapview::refreshDates()
*/
2022-07-21 21:45:52 +02:00
void refreshStatsDates();
// check if drawing conditions are met
void checkStatsWarnDrawable();
void checkStatsSpeedDrawable();
void checkStatsCountDrawable();
void checkStatsDayDrawable();
void checkStatsRelatDrawable();
// count
QString count_fld;
2023-01-23 19:07:24 +01:00
void makeStatsCount();
void resetStatsCountButtons();
// globals
QString glob_ws;
2023-01-23 19:07:24 +01:00
void makeStatsGlob();
void resetStatsGlob();
2022-07-21 21:45:52 +02:00
/////////////////
//// CRAPSET ////
/////////////////
void refreshTextBrowserPreview();
void refreshChartsPreview();
2023-01-23 19:07:24 +01:00
const int getIisLogsModule() const;
//////////////////
//// CRAPHELP ////
//////////////////
Craphelp* craphelp = new Craphelp();
void showHelp( const std::string& file_name );
////////////////
//// CRAPUP ////
////////////////
2022-11-13 01:40:20 +01:00
Crapup *crapup = new Crapup(0,"");
//////////////////
//// CRAPNOTE ////
//////////////////
Crapnote* crapnote = new Crapnote();
//////////////////
//// CRAPINFO ////
//////////////////
2022-11-13 01:40:20 +01:00
Crapinfo* crapinfo = new Crapinfo(0,"","","","");
2022-10-16 16:27:13 +02:00
///////////////////
//// CRAPGAMES ////
///////////////////
2022-11-10 18:22:06 +01:00
CrissCross* crisscross = new CrissCross( 0 );
2022-11-24 22:29:50 +01:00
SnakeGame* snake = new SnakeGame( 0, QFont() );
2022-10-16 16:27:13 +02:00
2022-06-20 21:44:58 +02:00
};
2022-06-21 21:07:06 +02:00
#endif // MAINWINDOW_H