Skip to content

Commit

Permalink
reimplemented actions and menus using designer
Browse files Browse the repository at this point in the history
added menus using Designer (names, shortcuts, and status tips)
added signal/slot for exit action to main window close()
renamed action functions to on_actionXx_triggered() for auto-connection
added on_actionAboutQt_triggered() to call qApp->aboutQt()
removed action enumeration, action pointers and menu pointers
removed createActions() and createMenus() - now handled by setupUi()
  • Loading branch information
thunder422 committed Dec 30, 2012
1 parent 8958bac commit 46737de
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 99 deletions.
85 changes: 11 additions & 74 deletions mainwindow.cpp
Expand Up @@ -48,8 +48,6 @@ MainWindow::MainWindow(QWidget *parent) :

// start GUI here
ui->setupUi(this);
createActions();
createMenus();
settingsRestore();
setWindowTitle("IBCP");

Expand All @@ -68,94 +66,27 @@ void MainWindow::closeEvent(QCloseEvent *event)
}


void MainWindow::createActions(void)
void MainWindow::on_actionNew_triggered(void)
{
struct ActionInfo
{
Action action;
QString name;
QKeySequence::StandardKey key;
QString tip;
} infoArray[] =
{
{ New, tr("&New"),
QKeySequence::New, tr("Create a new program") },
{ Open, tr("&Open..."),
QKeySequence::Open, tr("Open an existing program") },
{ Save, tr("&Save"),
QKeySequence::Save, tr("Save the program to disk") },
{ SaveAs, tr("Save &As..."),
QKeySequence::SaveAs, tr("Save the program to a new file") },
{ Exit, tr("E&xit"),
QKeySequence::Quit, tr("Exit IBCP") },
{ About, tr("&About"),
QKeySequence::UnknownKey, tr("Show the IBCP About box") },
{ AboutQt, tr("About &Qt"),
QKeySequence::UnknownKey, tr("Show the Qt library's About box") },
{ sizeof_Action } // marks the end
};

for (ActionInfo *info = infoArray; info->action != sizeof_Action; info++)
{
QAction *action = new QAction(info->name, this);
m_action[info->action] = action;
if (info->key != QKeySequence::UnknownKey)
{
action->setShortcut(info->key);
}
action->setStatusTip(info->tip);
}

// connect action triggered signals to functions
connect(m_action[New], SIGNAL(triggered()), this, SLOT(programNew()));
connect(m_action[Open], SIGNAL(triggered()), this, SLOT(programOpen()));
connect(m_action[Save], SIGNAL(triggered()), this, SLOT(programSave()));
connect(m_action[SaveAs], SIGNAL(triggered()), this, SLOT(programSaveAs()));
connect(m_action[Exit], SIGNAL(triggered()), this, SLOT(close()));
connect(m_action[About], SIGNAL(triggered()), this, SLOT(about()));
connect(m_action[AboutQt], SIGNAL(triggered()), qApp, SLOT(aboutQt()));
}


void MainWindow::createMenus(void)
{
m_menuFile = menuBar()->addMenu(tr("&File"));
m_menuFile->addAction(m_action[New]);
m_menuFile->addAction(m_action[Open]);
m_menuFile->addAction(m_action[Save]);
m_menuFile->addAction(m_action[SaveAs]);
m_menuFile->addSeparator();
m_menuFile->addAction(m_action[Exit]);

menuBar()->addSeparator();

m_menuHelp = menuBar()->addMenu(tr("&Help"));
m_menuHelp->addAction(m_action[About]);
m_menuHelp->addAction(m_action[AboutQt]);
}


void MainWindow::programNew(void)
void MainWindow::on_actionOpen_triggered(void)
{
}


void MainWindow::programOpen(void)
void MainWindow::on_actionSave_triggered(void)
{
}


void MainWindow::programSave(void)
void MainWindow::on_actionSaveAs_triggered(void)
{
}


void MainWindow::programSaveAs(void)
{
}


void MainWindow::about(void)
void MainWindow::on_actionAbout_triggered(void)
{
// build up about box string
QString aboutString(tr("<h3>Interactive BASIC Compiler Project</h3>"));
Expand All @@ -176,6 +107,12 @@ void MainWindow::about(void)
}


void MainWindow::on_actionAboutQt_triggered(void)
{
qApp->aboutQt();
}


void MainWindow::settingsRestore(void)
{
QSettings settings("Thunder422", "IBCP");
Expand Down
31 changes: 7 additions & 24 deletions mainwindow.h
Expand Up @@ -54,16 +54,14 @@ class MainWindow : public QMainWindow
void closeEvent(QCloseEvent *event);

private slots:
void programNew(void);
void programOpen(void);
void programSave(void);
void programSaveAs(void);
void about(void);
void on_actionNew_triggered(void);
void on_actionOpen_triggered(void);
void on_actionSave_triggered(void);
void on_actionSaveAs_triggered(void);
void on_actionAbout_triggered(void);
void on_actionAboutQt_triggered(void);

private:
void createActions(void);
void createMenus(void);

void settingsRestore(void);
void settingsSave(void);

Expand All @@ -72,23 +70,8 @@ private slots:
int m_returnCode;
CommandLine *m_commandLine;

enum Action
{
New,
Open,
Save,
SaveAs,
Exit,
About,
AboutQt,
sizeof_Action
};
QAction *m_action[sizeof_Action];

QMenu *m_menuFile;
QMenu *m_menuHelp;

EditBox *m_editBox;

};

#endif // MAINWINDOW_H
113 changes: 112 additions & 1 deletion mainwindow.ui
Expand Up @@ -23,6 +23,26 @@
<height>24</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="actionNew"/>
<addaction name="actionOpen"/>
<addaction name="actionSave"/>
<addaction name="actionSaveAs"/>
<addaction name="separator"/>
<addaction name="actionExit"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>&amp;Help</string>
</property>
<addaction name="actionAbout"/>
<addaction name="actionAboutQt"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuHelp"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
Expand All @@ -33,8 +53,99 @@
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="actionNew">
<property name="text">
<string>&amp;New</string>
</property>
<property name="iconText">
<string>New</string>
</property>
<property name="statusTip">
<string>Create a new program</string>
</property>
<property name="shortcut">
<string>Ctrl+N</string>
</property>
</action>
<action name="actionOpen">
<property name="text">
<string>&amp;Open...</string>
</property>
<property name="statusTip">
<string>Open an existing program</string>
</property>
<property name="shortcut">
<string>Ctrl+O</string>
</property>
</action>
<action name="actionSave">
<property name="text">
<string>&amp;Save</string>
</property>
<property name="statusTip">
<string>Save the program to disk</string>
</property>
<property name="shortcut">
<string>Ctrl+S</string>
</property>
</action>
<action name="actionSaveAs">
<property name="text">
<string>Save &amp;As...</string>
</property>
<property name="statusTip">
<string>Save the program to a new file</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+S</string>
</property>
</action>
<action name="actionExit">
<property name="text">
<string>E&amp;xit</string>
</property>
<property name="statusTip">
<string>Exit IBCP</string>
</property>
<property name="shortcut">
<string>Ctrl+Q</string>
</property>
</action>
<action name="actionAbout">
<property name="text">
<string>&amp;About</string>
</property>
<property name="statusTip">
<string>Show the IBCP About box</string>
</property>
</action>
<action name="actionAboutQt">
<property name="text">
<string>About &amp;Qt</string>
</property>
<property name="statusTip">
<string>Show the Qt library's About box</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
<connections>
<connection>
<sender>actionExit</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>149</y>
</hint>
</hints>
</connection>
</connections>
</ui>

0 comments on commit 46737de

Please sign in to comment.