Skip to content

Commit 0aaba81

Browse files
committed
Work around FileManager/Language issues (IDE-181)
- Auto-complete had no search paths because it had no access to the main project view, which did have paths. - Add hacky, unsafe workaround to issue that FileManager is a GUI component instead of separate from the interface. - This may justify working on new File system sooner.
1 parent fd16fec commit 0aaba81

File tree

6 files changed

+44
-28
lines changed

6 files changed

+44
-28
lines changed

src/propelleride/editor.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@
1313

1414
#include "mainwindow.h"
1515

16-
Editor::Editor(QWidget *parent) : QPlainTextEdit(parent)
16+
#include "logging.h"
17+
18+
Editor::Editor(Language * language, QWidget *parent) : QPlainTextEdit(parent)
1719
{
20+
this->language = language;
21+
this->parser = language->getParser();
22+
1823
propDialog = &((MainWindow *) parent)->preferences;
1924

20-
blocks = lang.listBlocks();
21-
re_blocks = lang.buildTokenizer(blocks);
25+
blocks = language->listBlocks();
26+
re_blocks = language->buildTokenizer(blocks);
2227

2328
ctrlPressed = false;
2429
expectAutoComplete = false;
@@ -332,38 +337,32 @@ QString Editor::selectAutoComplete()
332337
int Editor::spinAutoComplete()
333338
{
334339
QString text = selectAutoComplete();
335-
// qDebug() << "keyPressEvent object dot pressed" << text;
336-
337-
QSettings settings;
338-
settings.beginGroup("Paths");
339-
lang.parser.setLibraryPaths(QStringList() << settings.value("Library").toString());
340-
settings.endGroup();
341340

342341
cbAuto->clear();
343342
cbAuto->addItem(".");
344343

345344
QList<ProjectParser::Match> matches;
346345
if(text.length() > 0)
347346
{
348-
matches = lang.parser.matchRule("_includes_",toPlainText());
347+
matches = parser->matchRule("_includes_",toPlainText());
349348

350349
QStringList filenames;
351350
foreach(ProjectParser::Match m, matches)
352351
{
353352
if (m.exact.contains(text))
354-
filenames << lang.parser.findFileName(m.pretty);
353+
filenames << parser->findFileName(m.pretty);
355354
}
356355

357356
if (!(filenames.count() > 0))
358357
return 0;
359358

360-
lang.parser.setFile(filenames[0]);
359+
parser->setFile(filenames[0]);
361360

362-
matches = lang.parser.matchRuleFromFile("public",filenames[0]);
361+
matches = parser->matchRuleFromFile("public",filenames[0]);
363362
}
364363
else
365364
{
366-
matches = lang.parser.matchRule("public",toPlainText());
365+
matches = parser->matchRule("public",toPlainText());
367366

368367
if (!(matches.count() > 0))
369368
return 0;

src/propelleride/editor.h

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,36 @@
99
#include "highlighter.h"
1010
#include "preferences.h"
1111

12+
#include "language.h"
13+
1214
class LineNumberArea;
1315

1416
class Editor : public QPlainTextEdit
1517
{
1618
Q_OBJECT
1719

18-
public:
19-
Editor(QWidget *parent);
20-
virtual ~Editor();
21-
22-
void saveContent();
23-
int contentChanged();
20+
Language * language;
21+
ProjectParser * parser;
2422

25-
private:
26-
Language lang;
27-
2823
QStringList blocks;
2924
QRegularExpression re_blocks;
3025

3126
bool tabOn;
32-
3327
int tabStop;
28+
3429
bool smartIndent;
3530
bool indentGuides;
3631
bool autoComplete;
3732
bool highlightLine;
3833

34+
public:
35+
Editor(Language * language,
36+
QWidget * parent);
37+
virtual ~Editor();
38+
39+
void saveContent();
40+
int contentChanged();
41+
3942
public slots:
4043
bool getUndo();
4144
bool getRedo();

src/propelleride/filemanager.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,18 @@ FileManager::FileManager(QWidget *parent) :
1515
connect(this, SIGNAL(currentChanged(int)), this, SLOT(changeTab(int)));
1616
}
1717

18+
// THIS IS A HACK OMG SUCH A HACK
19+
void FileManager::setLanguage(Language * language)
20+
{
21+
this->language = language;
22+
}
23+
1824
int FileManager::newFile()
1925
{
2026
// removes the background image (need to move this elsewhere)
2127
setStyleSheet("");
2228

23-
Editor *editor = new Editor(QWidget::window());
29+
Editor * editor = new Editor(language, QWidget::window());
2430
editor->setAttribute(Qt::WA_DeleteOnClose);
2531
editor->installEventFilter(QWidget::window());
2632
editor->saveContent();

src/propelleride/filemanager.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44
#include <QMessageBox>
55
#include <QStatusBar>
66

7+
#include "language.h"
78
#include "editor.h"
89
#include "logging.h"
910

1011
class FileManager : public QTabWidget
1112
{
1213
Q_OBJECT
13-
private:
14+
15+
Language * language;
16+
1417
void createBackgroundImage();
1518
QString reformatText(QString text);
1619

@@ -20,6 +23,7 @@ class FileManager : public QTabWidget
2023
Editor * getEditor(int num);
2124
int isFileOpen(const QString & fileName);
2225
int isFileEmpty(int index);
26+
void setLanguage(Language * language);
2327

2428
public slots:
2529
int newFile();

src/propelleride/language.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
class Language
1212
{
13-
private:
13+
ProjectParser parser;
14+
1415
bool case_sensitive;
1516
bool enable_blocks;
1617
QString escape_char;
@@ -28,7 +29,6 @@ class Language
2829
QStringList mergeList(QStringList list);
2930

3031
public:
31-
ProjectParser parser;
3232

3333
void buildParser(QJsonArray projectparser);
3434
void loadLanguage(QString filename);

src/propelleride/mainwindow.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ MainWindow::MainWindow(QWidget *parent)
1919
setWindowTitle(QCoreApplication::applicationName());
2020
ui.setupUi(this);
2121

22+
// ===== HACK ZONE =====
23+
ui.editorTabs->setLanguage(&language);
24+
// ===== END HACK ZONE =====
25+
2226
// setup preferences dialog
2327
connect(&preferences, SIGNAL(accepted()), this, SLOT(getApplicationSettings()));
2428

0 commit comments

Comments
 (0)