|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2005 by David Saxton *
|
|
|
|
* david@bluehaze.org *
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "circuitdocument.h"
|
|
|
|
#include "connector.h"
|
|
|
|
#include "cnitem.h"
|
|
|
|
#include "documentiface.h"
|
|
|
|
#include "flowcodedocument.h"
|
|
|
|
#include "itemlibrary.h"
|
|
|
|
#include "libraryitem.h"
|
|
|
|
#include "mechanicsdocument.h"
|
|
|
|
#include "textdocument.h"
|
|
|
|
#include "view.h"
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class DocumentIface
|
|
|
|
DocumentIface::DocumentIface( Document * document )
|
|
|
|
: DCOPObject("Document")
|
|
|
|
{
|
|
|
|
m_pDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DocumentIface::~DocumentIface()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::selectAll( )
|
|
|
|
{
|
|
|
|
m_pDocument->selectAll();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::redo( )
|
|
|
|
{
|
|
|
|
m_pDocument->redo();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::undo( )
|
|
|
|
{
|
|
|
|
m_pDocument->undo();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::paste( )
|
|
|
|
{
|
|
|
|
m_pDocument->paste();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::copy( )
|
|
|
|
{
|
|
|
|
m_pDocument->copy();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::cut( )
|
|
|
|
{
|
|
|
|
m_pDocument->cut();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::print( )
|
|
|
|
{
|
|
|
|
m_pDocument->print();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool DocumentIface::close( )
|
|
|
|
{
|
|
|
|
return m_pDocument->fileClose();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::saveAs( )
|
|
|
|
{
|
|
|
|
m_pDocument->fileSaveAs();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DocumentIface::save( )
|
|
|
|
{
|
|
|
|
m_pDocument->fileSave();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool DocumentIface::isRedoAvailable( )
|
|
|
|
{
|
|
|
|
return m_pDocument->isRedoAvailable();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool DocumentIface::isUndoAvailable( )
|
|
|
|
{
|
|
|
|
return m_pDocument->isUndoAvailable();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool DocumentIface::isModified( )
|
|
|
|
{
|
|
|
|
return m_pDocument->isModified();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool DocumentIface::openURL( const TQString & url )
|
|
|
|
{
|
|
|
|
return m_pDocument->openURL(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString DocumentIface::url( )
|
|
|
|
{
|
|
|
|
return m_pDocument->url().url();
|
|
|
|
}
|
|
|
|
|
|
|
|
uint DocumentIface::numberOfViews( )
|
|
|
|
{
|
|
|
|
return m_pDocument->numberOfViews();
|
|
|
|
}
|
|
|
|
|
|
|
|
DCOPRef DocumentIface::activeView( )
|
|
|
|
{
|
|
|
|
return viewToRef( m_pDocument->activeView() );
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString DocumentIface::caption( ) const
|
|
|
|
{
|
|
|
|
return m_pDocument->caption();
|
|
|
|
}
|
|
|
|
|
|
|
|
DCOPRef DocumentIface::viewToRef( View * view )
|
|
|
|
{
|
|
|
|
return DCOPRef( view->dcopObject() );
|
|
|
|
}
|
|
|
|
//END class DocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class FlowCodeDocumentIface
|
|
|
|
FlowCodeDocumentIface::FlowCodeDocumentIface( FlowCodeDocument * document )
|
|
|
|
: ICNDocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
void FlowCodeDocumentIface::setPicType( const TQString & id )
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument->setPicType(id);
|
|
|
|
}
|
|
|
|
|
|
|
|
void FlowCodeDocumentIface::convertToMicrobe()
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument->convertToMicrobe();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FlowCodeDocumentIface::convertToHex()
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument->convertToHex();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FlowCodeDocumentIface::convertToPIC()
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument->convertToPIC();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FlowCodeDocumentIface::convertToAssembly()
|
|
|
|
{
|
|
|
|
m_pFlowCodeDocument->convertToAssembly();
|
|
|
|
}
|
|
|
|
//END class FlowCodeDocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class CircuitDocumentIface
|
|
|
|
CircuitDocumentIface::CircuitDocumentIface( CircuitDocument * document )
|
|
|
|
: ICNDocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pCircuitDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::setOrientation0( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->setOrientation0();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::setOrientation90( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->setOrientation90();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::setOrientation180( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->setOrientation180();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::setOrientation270( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->setOrientation270();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::rotateCounterClockwise( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->rotateCounterClockwise();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::rotateClockwise( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->rotateClockwise();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::flip( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->itemFlip();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::displayEquations( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->displayEquations();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CircuitDocumentIface::createSubcircuit( )
|
|
|
|
{
|
|
|
|
m_pCircuitDocument->createSubcircuit();
|
|
|
|
}
|
|
|
|
//END class CircuitDocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class ICNDocumentIface
|
|
|
|
ICNDocumentIface::ICNDocumentIface( ICNDocument * document )
|
|
|
|
: ItemDocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pICNDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ICNDocumentIface::exportToImage( )
|
|
|
|
{
|
|
|
|
m_pICNDocument->exportToImage();
|
|
|
|
}
|
|
|
|
|
|
|
|
QCStringList ICNDocumentIface::nodeIDs( const TQString & id )
|
|
|
|
{
|
|
|
|
CNItem * item = m_pICNDocument->cnItemWithID(id);
|
|
|
|
|
|
|
|
QCStringList ids;
|
|
|
|
if ( !item )
|
|
|
|
return ids;
|
|
|
|
|
|
|
|
const NodeMap nm = item->nodeMap();
|
|
|
|
const NodeMap::const_iterator end = nm.end();
|
|
|
|
for ( NodeMap::const_iterator it = nm.begin(); it != end; ++it )
|
|
|
|
ids.append( it.key().ascii() );
|
|
|
|
|
|
|
|
return ids;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString ICNDocumentIface::makeConnection( const TQString & item1, const TQString & node1, const TQString & item2, const TQString & node2 )
|
|
|
|
{
|
|
|
|
CNItem * i1 = m_pICNDocument->cnItemWithID(item1);
|
|
|
|
CNItem * i2 = m_pICNDocument->cnItemWithID(item2);
|
|
|
|
|
|
|
|
if ( !i1 || !i2 )
|
|
|
|
return TQString();
|
|
|
|
|
|
|
|
Node * n1 = m_pICNDocument->nodeWithID( i1->nodeId(node1) );
|
|
|
|
Node * n2 = m_pICNDocument->nodeWithID( i2->nodeId(node2) );
|
|
|
|
|
|
|
|
if ( !n1 || !n2 )
|
|
|
|
return TQString();
|
|
|
|
|
|
|
|
Connector * connector = m_pICNDocument->createConnector( n1, n2 );
|
|
|
|
return connector ? connector->id() : TQString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ICNDocumentIface::selectConnector( const TQString & id )
|
|
|
|
{
|
|
|
|
m_pICNDocument->select( m_pICNDocument->connectorWithID(id) );
|
|
|
|
}
|
|
|
|
|
|
|
|
void ICNDocumentIface::unselectConnector( const TQString & id )
|
|
|
|
{
|
|
|
|
m_pItemDocument->unselect( m_pICNDocument->connectorWithID(id) );
|
|
|
|
}
|
|
|
|
//END class ICNDocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class ItemDocumentIface
|
|
|
|
ItemDocumentIface::ItemDocumentIface( ItemDocument * document )
|
|
|
|
: DocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pItemDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
QCStringList ItemDocumentIface::validItemIDs( )
|
|
|
|
{
|
|
|
|
QCStringList validIDs;
|
|
|
|
|
|
|
|
LibraryItemList * allItems = itemLibrary()->items();
|
|
|
|
const LibraryItemList::iterator end = allItems->end();
|
|
|
|
for ( LibraryItemList::iterator it = allItems->begin(); it != end; ++it )
|
|
|
|
{
|
|
|
|
TQString id = (*it)->activeID();
|
|
|
|
if ( m_pItemDocument->isValidItem(id) )
|
|
|
|
validIDs << id.utf8();
|
|
|
|
}
|
|
|
|
return validIDs;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString ItemDocumentIface::addItem( const TQString & id, int x, int y )
|
|
|
|
{
|
|
|
|
Item * item = m_pItemDocument->addItem( id, TQPoint( x, y ), true );
|
|
|
|
return item ? item->id() : TQString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::selectItem( const TQString & id )
|
|
|
|
{
|
|
|
|
m_pItemDocument->select( m_pItemDocument->itemWithID(id) );
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::unselectItem( const TQString & id )
|
|
|
|
{
|
|
|
|
m_pItemDocument->unselect( m_pItemDocument->itemWithID(id) );
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::deleteSelection( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->deleteSelection();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::clearHistory( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->clearHistory();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::unselectAll( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->unselectAll();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::alignHorizontally( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->alignHorizontally();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::alignVertically( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->alignVertically();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::distributeHorizontally( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->distributeHorizontally();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ItemDocumentIface::distributeVertically( )
|
|
|
|
{
|
|
|
|
m_pItemDocument->distributeVertically();
|
|
|
|
}
|
|
|
|
//END class ItemDocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class TextDocumentIface
|
|
|
|
TextDocumentIface::TextDocumentIface( TextDocument * document )
|
|
|
|
: DocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pTextDocument = document;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugStepOver( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugStepOver();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugStepOut( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugStepOut();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugStep( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugStep();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugStop( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugStop();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugInterrupt( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugInterrupt();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::debugRun( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->debugRun();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TextDocumentIface::isDebugging( )
|
|
|
|
{
|
|
|
|
#ifndef NO_GPSIM
|
|
|
|
return m_pTextDocument->debuggerIsRunning();
|
|
|
|
#else
|
|
|
|
return false;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::clearBookmarks( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->clearBookmarks();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::convertToAssembly( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->convertToAssembly();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::convertToPIC( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->convertToPIC();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::convertToHex( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->convertToHex();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::convertToMicrobe( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->convertToMicrobe();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TextDocumentIface::formatAssembly( )
|
|
|
|
{
|
|
|
|
m_pTextDocument->formatAssembly();
|
|
|
|
}
|
|
|
|
//END class TextDocumentIface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BEGIN class MechanicsDocumentIface
|
|
|
|
MechanicsDocumentIface::MechanicsDocumentIface( MechanicsDocument * document )
|
|
|
|
: ItemDocumentIface(document)
|
|
|
|
{
|
|
|
|
m_pMechanicsDocument = document;
|
|
|
|
}
|
|
|
|
//END class MechanicsDocumentIface
|
|
|
|
|