Files
pineapple-notepad/mainwindow.h
2026-02-02 00:02:43 +08:00

72 lines
1.8 KiB
C++

#pragma once
#include <KXmlGuiWindow>
#include "ui_generalsettings.h"
class QLabel;
class SciEdit;
class TabWidget;
class DocumentManager;
class FindReplaceDialog;
class MainWindow : public KXmlGuiWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void newFile();
void openFile();
void saveFile();
void saveAsFile();
void closeFile();
void onCurrentTabChanged();
void onCurrentEditorChanged(SciEdit *editor);
void onDocumentModified(int docIndex, bool modified);
private:
void setupActions();
void showSettings();
void applyLexer(const QString & lexer);
void applySettingsToEditor(SciEdit *editor);
void applySettingsToAllEditors();
void updateWindowTitle();
void updateStatusBar();
void updateActions();
void showFindReplaceDialog(bool showReplace);
bool findNextInCurrentEditor(bool forward, bool showNotFoundMessage);
bool replaceOneInCurrentEditor(bool showNotFoundMessage);
int replaceAllInCurrentEditor(bool showNotFoundMessage);
DocumentManager *m_documentManager;
TabWidget *m_tabWidget;
QLabel *m_cursorPosStatusLabel;
QLabel *m_encodingStatusLabel;
QLabel *m_languageStatusLabel;
bool m_indentGuidesEnabled = false;
FindReplaceDialog *m_findReplaceDialog = nullptr;
bool m_findInSelectionEnabled = false;
int m_findSelectionStart = 0;
int m_findSelectionEnd = 0;
};
// plainly for KConfigDialog
// void setupUi(QWidget *GeneralSettings)
template <typename T>
class SettingsPage : public QWidget
{
public:
SettingsPage(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
private:
T ui;
};