Skip to content

Commit

Permalink
Revert "feat: make file logic like Sublime (#97)" (#99)
Browse files Browse the repository at this point in the history
This reverts commit 266e236.
  • Loading branch information
coder3101 committed Jan 15, 2020
1 parent 71f8e4e commit 7a0eb3d
Show file tree
Hide file tree
Showing 5 changed files with 195 additions and 280 deletions.
2 changes: 1 addition & 1 deletion include/appwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class AppWindow : public QMainWindow

void onTabCloseRequested(int);
void onTabChanged(int);
void onEditorChanged(MainWindow *);
void onEditorTextChanged(bool, MainWindow *);
void onSaveTimerElapsed();
void onSettingsApplied();
void onSplitterMoved(int, int);
Expand Down
37 changes: 11 additions & 26 deletions include/mainwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <IO.hpp>
#include <QCodeEditor>
#include <QFile>
#include <QFileSystemWatcher>
#include <QLabel>
#include <QMainWindow>
#include <QPushButton>
Expand All @@ -49,21 +48,12 @@ class MainWindow : public QMainWindow
Q_OBJECT

public:
enum SaveMode
{
IgnoreUntitled = 0, // save only when filePath is not empty
SaveUntitled = 1, // save to filePath if it's not empty, otherwise ask for new path
SaveAs = 3 // ask for new path no matter filePath is empty or not
};

MainWindow(int index, QString fileOpen, QWidget *parent = nullptr);
~MainWindow() override;

QString getFileName() const;
QString getFilePath() const;
QString getProblemURL() const;
QString getTabTitle(bool complete) const;
bool isUntitled() const;
QString fileName() const;
QString filePath() const;
QString problemURL() const;
void save(bool force);
void saveAs();

Expand All @@ -84,6 +74,7 @@ class MainWindow : public QMainWindow
void setSettingsData(Settings::SettingsData data, bool);

MessageLogger *getLogger();
QFile *getOpenFile();
QSplitter *getSplitter();

void insertText(QString text);
Expand All @@ -109,19 +100,18 @@ class MainWindow : public QMainWindow
void on_out2_diff_clicked();
void on_out3_diff_clicked();

void on_changeLanguageButton_clicked();

void onFileWatcherChanged(const QString &);
void on_changeLanguageButoon_clicked();

signals:
void editorChanged(MainWindow *widget);
void editorTextChanged(bool isUnsaved, MainWindow *widget);
void confirmTriggered(MainWindow *widget);

private:
const int windowIndex;
Ui::MainWindow *ui;
QCodeEditor *editor;
QString language;
QFile *openFile = nullptr;
Settings::SettingsData data;
bool isLanguageSet = false;

Expand All @@ -131,15 +121,11 @@ class MainWindow : public QMainWindow
Core::Runner *runner = nullptr;
MessageLogger log;

QString problemURL;
QString filePath;
QString savedText;
QFileSystemWatcher *fileWatcher = nullptr;

QVector<QPlainTextEdit *> input = QVector<QPlainTextEdit *>(3, nullptr);
QVector<QPlainTextEdit *> output = QVector<QPlainTextEdit *>(3, nullptr);
QVector<QLabel *> verdict = QVector<QLabel *>(3, nullptr);
QVector<QString *> expected = QVector<QString *>(3, nullptr);
Network::CompanionData companionData;
QPushButton *submitToCodeforces = nullptr;
Network::CFTools *cftools = nullptr;

Expand All @@ -150,11 +136,10 @@ class MainWindow : public QMainWindow
void saveTests();
void setCFToolsUI();
void updateVerdict(Core::Verdict, int);
bool isTextChanged() const;
bool isTextChanged();

bool isVerdictPass(QString, QString);
void setText(const QString &text, bool saveCursor = false);
void loadFile(const QString &path);
bool saveFile(SaveMode, std::string);
bool saveFile(bool, std::string);
void performCoreDiagonistics();
};
#endif // MAINWINDOW_HPP
60 changes: 24 additions & 36 deletions src/appwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#include <QDesktopServices>
#include <QFileDialog>
#include <QInputDialog>
#include <QMap>
#include <QMessageBox>
#include <QMetaMethod>
#include <QMimeData>
Expand Down Expand Up @@ -49,7 +48,7 @@ AppWindow::AppWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::AppWindo
setConnections();

auto windowTemp = new MainWindow(0, "");
ui->tabWidget->addTab(windowTemp, windowTemp->getFileName());
ui->tabWidget->addTab(windowTemp, windowTemp->fileName());

if (settingManager->isCheckUpdateOnStartup())
updater->checkUpdate();
Expand Down Expand Up @@ -238,7 +237,7 @@ void AppWindow::openTab(QString fileName, bool iscompanionOpenedTab)
for (int t = 0; t < ui->tabWidget->count(); t++)
{
auto tmp = dynamic_cast<MainWindow *>(ui->tabWidget->widget(t));
if (fileName == tmp->getFilePath())
if (fileName == tmp->filePath())
{
ui->tabWidget->setCurrentIndex(t);
return;
Expand All @@ -250,7 +249,8 @@ void AppWindow::openTab(QString fileName, bool iscompanionOpenedTab)
auto fsp = new MainWindow(t, fileName);
fsp->setSettingsData(settingManager->toData(), true);
connect(fsp, SIGNAL(confirmTriggered(MainWindow *)), this, SLOT(on_confirmTriggered(MainWindow *)));
connect(fsp, SIGNAL(editorChanged(MainWindow *)), this, SLOT(onEditorChanged(MainWindow *)));
connect(fsp, SIGNAL(editorTextChanged(bool, MainWindow *)), this,
SLOT(onEditorTextChanged(bool, MainWindow *)));
QString lang = settingManager->getDefaultLang();

if (fileName.endsWith(".java"))
Expand All @@ -261,7 +261,7 @@ void AppWindow::openTab(QString fileName, bool iscompanionOpenedTab)
fileName.endsWith(".cc") || fileName.endsWith(".hpp") || fileName.endsWith(".h"))
lang = "Cpp";

ui->tabWidget->addTab(fsp, fsp->getFileName());
ui->tabWidget->addTab(fsp, fsp->fileName());
fsp->setLanguage(lang);
ui->tabWidget->setCurrentIndex(t);
}
Expand All @@ -270,7 +270,7 @@ void AppWindow::openTab(QString fileName, bool iscompanionOpenedTab)
for (int t = 0; t < ui->tabWidget->count(); t++)
{
auto tmp = windowIndex(t);
if (fileName == tmp->getProblemURL())
if (fileName == tmp->problemURL())
{
ui->tabWidget->setCurrentIndex(t);
return;
Expand All @@ -281,8 +281,9 @@ void AppWindow::openTab(QString fileName, bool iscompanionOpenedTab)
auto fsp = new MainWindow(t, "");
fsp->setSettingsData(settingManager->toData(), true);
connect(fsp, SIGNAL(confirmTriggered(MainWindow *)), this, SLOT(on_confirmTriggered(MainWindow *)));
connect(fsp, SIGNAL(editorChanged(MainWindow *)), this, SLOT(onEditorChanged(MainWindow *)));
ui->tabWidget->addTab(fsp, fsp->getFileName());
connect(fsp, SIGNAL(editorTextChanged(bool, MainWindow *)), this,
SLOT(onEditorTextChanged(bool, MainWindow *)));
ui->tabWidget->addTab(fsp, fsp->fileName());
ui->tabWidget->setCurrentIndex(t);
}
}
Expand Down Expand Up @@ -398,18 +399,18 @@ void AppWindow::onTabChanged(int index)
{
activeLogger = nullptr;
server->setMessageLogger(nullptr);
setWindowTitle("CP Editor: An editor specially designed for competitive programming");
setWindowTitle("CP Editor: Competitive Programmers Editor");
return;
}

disconnect(activeSplitterMoveConnections);

auto tmp = windowIndex(index);

if (tmp->isUntitled())
setWindowTitle("CP Editor: " + tmp->getFileName());
if (tmp->getOpenFile() == nullptr)
setWindowTitle("CP Editor: " + tmp->fileName());
else
setWindowTitle("CP Editor: " + tmp->getFilePath());
setWindowTitle("CP Editor: " + tmp->filePath());

activeLogger = tmp->getLogger();
server->setMessageLogger(activeLogger);
Expand All @@ -432,39 +433,26 @@ void AppWindow::onTabChanged(int index)
connect(tmp->getSplitter(), SIGNAL(splitterMoved(int, int)), this, SLOT(onSplitterMoved(int, int)));
}

void AppWindow::onEditorChanged(MainWindow *widget)
void AppWindow::onEditorTextChanged(bool isUnsaved, MainWindow *widget)
{
if (widget == currentWindow())
{
if (widget->isUntitled())
setWindowTitle("CP Editor: " + widget->getFileName());
else
setWindowTitle("CP Editor: " + widget->getFilePath());
}

QMap<QString, QVector<int>> tabsByName;

for (int t = 0; t < ui->tabWidget->count(); ++t)
{
tabsByName[windowIndex(t)->getFileName()].push_back(t);
}

for (auto tabs : tabsByName)
{
for (auto index : tabs)
{
ui->tabWidget->setTabText(index, windowIndex(index)->getTabTitle(tabs.size() > 1));
}
}
int index = ui->tabWidget->indexOf(widget);
if (index == -1)
return;
auto name = windowIndex(index)->fileName();
if (isUnsaved)
ui->tabWidget->setTabText(index, name + " *");
else
ui->tabWidget->setTabText(index, name);
}

void AppWindow::onSaveTimerElapsed()
{
for (int t = 0; t < ui->tabWidget->count(); t++)
{
auto tmp = windowIndex(t);
if (!tmp->isUntitled())
if (tmp->getOpenFile() != nullptr && tmp->getOpenFile()->isOpen())
{
ui->tabWidget->setTabText(t, tmp->fileName());
tmp->save(false);
}
}
Expand Down

0 comments on commit 7a0eb3d

Please sign in to comment.