Skip to content

Commit 526e2ff

Browse files
committed
Add lots of stupid code and subclassing QApplication just to support file opening in PropellerIDE, because Mac.
1 parent 28651b4 commit 526e2ff

File tree

6 files changed

+76
-1
lines changed

6 files changed

+76
-1
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,5 @@ Makefile*
3838
src/propelleride/propelleride
3939
src/terminal/propterm
4040
build/
41+
42+
.DS_Store

src/propelleride/application.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include "application.h"
2+
3+
#include <QFileOpenEvent>
4+
#include <QDebug>
5+
6+
Application::Application(int &argc, char **argv) : QApplication(argc,argv)
7+
{
8+
}
9+
10+
Application::~Application()
11+
{
12+
}
13+
14+
bool Application::event(QEvent *event)
15+
{
16+
switch(event->type())
17+
{
18+
case QEvent::FileOpen:
19+
loadFile( ((QFileOpenEvent *)event)->file() );
20+
emit fileOpened( ((QFileOpenEvent *)event)->file() );
21+
return true;
22+
default:
23+
return QApplication::event(event);
24+
}
25+
}
26+
27+
void Application::loadFile(const QString & filename)
28+
{
29+
qDebug() << "File Name:" << filename;
30+
}

src/propelleride/application.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
3+
#include <QApplication>
4+
5+
class Application : public QApplication
6+
{
7+
Q_OBJECT
8+
9+
public:
10+
Application(int &argc, char** argv);
11+
~Application();
12+
13+
protected:
14+
bool event(QEvent *);
15+
16+
private:
17+
void loadFile(const QString & filename);
18+
19+
signals:
20+
void fileOpened(const QString & filename);
21+
22+
};

src/propelleride/main.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1+
#include <QtGlobal>
2+
3+
#ifdef Q_OS_MAC
4+
#include "application.h"
5+
#else
16
#include <QApplication>
7+
#endif
8+
29
#include <QDebug>
310
#include <QMessageBox>
411
#include <QStyleFactory>
@@ -55,7 +62,11 @@ int main(int argc, char *argv[])
5562
qInstallMessageHandler(messageHandler);
5663
#endif
5764

65+
#ifdef Q_OS_MAC
66+
Application app(argc, argv);
67+
#else
5868
QApplication app(argc, argv);
69+
#endif
5970

6071
QCoreApplication::setOrganizationName("Parallax");
6172
QCoreApplication::setOrganizationDomain("www.parallax.com");

src/propelleride/mainwindow.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ MainWindow::MainWindow(QWidget *parent)
4545
QSplitterHandle *hndl = ui.splitter->handle(1);
4646
hndl->setEnabled(false);
4747

48+
49+
#ifdef Q_OS_MAC
50+
connect(qApp, SIGNAL(fileOpened(const QString &)), ui.editorTabs, SLOT(openFile(const QString &)));
51+
#endif
52+
4853
connect(ui.editorTabs, SIGNAL(fileUpdated(int)), this, SLOT(setProject()));
4954

5055
// File Menu

src/propelleride/propelleride.pro

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ SOURCES += \
3434
preferences.cpp \
3535
logging.cpp \
3636

37-
HEADERS += \
37+
HEADERS += \
3838
buildmanager.h \
3939
clickable.h \
4040
colorchooser.h \
@@ -52,6 +52,11 @@ HEADERS += \
5252
templates/Singleton.h \
5353
logging.h \
5454

55+
macx {
56+
SOURCES += application.cpp
57+
HEADERS += application.h
58+
}
59+
5560
OTHER_FILES +=
5661

5762
FORMS += \

0 commit comments

Comments
 (0)