00001 /*************************************************************************** 00002 * Copyright (C) 2005 by David Saxton * 00003 * david@bluehaze.org * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 ***************************************************************************/ 00010 00011 #include "circuitdocument.h" 00012 #include "connector.h" 00013 #include "cnitem.h" 00014 #include "documentiface.h" 00015 #include "flowcodedocument.h" 00016 #include "itemlibrary.h" 00017 #include "libraryitem.h" 00018 #include "mechanicsdocument.h" 00019 #include "textdocument.h" 00020 #include "view.h" 00021 00022 00023 //BEGIN class DocumentIface 00024 DocumentIface::DocumentIface( Document * document ) 00025 : DCOPObject("Document") 00026 { 00027 m_pDocument = document; 00028 } 00029 00030 00031 DocumentIface::~DocumentIface() 00032 { 00033 } 00034 00035 void DocumentIface::selectAll( ) 00036 { 00037 m_pDocument->selectAll(); 00038 } 00039 00040 void DocumentIface::redo( ) 00041 { 00042 m_pDocument->redo(); 00043 } 00044 00045 void DocumentIface::undo( ) 00046 { 00047 m_pDocument->undo(); 00048 } 00049 00050 void DocumentIface::paste( ) 00051 { 00052 m_pDocument->paste(); 00053 } 00054 00055 void DocumentIface::copy( ) 00056 { 00057 m_pDocument->copy(); 00058 } 00059 00060 void DocumentIface::cut( ) 00061 { 00062 m_pDocument->cut(); 00063 } 00064 00065 void DocumentIface::print( ) 00066 { 00067 m_pDocument->print(); 00068 } 00069 00070 00071 bool DocumentIface::close( ) 00072 { 00073 return m_pDocument->fileClose(); 00074 } 00075 00076 void DocumentIface::saveAs( ) 00077 { 00078 m_pDocument->fileSaveAs(); 00079 } 00080 00081 void DocumentIface::save( ) 00082 { 00083 m_pDocument->fileSave(); 00084 } 00085 00086 bool DocumentIface::isRedoAvailable( ) 00087 { 00088 return m_pDocument->isRedoAvailable(); 00089 } 00090 00091 bool DocumentIface::isUndoAvailable( ) 00092 { 00093 return m_pDocument->isUndoAvailable(); 00094 } 00095 00096 bool DocumentIface::isModified( ) 00097 { 00098 return m_pDocument->isModified(); 00099 } 00100 00101 bool DocumentIface::openURL( const QString & url ) 00102 { 00103 return m_pDocument->openURL(url); 00104 } 00105 00106 QString DocumentIface::url( ) 00107 { 00108 return m_pDocument->url().url(); 00109 } 00110 00111 uint DocumentIface::numberOfViews( ) 00112 { 00113 return m_pDocument->numberOfViews(); 00114 } 00115 00116 DCOPRef DocumentIface::activeView( ) 00117 { 00118 return viewToRef( m_pDocument->activeView() ); 00119 } 00120 00121 QString DocumentIface::caption( ) const 00122 { 00123 return m_pDocument->caption(); 00124 } 00125 00126 DCOPRef DocumentIface::viewToRef( View * view ) 00127 { 00128 return DCOPRef( view->dcopObject() ); 00129 } 00130 //END class DocumentIface 00131 00132 00133 00134 //BEGIN class FlowCodeDocumentIface 00135 FlowCodeDocumentIface::FlowCodeDocumentIface( FlowCodeDocument * document ) 00136 : ICNDocumentIface(document) 00137 { 00138 m_pFlowCodeDocument = document; 00139 } 00140 00141 void FlowCodeDocumentIface::setPicType( const QString & id ) 00142 { 00143 m_pFlowCodeDocument->setPicType(id); 00144 } 00145 00146 void FlowCodeDocumentIface::convertToMicrobe() 00147 { 00148 m_pFlowCodeDocument->convertToMicrobe(); 00149 } 00150 00151 void FlowCodeDocumentIface::convertToHex() 00152 { 00153 m_pFlowCodeDocument->convertToHex(); 00154 } 00155 00156 void FlowCodeDocumentIface::convertToPIC() 00157 { 00158 m_pFlowCodeDocument->convertToPIC(); 00159 } 00160 00161 void FlowCodeDocumentIface::convertToAssembly() 00162 { 00163 m_pFlowCodeDocument->convertToAssembly(); 00164 } 00165 //END class FlowCodeDocumentIface 00166 00167 00168 //BEGIN class CircuitDocumentIface 00169 CircuitDocumentIface::CircuitDocumentIface( CircuitDocument * document ) 00170 : ICNDocumentIface(document) 00171 { 00172 m_pCircuitDocument = document; 00173 } 00174 00175 void CircuitDocumentIface::setOrientation0( ) 00176 { 00177 m_pCircuitDocument->setOrientation0(); 00178 } 00179 00180 void CircuitDocumentIface::setOrientation90( ) 00181 { 00182 m_pCircuitDocument->setOrientation90(); 00183 } 00184 00185 void CircuitDocumentIface::setOrientation180( ) 00186 { 00187 m_pCircuitDocument->setOrientation180(); 00188 } 00189 00190 void CircuitDocumentIface::setOrientation270( ) 00191 { 00192 m_pCircuitDocument->setOrientation270(); 00193 } 00194 00195 void CircuitDocumentIface::rotateCounterClockwise( ) 00196 { 00197 m_pCircuitDocument->rotateCounterClockwise(); 00198 } 00199 00200 void CircuitDocumentIface::rotateClockwise( ) 00201 { 00202 m_pCircuitDocument->rotateClockwise(); 00203 } 00204 00205 void CircuitDocumentIface::flip( ) 00206 { 00207 m_pCircuitDocument->itemFlip(); 00208 } 00209 00210 void CircuitDocumentIface::displayEquations( ) 00211 { 00212 m_pCircuitDocument->displayEquations(); 00213 } 00214 00215 void CircuitDocumentIface::createSubcircuit( ) 00216 { 00217 m_pCircuitDocument->createSubcircuit(); 00218 } 00219 //END class CircuitDocumentIface 00220 00221 00222 00223 //BEGIN class ICNDocumentIface 00224 ICNDocumentIface::ICNDocumentIface( ICNDocument * document ) 00225 : ItemDocumentIface(document) 00226 { 00227 m_pICNDocument = document; 00228 } 00229 00230 void ICNDocumentIface::exportToImage( ) 00231 { 00232 m_pICNDocument->exportToImage(); 00233 } 00234 00235 QCStringList ICNDocumentIface::nodeIDs( const QString & id ) 00236 { 00237 CNItem * item = m_pICNDocument->cnItemWithID(id); 00238 00239 QCStringList ids; 00240 if ( !item ) 00241 return ids; 00242 00243 const NodeMap nm = item->nodeMap(); 00244 const NodeMap::const_iterator end = nm.end(); 00245 for ( NodeMap::const_iterator it = nm.begin(); it != end; ++it ) 00246 ids.append( it.key().ascii() ); 00247 00248 return ids; 00249 } 00250 00251 QString ICNDocumentIface::makeConnection( const QString & item1, const QString & node1, const QString & item2, const QString & node2 ) 00252 { 00253 CNItem * i1 = m_pICNDocument->cnItemWithID(item1); 00254 CNItem * i2 = m_pICNDocument->cnItemWithID(item2); 00255 00256 if ( !i1 || !i2 ) 00257 return QString::null; 00258 00259 Node * n1 = m_pICNDocument->nodeWithID( i1->nodeId(node1) ); 00260 Node * n2 = m_pICNDocument->nodeWithID( i2->nodeId(node2) ); 00261 00262 if ( !n1 || !n2 ) 00263 return QString::null; 00264 00265 Connector * connector = m_pICNDocument->createConnector( n1, n2 ); 00266 return connector ? connector->id() : QString::null; 00267 } 00268 00269 void ICNDocumentIface::selectConnector( const QString & id ) 00270 { 00271 m_pICNDocument->select( m_pICNDocument->connectorWithID(id) ); 00272 } 00273 00274 void ICNDocumentIface::unselectConnector( const QString & id ) 00275 { 00276 m_pItemDocument->unselect( m_pICNDocument->connectorWithID(id) ); 00277 } 00278 //END class ICNDocumentIface 00279 00280 00281 00282 //BEGIN class ItemDocumentIface 00283 ItemDocumentIface::ItemDocumentIface( ItemDocument * document ) 00284 : DocumentIface(document) 00285 { 00286 m_pItemDocument = document; 00287 } 00288 00289 QCStringList ItemDocumentIface::validItemIDs( ) 00290 { 00291 QCStringList validIDs; 00292 00293 LibraryItemList * allItems = itemLibrary()->items(); 00294 const LibraryItemList::iterator end = allItems->end(); 00295 for ( LibraryItemList::iterator it = allItems->begin(); it != end; ++it ) 00296 { 00297 QString id = (*it)->activeID(); 00298 if ( m_pItemDocument->isValidItem(id) ) 00299 validIDs << id.utf8(); 00300 } 00301 return validIDs; 00302 } 00303 00304 QString ItemDocumentIface::addItem( const QString & id, int x, int y ) 00305 { 00306 Item * item = m_pItemDocument->addItem( id, QPoint( x, y ), true ); 00307 return item ? item->id() : QString::null; 00308 } 00309 00310 void ItemDocumentIface::selectItem( const QString & id ) 00311 { 00312 m_pItemDocument->select( m_pItemDocument->itemWithID(id) ); 00313 } 00314 00315 void ItemDocumentIface::unselectItem( const QString & id ) 00316 { 00317 m_pItemDocument->unselect( m_pItemDocument->itemWithID(id) ); 00318 } 00319 00320 void ItemDocumentIface::deleteSelection( ) 00321 { 00322 m_pItemDocument->deleteSelection(); 00323 } 00324 00325 void ItemDocumentIface::clearHistory( ) 00326 { 00327 m_pItemDocument->clearHistory(); 00328 } 00329 00330 void ItemDocumentIface::unselectAll( ) 00331 { 00332 m_pItemDocument->unselectAll(); 00333 } 00334 00335 void ItemDocumentIface::alignHorizontally( ) 00336 { 00337 m_pItemDocument->alignHorizontally(); 00338 } 00339 00340 void ItemDocumentIface::alignVertically( ) 00341 { 00342 m_pItemDocument->alignVertically(); 00343 } 00344 00345 void ItemDocumentIface::distributeHorizontally( ) 00346 { 00347 m_pItemDocument->distributeHorizontally(); 00348 } 00349 00350 void ItemDocumentIface::distributeVertically( ) 00351 { 00352 m_pItemDocument->distributeVertically(); 00353 } 00354 //END class ItemDocumentIface 00355 00356 00357 00358 //BEGIN class TextDocumentIface 00359 TextDocumentIface::TextDocumentIface( TextDocument * document ) 00360 : DocumentIface(document) 00361 { 00362 m_pTextDocument = document; 00363 } 00364 00365 void TextDocumentIface::debugStepOver( ) 00366 { 00367 m_pTextDocument->debugStepOver(); 00368 } 00369 00370 void TextDocumentIface::debugStepOut( ) 00371 { 00372 m_pTextDocument->debugStepOut(); 00373 } 00374 00375 void TextDocumentIface::debugStep( ) 00376 { 00377 m_pTextDocument->debugStep(); 00378 } 00379 00380 void TextDocumentIface::debugStop( ) 00381 { 00382 m_pTextDocument->debugStop(); 00383 } 00384 00385 void TextDocumentIface::debugInterrupt( ) 00386 { 00387 m_pTextDocument->debugInterrupt(); 00388 } 00389 00390 void TextDocumentIface::debugRun( ) 00391 { 00392 m_pTextDocument->debugRun(); 00393 } 00394 00395 bool TextDocumentIface::isDebugging( ) 00396 { 00397 #ifndef NO_GPSIM 00398 return m_pTextDocument->debuggerIsRunning(); 00399 #else 00400 return false; 00401 #endif 00402 } 00403 00404 void TextDocumentIface::clearBookmarks( ) 00405 { 00406 m_pTextDocument->clearBookmarks(); 00407 } 00408 00409 void TextDocumentIface::convertToAssembly( ) 00410 { 00411 m_pTextDocument->convertToAssembly(); 00412 } 00413 00414 void TextDocumentIface::convertToPIC( ) 00415 { 00416 m_pTextDocument->convertToPIC(); 00417 } 00418 00419 void TextDocumentIface::convertToHex( ) 00420 { 00421 m_pTextDocument->convertToHex(); 00422 } 00423 00424 void TextDocumentIface::convertToMicrobe( ) 00425 { 00426 m_pTextDocument->convertToMicrobe(); 00427 } 00428 00429 void TextDocumentIface::formatAssembly( ) 00430 { 00431 m_pTextDocument->formatAssembly(); 00432 } 00433 //END class TextDocumentIface 00434 00435 00436 00437 //BEGIN class MechanicsDocumentIface 00438 MechanicsDocumentIface::MechanicsDocumentIface( MechanicsDocument * document ) 00439 : ItemDocumentIface(document) 00440 { 00441 m_pMechanicsDocument = document; 00442 } 00443 //END class MechanicsDocumentIface 00444
1.5.1