diff options
Diffstat (limited to 'tdecachegrind/tdecachegrind/toplevel.h')
-rw-r--r-- | tdecachegrind/tdecachegrind/toplevel.h | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/tdecachegrind/tdecachegrind/toplevel.h b/tdecachegrind/tdecachegrind/toplevel.h new file mode 100644 index 00000000..10e7cde5 --- /dev/null +++ b/tdecachegrind/tdecachegrind/toplevel.h @@ -0,0 +1,275 @@ +/* This file is part of KCachegrind. + Copyright (C) 2002, 2003 Josef Weidendorfer <Josef.Weidendorfer@gmx.de> + + KCachegrind 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, version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +/* + * KCachegrind top level window + */ + +#ifndef TOPLEVEL_H +#define TOPLEVEL_H + +#include <tqdatetime.h> + +#include <dcopobject.h> +#include <kmainwindow.h> + +#include "traceitemview.h" +#include "tracedata.h" + +class MultiView; +class TQLineEdit; +class TQDockWidget; +class TQLabel; +class TQProgressBar; +class TQPopupMenu; + +class KURL; +class KSelectAction; +class KToggleAction; +class KToolBarPopupAction; + +class TraceData; +class KRecentFilesAction; +class MainWidget; +class PartSelection; +class FunctionSelection; +class DumpSelection; +class StackSelection; +class TraceFunction; + +class TopLevel : public KMainWindow, public DCOPObject +{ + Q_OBJECT + TQ_OBJECT + +public: + TopLevel(const char *name = 0); + ~TopLevel(); + + TraceData* data() { return _data; } + void setData(TraceData*); + + virtual void saveProperties(KConfig*); + virtual void readProperties(KConfig*); + + void createActions(); + void createDocks(); + + TraceItem::CostType groupType() { return _groupType; } + TraceCostType* costType() { return _costType; } + TraceCostType* costType2() { return _costType2; } + TracePartList activeParts() { return _activeParts; } + TracePartList hiddenParts() { return _hiddenParts; } + + // current config + bool showPercentage() const { return _showPercentage; } + bool showExpanded() const { return _showExpanded; } + bool showCycles() const { return _showCycles; } + + /* convenience functions for often used context menu items */ + void addCostMenu(TQPopupMenu*,bool); + void addGoMenu(TQPopupMenu*); + +public slots: + void newTrace(); + void loadTrace(); + void loadTrace(const KURL&); + void loadTrace(TQString); + void addTrace(); + void addTrace(const KURL&); + void addTrace(TQString); + + // for quick showing the main window... + void loadDelayed(TQString); + + void reload(); + void exportGraph(); + void newWindow(); + void configure(); + void querySlot(); + void dummySlot(); + + // layouts + void layoutDuplicate(); + void layoutRemove(); + void layoutNext(); + void layoutPrevious(); + void layoutSave(); + void layoutRestore(); + void updateLayoutActions(); + + void updateStatusBar(); + void costTypeSelected(const TQString&); + void costType2Selected(const TQString&); + void groupTypeSelected(int); + void splitSlot(); + void splitDirSlot(); + void configureToolbars(); + void configureKeys(); + bool queryExit(); + bool queryClose(); + void togglePartDock(); + void toggleStackDock(); + void toggleFunctionDock(); + void toggleDumpDock(); + void toggleStatusBar(); + void partVisibilityChanged(bool); + void dumpVisibilityChanged(bool); + void stackVisibilityChanged(bool); + void functionVisibilityChanged(bool); + void togglePercentage(); + void setPercentage(bool); + void setAbsoluteCost(); + void setRelativeCost(); + void toggleExpanded(); + void toggleCycles(); + void forceTrace(); + void forceTraceReload(); + void forwardAboutToShow(); + void backAboutToShow(); + void upAboutToShow(); + void forwardActivated(int); + void backActivated(int); + void upActivated(int); + + bool setCostType(TraceCostType*); + bool setCostType2(TraceCostType*); + bool setCostType(TQString); + bool setCostType2(TQString); + bool setCostType(int); + bool setCostType2(int); + bool setGroupType(TraceItem::CostType); + bool setGroupType(TQString); + bool setGroup(TraceCostItem*); + bool setGroup(TQString); + bool setFunction(TraceFunction*); + bool setFunction(TQString); + void activePartsChangedSlot(const TracePartList& list); + void partsHideSelectedSlot(); + void partsUnhideAllSlot(); + + /* These go back to mainloop first by using a timer. + * So they can be called from event handlers that + * aren't allowed to delete list entries. + */ + void setCostTypeDelayed(TraceCostType*); + void setCostType2Delayed(TraceCostType*); + void setGroupTypeDelayed(TraceItem::CostType); + void setGroupDelayed(TraceCostItem*); + void setTraceItemDelayed(TraceItem*); + void partsHideSelectedSlotDelayed(); + void partsUnhideAllSlotDelayed(); + void goBack(); + void goForward(); + void goUp(); + void setDirectionDelayed(TraceItemView::Direction); + + /* SingleShot Slots (without parameters) for the delayed versions */ + void setCostTypeDelayed(); + void setCostType2Delayed(); + void setGroupTypeDelayed(); + void setGroupDelayed(); + void setTraceItemDelayed(); + void loadTraceDelayed(); + void setDirectionDelayed(); + + // configuration has changed + void configChanged(); + + //void refresh(); + void slotShowTipOnStart(); + void slotShowTip(); + + // progress in status bar, empty message disables progress display + void showStatus(TQString msg, int progress); + void showMessage(const TQString&, int msec); + +private: + void init(); + void createLayoutActions(); + void createMiscActions(); + void setupMainWidget(MainWidget*); + void setupPartSelection(PartSelection*); + void restoreCurrentState(TQString postfix); + void saveCurrentState(TQString postfix); + void saveTraceSettings(); + TQString traceKey(); + void restoreTraceTypes(); + void restoreTraceSettings(); + + KStatusBar* _statusbar; + TQLabel* _statusLabel; + KRecentFilesAction* _openRecent; + bool _twoMainWidgets; + Qt::Orientation _spOrientation; + + MultiView* _multiView; + FunctionSelection* _functionSelection; + DumpSelection* _dumpSelection; + PartSelection* _partSelection; + StackSelection* _stackSelection; + TQLineEdit* queryLineEdit; + + TQDockWindow *_partDock, *_stackDock, *_functionDock, *_dumpDock; + bool _forcePartDock; + + KSelectAction *_saCost, *_saCost2, *saGroup; + KToggleAction *_partDockShown, *_stackDockShown; + KToggleAction *_functionDockShown, *_dumpDockShown; + KToggleAction *_taPercentage, *_taExpanded, *_taCycles; + KToggleAction *_taDump, *_taSplit, *_taSplitDir; + KToolBarPopupAction *_paForward, *_paBack, *_paUp; + + TraceFunction* _function; + const TQObject* _lastSender; + + // trace data shown in this window + TraceData* _data; + // subcost types used for visualisation + TraceCostType* _costType; + TraceCostType* _costType2; + // grouping of function list + TraceItem::CostType _groupType; + // selected group + TraceCostItem* _group; + // selected parts + TracePartList _activeParts; + // hidden parts + TracePartList _hiddenParts; + // layouts + int _layoutCurrent, _layoutCount; + + // for delayed slots + TraceCostType* _costTypeDelayed; + TraceCostType* _costType2Delayed; + TraceItem::CostType _groupTypeDelayed; + TraceCostItem* _groupDelayed; + TraceItem* _traceItemDelayed; + TQString _loadTraceDelayed; + TraceItemView::Direction _directionDelayed; + + // for status progress display + TQString _progressMsg; + TQTime _progressStart; + TQProgressBar* _progressBar; + + // toplevel configuration options + bool _showPercentage, _showExpanded, _showCycles; +}; + +#endif |