Logo Search packages:      
Sourcecode: ktechlab version File versions  Download package


 *   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 <kurl.h>
#include <qguardedptr.h>

class CircuitDocument;
class DocManager;
class DocManagerIface;
class Document;
class FlowCodeDocument;
class KTechlab;
class MechanicsDocument;
class TextDocument;
class View;
class ViewArea;

class KAction;

typedef QValueList<Document*> DocumentList;
typedef QMap< KURL, Document* > URLDocumentMap;
typedef QValueList<KAction*> KActionList;

@author David Saxton
00037 class DocManager : public QObject
      static DocManager * self();
       * Attempts to close all open documents, returning true if successful
      bool closeAll();
       * Goes to the given line in the given text file (if the file exists)
      void gotoTextLine( const KURL &url, int line );
       * Attempts to open the document at the given url.
       * @param ViewArea if non-null, will open the new view into the ViewArea
      Document* openURL( const KURL &url, ViewArea *viewArea = 0l );
       * Returns the focused View
00060       View *getFocusedView() const { return p_focusedView; }
       * Returns the focused Document (the document of the focused view)
      Document *getFocusedDocument() const;
       * Get a unique name, e.g. Untitled (circuit) - n" depending on the types
       * of Document and whether it is the first one or not
       * @param type Document::DocumentType - type of Document
      QString untitledName( int type );
       * Checks to see if a document with the given URL is already open, and
       * returns a pointer to that Document if so - otherwises returns null
       * @see associateDocument
      Document *findDocument( const KURL &url ) const;
       * Associates a url with a pointer to a document. When findFile is called
       * with the given url, it will return a pointer to this document if it still
       * exists.
       * @see findDocument
      void associateDocument( const KURL &url, Document *document );
       * Gives the given document focus. If it has no open views, one will be
       * created for it if viewAreaForNew is non-null
      void giveDocumentFocus( Document * toFocus, ViewArea * viewAreaForNew = 0l );
      void removeDocumentAssociations( Document *document );
      void disableContextActions();
public slots:
       * Creates an empty text document (with an open view)
      TextDocument *createTextDocument();
       * Creates an empty circuit document (with an open view), and shows the
       * component selector.
      CircuitDocument *createCircuitDocument();
       * Creates an empty flowcode document (with an open view), and shows the
       * flowpart selector.
      FlowCodeDocument *createFlowCodeDocument();
       * Creates an empty mechanics document (with an open view), and shows the
       * mechanics selector.
      MechanicsDocument *createMechanicsDocument();
       * Emitted when a file is successfully opened
      void fileOpened( const KURL &url );
protected slots:
       * Does the appropriate enabling / disabling of actions, connections, etc
      void slotViewFocused( View *view );
       * Does the appropriate enabling / disabling of actions, connections, etc
      void slotViewUnfocused();
      void documentDestroyed( QObject *obj );
       * This function should be called after creating a new document to add it
       * to the appropriate lists and connect it up as appropriate
      void handleNewDocument( Document *document, ViewArea *viewArea = 0l );
       * Takes the document, creates a new view and shoves it in a new
       * ViewContainer
      View *createNewView( Document *document, ViewArea *viewArea = 0l );
      CircuitDocument *openCircuitFile( const KURL &url, ViewArea *viewArea = 0l );
      FlowCodeDocument *openFlowCodeFile( const KURL &url, ViewArea *viewArea = 0l );
      MechanicsDocument *openMechanicsFile( const KURL &url, ViewArea *viewArea = 0l );
      TextDocument *openTextFile( const KURL &url, ViewArea *viewArea = 0l );
      DocumentList m_documentList;
      URLDocumentMap m_associatedDocuments;
      // Keeps track of how many 
      // new files have been made
      // for the purpose of making 
      // titles of the form Untitled (n)
      int m_countCircuit;
      int m_countFlowCode;
      int m_countMechanics;
      int m_countOther;
      QGuardedPtr<View> p_focusedView;
      QGuardedPtr<Document> p_connectedDocument;
      DocManagerIface *m_pIface;
      unsigned m_nextDocumentID;
      static DocManager * m_pSelf;


Generated by  Doxygen 1.6.0   Back to index