//Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>, (C) 2012
//Copyright: See COPYING file that comes with this distribution
# include "instrumentview.h"
# include <tqtimer.h>
# include <klibloader.h>
# include <klocale.h>
# include <kmessagebox.h>
namespace RemoteLab {
InstrumentView : : InstrumentView ( const TQString & library , TQWidget * parentWidget , const char * name , WFlags f )
: KMdiChildView ( parentWidget , name , f )
, m_libraryName ( library )
, m_instrumentPart ( 0 )
, m_fixedSize ( false )
, m_canary ( NULL )
{
init ( ) ;
}
InstrumentView : : InstrumentView ( const TQString & library , const TQString & caption , TQWidget * parentWidget , const char * name , WFlags f )
: KMdiChildView ( caption , parentWidget , name , f )
, m_libraryName ( library )
, m_instrumentPart ( 0 )
, m_fixedSize ( false )
, m_canary ( NULL )
{
init ( ) ;
}
InstrumentView : : ~ InstrumentView ( ) {
if ( m_canary ) {
* m_canary = true ;
}
}
void InstrumentView : : init ( ) {
KLibFactory * factory = KLibLoader : : self ( ) - > factory ( m_libraryName . ascii ( ) ) ;
if ( ! factory ) {
KMessageBox : : error ( this , i18n ( " TDE could not find the %1 Part, or the Remote Laboratory Communications Analyzer Part could not be started. Did you make install? " ) . arg ( m_libraryName ) ) ;
TQTimer : : singleShot ( 0 , this , SLOT ( close ( ) ) ) ;
}
else {
m_instrumentPart = ( InstrumentPart * ) factory - > create ( TQT_TQOBJECT ( this ) , " part " , " KParts::RemoteInstrumentPart " ) ;
connect ( m_instrumentPart , SIGNAL ( statusMessageSet ( const TQString & ) ) , this , SLOT ( setStatusMessage ( const TQString & ) ) ) ;
connect ( m_instrumentPart , SIGNAL ( usingFixedSizeChanged ( bool ) ) , this , SLOT ( setUsingFixedSize ( bool ) ) ) ;
connect ( m_instrumentPart , SIGNAL ( resizeToHintRequested ( ) ) , this , SLOT ( setChildSizeToHint ( ) ) ) ;
}
}
void InstrumentView : : setChildSizeToHint ( ) {
if ( m_instrumentPart ) {
TQWidget * childPartWidget = m_instrumentPart - > widget ( ) ;
if ( childPartWidget ) {
if ( m_fixedSize ) {
setFixedSize ( childPartWidget - > sizeHint ( ) ) ;
}
else {
TQSize childSizeHint = childPartWidget - > sizeHint ( ) ;
setMinimumSize ( childSizeHint . width ( ) , childSizeHint . height ( ) ) ;
childPartWidget - > resize ( size ( ) ) ;
}
}
}
}
void InstrumentView : : setUsingFixedSize ( bool fixed ) {
m_fixedSize = fixed ;
if ( ! fixed ) {
setMinimumSize ( 0 , 0 ) ;
setMaximumSize ( TQWIDGETSIZE_MAX , TQWIDGETSIZE_MAX ) ;
}
setChildSizeToHint ( ) ;
}
void InstrumentView : : resizeEvent ( TQResizeEvent * ) {
setChildSizeToHint ( ) ;
}
TQPtrList < KAction > InstrumentView : : menuActionList ( ) {
if ( m_instrumentPart ) {
return m_instrumentPart - > menuActionList ( ) ;
}
else {
return TQPtrList < KAction > ( ) ;
}
}
void InstrumentView : : setStatusMessage ( const TQString & message ) {
emit ( statusMessageSet ( message ) ) ;
}
bool InstrumentView : : queryExit ( ) {
if ( ! m_instrumentPart ) { // apparently std::exit() still calls this function, and abort() causes a crash..
return true ;
}
m_instrumentPart - > closeURL ( ) ;
return true ;
}
void InstrumentView : : closeConnections ( ) {
queryExit ( ) ;
}
void InstrumentView : : connectServer ( TQString server ) {
if ( ! m_canary ) {
m_canary = new bool ;
* m_canary = false ;
}
bool * canary = m_canary ;
if ( m_instrumentPart ) {
if ( m_instrumentPart - > openURL ( KURL ( server ) ) ) { // This can call processEvents, therefore this object may not exist when it returns!
if ( * canary = = true ) {
delete canary ;
return ;
}
TQTimer : : singleShot ( 0 , this , SLOT ( close ( ) ) ) ;
}
}
delete m_canary ;
m_canary = NULL ;
}
/**********************************************
SESSION MANAGEMENT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void InstrumentView : : saveProperties ( KConfig * config ) {
}
void InstrumentView : : readProperties ( KConfig * config ) {
}
} //namespace RemoteLab