/*************************************************************************** * Copyright (C) 2001 by Bernd Gehrmann * * bernd@tdevelop.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 _DIGRAPHVIEW_H_ #define _DIGRAPHVIEW_H_ #include #include #include #include class DigraphNode; class DigraphEdge; class DigraphView : public TQScrollView { Q_OBJECT TQ_OBJECT public: DigraphView(TQWidget *parent, const char *name); ~DigraphView(); void addEdge(const TQString &name1, const TQString &name2); void process(const TQString& file = "", const TQString& ext = ""); void clear(); void setSelected(const TQString &name); void ensureVisible(const TQString &name); signals: void selected(const TQString &name); protected: virtual void drawContents(TQPainter* p, int clipx, int clipy, int clipw, int cliph); virtual void contentsMousePressEvent(TQMouseEvent *e); virtual TQSize sizeHint() const; private: int toXPixel(double x); int toYPixel(double x); void setRenderedExtent(double w, double h); void addRenderedNode(const TQString &name, double x, double y, double w, double h); void addRenderedEdge(const TQString &name1, const TQString &name2, TQMemArray coords); static TQStringList splitLine(TQString str); void parseDotResults(const TQStringList &list); double xscale, yscale; int width, height; TQStringList inputs; TQPtrList nodes; TQPtrList edges; DigraphNode *selNode; }; #endif