| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#include <Qt>
#include <QtGui>
#include <QAction>
#include <QMenuBar>
#include <QMenu>
#include <QStatusBar>
#include "SciQMWBase.h"
#include "SciQApp.h"
#include "SciQDockWindow.h"
#include "SciQToolBar.h"
#include "SciQSettingsDialog.h"
#include "SciQSBInfo.h"
#include <qextscintilla.h>
SciQMWBase::SciQMWBase(QWidget * parent, Qt::WFlags f) : QMainWindow(parent, f), qs(this)
{
setObjectName(SciQApp::Sequence(metaObject()->className()));
// Actions:
// new file, open file, save file, save file as, print, undo, redo, cut, copy, paste, find
// new workspace (all above actions operate in current workspace), docklist (pops up menu:o)
QToolBar *mtb = new SciQToolBar("Main Menu");
QMenuBar *mb = new QMenuBar();
mtb->addWidget(mb);
// mtb->setMovable(true);
QMenu *file = new QMenu("&File");
mb->addMenu(file);
QMenu *edit = new QMenu("&Edit");
mb->addMenu(edit);
edit->addSeparator();
QAction *settingsAction = new QAction("Settings...", this);
connect(settingsAction, SIGNAL(triggered()), this, SLOT(editSettings()));
edit->addAction(settingsAction);
addToolBar(mtb);
// addToolBarBreak();
createPopupMenu();
// Dock ?? Maybe the child classes should add the docks they want.
sci = new QextScintilla(this);
setCentralWidget(sci);
QFile fh("qrc/settings/general.xrc");
fh.open(QIODevice::ReadOnly);
sci->setText(QString(fh.readAll()));
//QStatusBar *sb = new QStatusBar();
//setStatusBar(sb);
sbi = new SciQSBInfo(statusBar());
statusBar()->addWidget(sbi, 0);
QLabel *ins = new QLabel("INS", statusBar());
ins->setLineWidth(4);
statusBar()->addWidget(ins, 0);
}
SciQMWBase::~SciQMWBase()
{
// qSettings().setValue("state", saveState());
}
QList<SciQDockWindow *> SciQMWBase::dockwindows()
{
return dockhash.values();
}
QList<SciQToolBar *> SciQMWBase::toolbars()
{
return toolbarhash.values();
}
void SciQMWBase::showDockWindow(QString &s, bool b)
{
SciQDockWindow *dw = 0;
if(!dockhash.contains(s))
return;
dw = dockhash.value(s);
dw->setVisible(b);
}
void SciQMWBase::editSettings()
{
SciQApp *app = SciQApp::getInstance();
app->sd->exec();
}
SciQDockWindow *SciQMWBase::getDockWindow(QString &s)
{
if(dockhash.contains(s))
return dockhash.value(s);
return 0;
}
bool SciQMWBase::addDockWindow(QString &s)
{
SciQApp *app = SciQApp::getInstance();
if(dockhash.contains(s))
return false;
SciQDockWindow *dw = app->getDockWindowInstance(s, this);
if(!dw)
return false;
dockhash.insert(s, dw);
return true;
}