/*************************************************************************** * 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. * ***************************************************************************/ #ifndef DOCUMENTIFACE_H #define DOCUMENTIFACE_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include class CircuitDocument; class Document; class FlowCodeDocument; class ICNDocument; class ItemDocument; class MechanicsDocument; class TextDocument; class View; /** @author David Saxton */ class DocumentIface : public DCOPObject { K_DCOP public: DocumentIface( Document * document ); virtual ~DocumentIface(); k_dcop: TQString caption() const; DCOPRef activeView(); uint numberOfViews(); // View *createView( ViewContainer *viewContainer, uint viewAreaId, const char *name = 0l ); TQString url(); bool openURL( const TQString & url ); bool isModified(); bool isUndoAvailable(); bool isRedoAvailable(); void save(); void saveAs(); bool close(); void print(); void cut(); void copy(); void paste(); void undo(); void redo(); void selectAll(); protected: DCOPRef viewToRef( View * view ); Document * m_pDocument; }; class TextDocumentIface : public DocumentIface { K_DCOP public: TextDocumentIface( TextDocument * document ); k_dcop: void formatAssembly(); void convertToMicrobe(); void convertToHex(); void convertToPIC(); void convertToAssembly(); void clearBookmarks(); bool isDebugging(); void debugRun(); void debugInterrupt(); void debugStop(); void debugStep(); void debugStepOver(); void debugStepOut(); protected: TextDocument * m_pTextDocument; }; class ItemDocumentIface : public DocumentIface { K_DCOP public: ItemDocumentIface( ItemDocument * document ); k_dcop: QCStringList validItemIDs(); /** * Create an item with the given id (e.g. "ec/resistor") at the given * position. * @return name of item (assigned to it by KTechlab) */ TQString addItem( const TQString & id, int x, int y ); void selectItem( const TQString & id ); void unselectItem( const TQString & id ); void clearHistory(); void unselectAll(); void alignHorizontally(); void alignVertically(); void distributeHorizontally(); void distributeVertically(); void deleteSelection(); protected: ItemDocument * m_pItemDocument; }; class MechanicsDocumentIface : public ItemDocumentIface { K_DCOP public: MechanicsDocumentIface( MechanicsDocument * document ); protected: MechanicsDocument * m_pMechanicsDocument; }; class ICNDocumentIface : public ItemDocumentIface { K_DCOP public: ICNDocumentIface( ICNDocument * document ); k_dcop: void exportToImage(); QCStringList nodeIDs( const TQString & id ); /** * Makes a connection from node1 on item1 to node2 on item2 */ TQString makeConnection( const TQString & item1, const TQString & node1, const TQString & item2, const TQString & node2 ); void selectConnector( const TQString & id ); void unselectConnector( const TQString & id ); protected: ICNDocument * m_pICNDocument; }; class CircuitDocumentIface : public ICNDocumentIface { K_DCOP public: CircuitDocumentIface( CircuitDocument * document ); k_dcop: void setOrientation0(); void setOrientation90(); void setOrientation180(); void setOrientation270(); void rotateCounterClockwise(); void rotateClockwise(); void flip(); void displayEquations(); void createSubcircuit(); protected: CircuitDocument * m_pCircuitDocument; }; class FlowCodeDocumentIface : public ICNDocumentIface { K_DCOP public: FlowCodeDocumentIface( FlowCodeDocument * document ); void convertToMicrobe(); void convertToHex(); void convertToPIC(); void convertToAssembly(); k_dcop: void setPicType( const TQString & id ); protected: FlowCodeDocument * m_pFlowCodeDocument; }; #endif