Add ability for instruments to add menu options to the main window

master
Timothy Pearson 12 years ago
parent b6eb803097
commit e9dafbb9d0

@ -6,6 +6,10 @@
<Action name="connect_server"/> <Action name="connect_server"/>
<Action name="disconnect_server"/> <Action name="disconnect_server"/>
</Menu> </Menu>
<Menu name="selectedInstrumentMenu">
<text>Current Instrument</text>
<ActionList name="selectedInstrument_actionlist"/>
</Menu>
<Menu name="dutMenu"> <Menu name="dutMenu">
<text>Device Under Test</text> <text>Device Under Test</text>
<ActionList name="dutMenu_actionlist"/> <ActionList name="dutMenu_actionlist"/>

@ -163,6 +163,13 @@ void RemoteMDI::startModule() {
} }
void RemoteMDI::finishConnectingToServer() { void RemoteMDI::finishConnectingToServer() {
if (!m_rsvSvrSocket) {
connToServerState = -1;
connToServerConnecting = false;
processLockouts();
return;
}
if (connToServerConnecting) { if (connToServerConnecting) {
switch(connToServerState) { switch(connToServerState) {
case 0: case 0:
@ -410,6 +417,14 @@ void RemoteMDI::childWindowCloseRequest(KMdiChildView *pWnd) {
} }
void RemoteMDI::currentChanged(KMdiChildView *current) { void RemoteMDI::currentChanged(KMdiChildView *current) {
RemoteLab::InstrumentView* view = dynamic_cast<RemoteLab::InstrumentView*>(current);
// Plug/unpug menus
unplugActionList("selectedInstrument_actionlist");
if (view) {
plugActionList("selectedInstrument_actionlist", view->menuActionList());
}
// Update status bar and list box // Update status bar and list box
updateStatusBarMainMessage(i18n("Instrument %1 activated").arg(current->tabCaption())); updateStatusBarMainMessage(i18n("Instrument %1 activated").arg(current->tabCaption()));
} }

@ -1,4 +1,4 @@
INCLUDES = -I$(top_srcdir)/src/part $(all_includes) INCLUDES = -I$(top_srcdir)/src/part $(all_includes) $(KDE_INCLUDES)/tde
METASOURCES = AUTO METASOURCES = AUTO
noinst_LTLIBRARIES = libinstrumentview.la noinst_LTLIBRARIES = libinstrumentview.la
libinstrumentview_la_SOURCES = instrumentview.cpp libinstrumentview_la_SOURCES = instrumentview.cpp

@ -48,6 +48,10 @@ void InstrumentView::init() {
} }
} }
TQPtrList<KAction> InstrumentView::menuActionList() {
return m_instrumentPart->menuActionList();
}
void InstrumentView::setStatusMessage(const TQString& message) { void InstrumentView::setStatusMessage(const TQString& message) {
emit(statusMessageSet(message)); emit(statusMessageSet(message));
} }

@ -1,18 +1,20 @@
//Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>, (C) 2012 //Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>, (C) 2012
//Copyright: See COPYING file that comes with this distribution //Copyright: See COPYING file that comes with this distribution
#ifndef SPECTRUMANALYZERVIEW_H #ifndef INSTRUMENTVIEW_H
#define SPECTRUMANALYZERVIEW_H #define INSTRUMENTVIEW_H
#include <kconfig.h> #include <kconfig.h>
#include <kparts/part.h> #include <kparts/part.h>
#include <kmdichildview.h> #include <kmdichildview.h>
#include <tqtrla.h>
class KAction; class KAction;
namespace RemoteLab { namespace RemoteLab {
typedef KParts::ReadOnlyPart InstrumentPart; typedef KParts::RemoteInstrumentPart InstrumentPart;
class InstrumentView : public KMdiChildView class InstrumentView : public KMdiChildView
{ {
@ -24,6 +26,8 @@ class InstrumentView : public KMdiChildView
~InstrumentView(); ~InstrumentView();
void connectServer(TQString server); void connectServer(TQString server);
void closeConnections(); void closeConnections();
TQPtrList<KAction> menuActionList();
protected: protected:
virtual void saveProperties(KConfig *); virtual void saveProperties(KConfig *);

@ -54,7 +54,7 @@ K_EXPORT_COMPONENT_FACTORY(libremotelab_fpgaviewer, RemoteLab::Factory)
FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObject *parent, const char *name, const TQStringList&) FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObject *parent, const char *name, const TQStringList&)
: RemoteInstrumentPart( parent, name ), m_socket(0), m_base(0), connToServerConnecting(false), connToServerState(-1), connToServerTimeoutTimer(NULL) : RemoteInstrumentPart( parent, name ), m_socket(0), m_base(0), connToServerConnecting(false), connToServerState(-1), connToServerTimeoutTimer(NULL), m_interfaceMode(BasicInterfaceMode)
{ {
// Initialize mutex // Initialize mutex
m_connectionMutex = new TQMutex(false); m_connectionMutex = new TQMutex(false);
@ -69,6 +69,19 @@ FPGAViewPart::FPGAViewPart(TQWidget *parentWidget, const char *widgetName, TQObj
// Create widgets // Create widgets
m_base = new FPGAViewBase(widget()); m_base = new FPGAViewBase(widget());
// Create menu actions
// Submenus
KActionCollection *const ac = actionCollection();
m_modeSubMenu = new KActionMenu(i18n("Mode"), ac, "mode_submenu");
m_menuActionList.append(m_modeSubMenu);
// Menu items
m_modeBasicEnabled = new KToggleAction(i18n("Basic"), KShortcut(), TQT_TQOBJECT(this), TQT_SLOT(switchToBasicMode()), ac, "mode_basic_enabled");
m_modeSubMenu->insert(m_modeBasicEnabled);
m_modeIntermediateEnabled = new KToggleAction(i18n("Intermediate"), KShortcut(), TQT_TQOBJECT(this), TQT_SLOT(switchToIntermediateMode()), ac, "mode_intermediate_enabled");
m_modeSubMenu->insert(m_modeIntermediateEnabled);
m_modeAdvancedEnabled = new KToggleAction(i18n("Advanced"), KShortcut(), TQT_TQOBJECT(this), TQT_SLOT(switchToAdvancedMode()), ac, "mode_advanced_enabled");
m_modeSubMenu->insert(m_modeAdvancedEnabled);
processLockouts(); processLockouts();
TQTimer::singleShot(0, this, TQT_SLOT(postInit())); TQTimer::singleShot(0, this, TQT_SLOT(postInit()));
@ -86,13 +99,44 @@ FPGAViewPart::~FPGAViewPart() {
void FPGAViewPart::processLockouts() { void FPGAViewPart::processLockouts() {
TQWidget* mainWidget = widget(); TQWidget* mainWidget = widget();
if (mainWidget) { if (mainWidget) {
if ((m_socket) && (m_socket->state() == TQSocket::Connected)) { if ((m_socket) && (m_socket->state() == TQSocket::Connected) && (connToServerState > 0) && (connToServerConnecting == false)) {
mainWidget->setEnabled(true); mainWidget->setEnabled(true);
} }
else { else {
mainWidget->setEnabled(false); mainWidget->setEnabled(false);
} }
} }
if (m_interfaceMode == BasicInterfaceMode) {
m_modeBasicEnabled->setChecked(true);
m_modeIntermediateEnabled->setChecked(false);
m_modeAdvancedEnabled->setChecked(false);
}
if (m_interfaceMode == IntermediateInterfaceMode) {
m_modeBasicEnabled->setChecked(false);
m_modeIntermediateEnabled->setChecked(true);
m_modeAdvancedEnabled->setChecked(false);
}
if (m_interfaceMode == AdvancedInterfaceMode) {
m_modeBasicEnabled->setChecked(false);
m_modeIntermediateEnabled->setChecked(false);
m_modeAdvancedEnabled->setChecked(true);
}
}
void FPGAViewPart::switchToBasicMode() {
m_interfaceMode = BasicInterfaceMode;
processLockouts();
}
void FPGAViewPart::switchToIntermediateMode() {
m_interfaceMode = IntermediateInterfaceMode;
processLockouts();
}
void FPGAViewPart::switchToAdvancedMode() {
m_interfaceMode = AdvancedInterfaceMode;
processLockouts();
} }
void FPGAViewPart::connectionClosed() { void FPGAViewPart::connectionClosed() {
@ -127,6 +171,13 @@ void FPGAViewPart::disconnectFromServer() {
} }
void FPGAViewPart::finishConnectingToServer() { void FPGAViewPart::finishConnectingToServer() {
if (!m_socket) {
connToServerState = -1;
connToServerConnecting = false;
processLockouts();
return;
}
if (connToServerConnecting) { if (connToServerConnecting) {
switch(connToServerState) { switch(connToServerState) {
case 0: case 0:
@ -254,6 +305,10 @@ int FPGAViewPart::connectToServer(TQString server) {
return 0; return 0;
} }
TQPtrList<KAction> FPGAViewPart::menuActionList() {
return m_menuActionList;
}
void FPGAViewPart::updateDisplay() { void FPGAViewPart::updateDisplay() {
// RAJA FIXME // RAJA FIXME
} }

@ -45,6 +45,13 @@ namespace RemoteLab
class FPGAViewPart : public KParts::RemoteInstrumentPart class FPGAViewPart : public KParts::RemoteInstrumentPart
{ {
Q_OBJECT Q_OBJECT
public:
enum InterfaceMode {
BasicInterfaceMode,
IntermediateInterfaceMode,
AdvancedInterfaceMode
};
public: public:
FPGAViewPart(TQWidget *, const char *, TQObject *, const char *, const TQStringList&); FPGAViewPart(TQWidget *, const char *, TQObject *, const char *, const TQStringList&);
@ -54,6 +61,7 @@ namespace RemoteLab
virtual bool closeURL(); virtual bool closeURL();
static KAboutData *createAboutData(); static KAboutData *createAboutData();
int connectToServer(TQString server); int connectToServer(TQString server);
virtual TQPtrList<KAction> menuActionList();
public slots: public slots:
virtual bool openURL(const KURL &url); virtual bool openURL(const KURL &url);
@ -65,6 +73,9 @@ namespace RemoteLab
void connectionClosed(); void connectionClosed();
void disconnectFromServer(); void disconnectFromServer();
void finishConnectingToServer(); void finishConnectingToServer();
void switchToBasicMode();
void switchToIntermediateMode();
void switchToAdvancedMode();
private: private:
TDEKerberosClientSocket* m_socket; TDEKerberosClientSocket* m_socket;
@ -75,6 +86,14 @@ namespace RemoteLab
bool connToServerConnecting; bool connToServerConnecting;
int connToServerState; int connToServerState;
TQTimer *connToServerTimeoutTimer; TQTimer *connToServerTimeoutTimer;
TQPtrList<KAction> m_menuActionList;
KActionMenu* m_modeSubMenu;
KToggleAction* m_modeBasicEnabled;
KToggleAction* m_modeIntermediateEnabled;
KToggleAction* m_modeAdvancedEnabled;
InterfaceMode m_interfaceMode;
}; };
} }

@ -56,6 +56,10 @@ namespace KParts
return false; return false;
} }
TQPtrList<KAction> RemoteInstrumentPart::menuActionList() {
return TQPtrList<KAction>();
}
void RemoteInstrumentPart::close() { void RemoteInstrumentPart::close() {
TQWidget* parentWidget = dynamic_cast<TQWidget*>(parent()); TQWidget* parentWidget = dynamic_cast<TQWidget*>(parent());
if (parentWidget) { if (parentWidget) {

@ -22,6 +22,9 @@
#define TQTRLA_H #define TQTRLA_H
#include <tqobject.h> #include <tqobject.h>
#include <tqptrlist.h>
#include <kaction.h>
#include <kparts/part.h> #include <kparts/part.h>
@ -45,6 +48,7 @@ namespace KParts
public: public:
KURL url() const { return m_url; } KURL url() const { return m_url; }
virtual bool closeURL(); virtual bool closeURL();
virtual TQPtrList<KAction> menuActionList();
protected slots: protected slots:
void close(); void close();

Loading…
Cancel
Save