KDevelop API Documentation

sourcenav_part.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2000-2001 by Harald Fernengel                           *
00003  *   harry@kdevelop.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  
00012 
00013 #ifndef __KDEVPART_SOURCENAV_H__
00014 #define __KDEVPART_SOURCENAV_H__
00015 
00016 #include <qvaluelist.h>
00017 
00018 #include <kdevplugin.h>
00019 #include <kurl.h>
00020 
00021 namespace KParts {
00022   class Part;
00023 };
00024 
00025 class KAction;
00026 class KToolBarPopupAction;
00027 class QPopupMenu;
00028 
00029 class Anchor
00030 {
00031 public:
00032   Anchor()
00033   {
00034     _id = -1;
00035     _line = _col = 0;
00036   }
00037   Anchor( KURL url, uint line = 0, uint col = 0 )
00038   { 
00039     _url = url;
00040     _line = line;
00041     _col = col;
00042     _id = nextID();
00043   }
00044   KURL url() const { return _url; }
00045   uint line() const { return _line; }
00046   uint col() const { return _col; }
00047   int  id() const { return _id; }
00048   bool isValid() const { return _id != -1; }
00049 
00050 private:
00051   KURL _url;
00052   uint _line, _col;
00053   int  _id;
00054   static int nextID();
00055 };
00056 
00057 typedef QValueList<Anchor> AnchorList;
00058 
00059 class SourceNavPart : public KDevPlugin
00060 {
00061   Q_OBJECT
00062 
00063 public:
00064    
00065   SourceNavPart(QObject *parent, const char *name, const QStringList&);
00066   ~SourceNavPart();
00067  
00068 public slots:
00069   void slotNavForward();
00070   void slotNavBack();
00071 
00072 private slots:
00073   void slotPartAdded( KParts::Part *part );
00074   void slotTextChanged();
00075   void fillBackPopup();
00076   void fillForwardPopup();
00077   void backPopupClicked( int id );
00078   void forwardPopupClicked( int id );
00079 
00080 private:
00081   Anchor getCurrentPos();
00082   void   gotoPos( const Anchor& ankh );
00083   bool   isNearby( const Anchor& pos1, const Anchor& pos2 );
00084   void   enableActions();
00085   void   navigate( AnchorList& list1, AnchorList& list2 );
00086   void   navigate( int id, AnchorList& list1, AnchorList& list2 );
00087   void   fillPopup( const AnchorList& list, QPopupMenu* pop );
00088   void   cleanupList( AnchorList& list );
00089 
00090   KToolBarPopupAction *navForward, *navBack;
00091   AnchorList          navList;
00092   AnchorList          forwardList;
00093   bool                backPopupVisible, forwardPopupVisible;
00094 };
00095 
00096 
00097 #endif
00098 
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:58 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003