You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ktechlab/src/documentiface.cpp

446 lines
8.6 KiB

/***************************************************************************
* 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