• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

kcachegrind

  • sources
  • kde-4.14
  • kdesdk
  • kcachegrind
  • kcachegrind
toplevel.h
Go to the documentation of this file.
1 /* This file is part of KCachegrind.
2  Copyright (C) 2002, 2003 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
3 
4  KCachegrind is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation, version 2.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; see the file COPYING. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 /*
20  * KCachegrind top level window
21  */
22 
23 #ifndef TOPLEVEL_H
24 #define TOPLEVEL_H
25 
26 #include <qdatetime.h>
27 #include <QLabel>
28 #include <QProcess>
29 
30 #include <kxmlguiwindow.h>
31 
32 #include "logger.h"
33 #include "traceitemview.h"
34 #include "tracedata.h"
35 #include "toplevelbase.h"
36 
37 class MultiView;
38 class QLineEdit;
39 class QDockWidget;
40 class QLabel;
41 class QProgressBar;
42 class QMenu;
43 
44 class KUrl;
45 class KSelectAction;
46 class KToggleAction;
47 class KToolBarPopupAction;
48 
49 class TraceData;
50 class KRecentFilesAction;
51 class MainWidget;
52 class PartSelection;
53 class FunctionSelection;
54 class DumpSelection;
55 class StackSelection;
56 class TraceFunction;
57 
58 class TopLevel : public KXmlGuiWindow, public Logger, public TopLevelBase
59 {
60  Q_OBJECT
61  Q_CLASSINFO("D-Bus Interface", "org.kde.kcachegrind")
62 public:
63  TopLevel();
64  ~TopLevel();
65 
66  TraceData* data() { return _data; }
67  void setData(TraceData*);
68 
69  virtual void saveProperties(KConfigGroup &);
70  virtual void readProperties(const KConfigGroup &);
71 
72  void createActions();
73  void createDocks();
74 
75  ProfileContext::Type groupType() { return _groupType; }
76  EventType* eventType() { return _eventType; }
77  EventType* eventType2() { return _eventType2; }
78  TracePartList activeParts() { return _activeParts; }
79  TracePartList hiddenParts() { return _hiddenParts; }
80 
81  // current config
82  bool showPercentage() const { return _showPercentage; }
83  bool showExpanded() const { return _showExpanded; }
84  bool showCycles() const { return _showCycles; }
85 
86  /* convenience functions for often used context menu items */
87  void addEventTypeMenu(QMenu*,bool);
88  void addGoMenu(QMenu*);
89 
90  // Logger overwrites: notifications for file loading
91  virtual void loadStart(const QString& filename);
92  virtual void loadProgress(int progress); // 0 - 100
93  virtual void loadWarning(int line, const QString& msg);
94  virtual void loadError(int line, const QString& msg);
95  virtual void loadFinished(const QString& msg); // msg could be error
96 
97 public slots:
98  void load();
99  void load(const KUrl&);
100  void load(QString);
101  void add();
102  void add(const KUrl&);
103  void add(QString);
104 
105  // for quickly showing the main window...
106  void loadDelayed(QString);
107  void loadDelayed(QStringList);
108 
109  void reload();
110  void exportGraph();
111  void newWindow();
112  void configure();
113  void querySlot();
114  void dummySlot();
115 
116  // layouts
117  void layoutDuplicate();
118  void layoutRemove();
119  void layoutNext();
120  void layoutPrevious();
121  void layoutSave();
122  void layoutRestore();
123  void updateLayoutActions();
124 
125  void updateStatusBar();
126  void eventTypeSelected(const QString&);
127  void eventType2Selected(const QString&);
128  void groupTypeSelected(int);
129  void splitSlot();
130  void splitDirSlot();
131  void configureToolbars();
132  void configureKeys();
133  bool queryClose();
134  void togglePartDock();
135  void toggleStackDock();
136  void toggleFunctionDock();
137  void toggleDumpDock();
138  void toggleStatusBar();
139  void partVisibilityChanged(bool);
140  void dumpVisibilityChanged(bool);
141  void stackVisibilityChanged(bool);
142  void functionVisibilityChanged(bool);
143  void togglePercentage();
144  void setPercentage(bool);
145  void setAbsoluteCost();
146  void setRelativeCost();
147  void toggleExpanded();
148  void toggleCycles();
149  void toggleHideTemplates();
150  void forceTrace();
151  void forwardAboutToShow();
152  void forwardTriggered(QAction*);
153  void backAboutToShow();
154  void backTriggered(QAction*);
155  void upAboutToShow();
156  void upTriggered(QAction*);
157 
158  bool setEventType(EventType*);
159  bool setEventType2(EventType*);
160  bool setEventType(QString);
161  bool setEventType2(QString);
162  bool setEventType(QAction*);
163  bool setEventType2(QAction*);
164  bool setGroupType(ProfileContext::Type);
165  bool setGroupType(QString);
166  bool setGroup(TraceCostItem*);
167  bool setGroup(QString);
168  bool setFunction(TraceFunction*);
169  bool setFunction(QString);
170  void activePartsChangedSlot(const TracePartList& list);
171  void partsHideSelectedSlot();
172  void partsUnhideAllSlot();
173 
174  /* These go back to mainloop first by using a timer.
175  * So they can be called from event handlers that
176  * are not allowed to delete list entries.
177  */
178  void setEventTypeDelayed(EventType*);
179  void setEventType2Delayed(EventType*);
180  void setGroupTypeDelayed(ProfileContext::Type);
181  void setGroupDelayed(TraceCostItem*);
182  void setTraceItemDelayed(CostItem*);
183  void partsHideSelectedSlotDelayed();
184  void partsUnhideAllSlotDelayed();
185  void goBack();
186  void goForward();
187  void goUp();
188  void setDirectionDelayed(TraceItemView::Direction);
189 
190  /* SingleShot Slots (without parameters) for the delayed versions */
191  void setEventTypeDelayed();
192  void setEventType2Delayed();
193  void setGroupTypeDelayed();
194  void setGroupDelayed();
195  void setTraceItemDelayed();
196  void loadTraceDelayed();
197  void setDirectionDelayed();
198 
199  // configuration has changed
200  void configChanged();
201 
202  //void refresh();
203  void slotShowTipOnStart();
204  void slotShowTip();
205 
206  // progress in status bar, empty message disables progress display
207  void showStatus(const QString& msg, int progress);
208  void showMessage(const QString&, int msec);
209 
210  // for running callgrind_control in the background
211  void ccReadOutput();
212  void ccError(QProcess::ProcessError);
213  void ccExit(int,QProcess::ExitStatus);
214 
215 private:
216  void resetState();
217  void createLayoutActions();
218  void createMiscActions();
219  void setupMainWidget(MainWidget*);
220  void setupPartSelection(PartSelection*);
221  void restoreCurrentState(const QString& postfix);
222  void saveCurrentState(const QString& postfix);
223  void saveTraceSettings();
224  QString traceKey();
225  void restoreTraceTypes();
226  void restoreTraceSettings();
227  void updateViewsOnChange(int);
230  bool openDataFile(const QString& file);
231 
232  KStatusBar* _statusbar;
233  QLabel* _statusLabel;
234  KRecentFilesAction* _openRecent;
235  bool _twoMainWidgets;
236  Qt::Orientation _spOrientation;
237 
238  MultiView* _multiView;
239  FunctionSelection* _functionSelection;
240  DumpSelection* _dumpSelection;
241  PartSelection* _partSelection;
242  StackSelection* _stackSelection;
243  QLineEdit* queryLineEdit;
244 
245  QDockWidget *_partDock, *_stackDock, *_functionDock, *_dumpDock;
246  bool _forcePartDock;
247 
248  KSelectAction *_saCost, *_saCost2, *saGroup;
249  KToggleAction *_partDockShown, *_stackDockShown;
250  KToggleAction *_functionDockShown, *_dumpDockShown;
251  KToggleAction *_taPercentage, *_taExpanded, *_taCycles, *_taHideTemplates;
252  KToggleAction *_taDump, *_taSplit, *_taSplitDir;
253  KToolBarPopupAction *_paForward, *_paBack, *_paUp;
254 
255  TraceFunction* _function;
256  const QObject* _lastSender;
257 
258  // trace data shown in this window
259  TraceData* _data;
260  // subcost types used for visualization
261  EventType* _eventType;
262  EventType* _eventType2;
263  // grouping of function list
264  ProfileContext::Type _groupType;
265  // selected group
266  TraceCostItem* _group;
267  // selected parts
268  TracePartList _activeParts;
269  // hidden parts
270  TracePartList _hiddenParts;
271  // layouts
272  int _layoutCurrent, _layoutCount;
273 
274  // for delayed slots
275  EventType* _eventTypeDelayed;
276  EventType* _eventType2Delayed;
277  ProfileContext::Type _groupTypeDelayed;
278  TraceCostItem* _groupDelayed;
279  CostItem* _traceItemDelayed;
280  QStringList _loadFilesDelayed;
281  TraceItemView::Direction _directionDelayed;
282 
283  // for status progress display
284  QString _progressMsg;
285  QTime _progressStart;
286  QProgressBar* _progressBar;
287 
288  // toplevel configuration options
289  bool _showPercentage, _showExpanded, _showCycles, _hideTemplates;
290 
291  // for running callgrind_control in the background
292  QProcess* _ccProcess;
293  QString _ccOutput;
294 };
295 
296 #endif
Logger
Definition: logger.h:32
TopLevel::configureKeys
void configureKeys()
Definition: toplevel.cpp:897
TopLevel::setDirectionDelayed
void setDirectionDelayed()
Definition: toplevel.cpp:1349
TopLevel::saveProperties
virtual void saveProperties(KConfigGroup &)
Definition: toplevel.cpp:358
QProgressBar
TopLevel::~TopLevel
~TopLevel()
Definition: toplevel.cpp:352
TopLevel::exportGraph
void exportGraph()
Definition: toplevel.cpp:1066
TopLevel::eventType2
EventType * eventType2()
Definition: toplevel.h:77
TopLevel::setRelativeCost
void setRelativeCost()
Definition: toplevel.cpp:793
TopLevel::backAboutToShow
void backAboutToShow()
Definition: toplevel.cpp:2146
PartSelection
Definition: partselection.h:38
TopLevel::load
void load()
Definition: toplevel.cpp:921
TopLevel::toggleHideTemplates
void toggleHideTemplates()
Definition: toplevel.cpp:850
TopLevel::goUp
void goUp()
Definition: toplevel.cpp:1627
TopLevel::setEventType2Delayed
void setEventType2Delayed()
Definition: toplevel.cpp:1310
QDockWidget
TopLevel::toggleFunctionDock
void toggleFunctionDock()
Definition: toplevel.cpp:775
TopLevel::goForward
void goForward()
Definition: toplevel.cpp:1622
TopLevel::add
void add()
Definition: toplevel.cpp:978
TopLevel::setGroupDelayed
void setGroupDelayed()
Definition: toplevel.cpp:1338
TopLevel::queryClose
bool queryClose()
Definition: toplevel.cpp:1880
TopLevel::forwardTriggered
void forwardTriggered(QAction *)
Definition: toplevel.cpp:2216
TopLevel::slotShowTipOnStart
void slotShowTipOnStart()
Definition: toplevel.cpp:1941
TraceFunction
A traced function.
Definition: tracedata.h:1122
TraceCostItem
Definition: tracedata.h:980
TopLevel::loadError
virtual void loadError(int line, const QString &msg)
Definition: toplevel.cpp:2348
TopLevel::ccReadOutput
void ccReadOutput()
Definition: toplevel.cpp:2059
CostItem
Base class for cost items.
Definition: costitem.h:37
TopLevel::setEventType2
bool setEventType2(EventType *)
Definition: toplevel.cpp:1144
TopLevel::activePartsChangedSlot
void activePartsChangedSlot(const TracePartList &list)
Definition: toplevel.cpp:1953
TopLevel::partVisibilityChanged
void partVisibilityChanged(bool)
Definition: toplevel.cpp:863
traceitemview.h
TopLevel::showMessage
void showMessage(const QString &, int msec)
Definition: toplevel.cpp:2273
TopLevel::querySlot
void querySlot()
Definition: toplevel.cpp:892
TopLevel::toggleStatusBar
void toggleStatusBar()
Definition: toplevel.cpp:741
QTime
TopLevel::loadProgress
virtual void loadProgress(int progress)
Definition: toplevel.cpp:2343
TopLevel::dummySlot
void dummySlot()
Definition: toplevel.cpp:1949
TopLevel
Definition: toplevel.h:58
TopLevel::backTriggered
void backTriggered(QAction *)
Definition: toplevel.cpp:2233
EventType
A cost type, e.g.
Definition: eventtype.h:43
TopLevel::stackVisibilityChanged
void stackVisibilityChanged(bool)
Definition: toplevel.cpp:868
TopLevel::functionVisibilityChanged
void functionVisibilityChanged(bool)
Definition: toplevel.cpp:884
DumpSelection
Definition: dumpselection.h:34
TopLevel::data
TraceData * data()
Definition: toplevel.h:66
TopLevel::configure
void configure()
Definition: toplevel.cpp:1868
TopLevel::loadWarning
virtual void loadWarning(int line, const QString &msg)
Definition: toplevel.cpp:2353
TopLevel::newWindow
void newWindow()
Definition: toplevel.cpp:914
TopLevel::upTriggered
void upTriggered(QAction *)
Definition: toplevel.cpp:2250
tracedata.h
toplevelbase.h
TopLevel::setFunction
bool setFunction(TraceFunction *)
Definition: toplevel.cpp:1259
TopLevel::setTraceItemDelayed
void setTraceItemDelayed()
Definition: toplevel.cpp:1397
MultiView
Definition: multiview.h:36
KXmlGuiWindow
TopLevel::togglePartDock
void togglePartDock()
Definition: toplevel.cpp:749
TopLevel::addEventTypeMenu
void addEventTypeMenu(QMenu *, bool)
Definition: toplevel.cpp:1519
QProcess
QObject
StackSelection
Definition: stackselection.h:38
TopLevel::setGroupTypeDelayed
void setGroupTypeDelayed()
Definition: toplevel.cpp:1321
TopLevel::configChanged
void configChanged()
Definition: toplevel.cpp:1929
TopLevelBase
Definition: toplevelbase.h:34
TopLevel::updateLayoutActions
void updateLayoutActions()
Definition: toplevel.cpp:1813
TopLevel::partsUnhideAllSlotDelayed
void partsUnhideAllSlotDelayed()
Definition: toplevel.cpp:2002
TopLevel::eventTypeSelected
void eventTypeSelected(const QString &)
Definition: toplevel.cpp:1106
TopLevel::layoutDuplicate
void layoutDuplicate()
Definition: toplevel.cpp:1714
TopLevel::updateStatusBar
void updateStatusBar()
Definition: toplevel.cpp:1830
QString
QList< TracePart * >
TopLevel::addGoMenu
void addGoMenu(QMenu *)
Definition: toplevel.cpp:1610
TopLevel::togglePercentage
void togglePercentage()
Definition: toplevel.cpp:783
FunctionSelection
Definition: functionselection.h:46
TopLevel::toggleCycles
void toggleCycles()
Definition: toplevel.cpp:832
TopLevel::showCycles
bool showCycles() const
Definition: toplevel.h:84
TopLevel::showExpanded
bool showExpanded() const
Definition: toplevel.h:83
QStringList
TopLevel::toggleDumpDock
void toggleDumpDock()
Definition: toplevel.cpp:765
TopLevel::createDocks
void createDocks()
Definition: toplevel.cpp:265
TopLevel::layoutRemove
void layoutRemove()
Definition: toplevel.cpp:1727
TopLevel::partsHideSelectedSlotDelayed
void partsHideSelectedSlotDelayed()
Definition: toplevel.cpp:1971
QMenu
TopLevel::setAbsoluteCost
void setAbsoluteCost()
Definition: toplevel.cpp:788
TopLevel::splitSlot
void splitSlot()
Definition: toplevel.cpp:1907
TopLevel::forwardAboutToShow
void forwardAboutToShow()
Definition: toplevel.cpp:2109
TopLevel::layoutNext
void layoutNext()
Definition: toplevel.cpp:1742
TopLevel::partsHideSelectedSlot
void partsHideSelectedSlot()
Definition: toplevel.cpp:1978
TopLevel::showStatus
void showStatus(const QString &msg, int progress)
Definition: toplevel.cpp:2279
TopLevel::goBack
void goBack()
Definition: toplevel.cpp:1617
TopLevel::groupTypeSelected
void groupTypeSelected(int)
Definition: toplevel.cpp:1166
TopLevel::showPercentage
bool showPercentage() const
Definition: toplevel.h:82
TopLevel::ccError
void ccError(QProcess::ProcessError)
Definition: toplevel.cpp:2071
TopLevel::slotShowTip
void slotShowTip()
Definition: toplevel.cpp:1945
TopLevel::layoutPrevious
void layoutPrevious()
Definition: toplevel.cpp:1758
TopLevel::createActions
void createActions()
Definition: toplevel.cpp:735
TopLevel::partsUnhideAllSlot
void partsUnhideAllSlot()
Definition: toplevel.cpp:2008
TraceItemView::Direction
Direction
Definition: traceitemview.h:90
logger.h
ProfileContext::Type
Type
Definition: context.h:36
QAction
TopLevel::layoutSave
void layoutSave()
Definition: toplevel.cpp:1774
TopLevel::eventType
EventType * eventType()
Definition: toplevel.h:76
TopLevel::eventType2Selected
void eventType2Selected(const QString &)
Definition: toplevel.cpp:1114
TopLevel::loadFinished
virtual void loadFinished(const QString &msg)
Definition: toplevel.cpp:2335
TopLevel::ccExit
void ccExit(int, QProcess::ExitStatus)
Definition: toplevel.cpp:2087
TopLevel::groupType
ProfileContext::Type groupType()
Definition: toplevel.h:75
TopLevel::configureToolbars
void configureToolbars()
Definition: toplevel.cpp:903
TopLevel::toggleExpanded
void toggleExpanded()
Definition: toplevel.cpp:819
TopLevel::upAboutToShow
void upAboutToShow()
Definition: toplevel.cpp:2183
TopLevel::hiddenParts
TracePartList hiddenParts()
Definition: toplevel.h:79
TopLevel::reload
void reload()
Definition: toplevel.cpp:1054
TopLevel::loadDelayed
void loadDelayed(QString)
Definition: toplevel.cpp:1019
TopLevel::setEventTypeDelayed
void setEventTypeDelayed()
Definition: toplevel.cpp:1305
TopLevel::setEventType
bool setEventType(EventType *)
Definition: toplevel.cpp:1122
QLineEdit
TopLevel::loadTraceDelayed
void loadTraceDelayed()
Definition: toplevel.cpp:1031
TopLevel::setPercentage
void setPercentage(bool)
Definition: toplevel.cpp:805
TopLevel::setData
void setData(TraceData *)
A TraceData object cannot be viewed many times in different toplevel windows.
Definition: toplevel.cpp:1435
TraceData
This class holds profiling data of multiple tracefiles generated with cachegrind on one command...
Definition: tracedata.h:1363
TopLevel::layoutRestore
void layoutRestore()
Definition: toplevel.cpp:1795
TopLevel::setGroupType
bool setGroupType(ProfileContext::Type)
Definition: toplevel.cpp:1197
TopLevel::toggleStackDock
void toggleStackDock()
Definition: toplevel.cpp:757
QLabel
TopLevel::forceTrace
void forceTrace()
Definition: toplevel.cpp:2020
TopLevel::setGroup
bool setGroup(TraceCostItem *)
Definition: toplevel.cpp:1238
TopLevel::splitDirSlot
void splitDirSlot()
Definition: toplevel.cpp:1920
TopLevel::TopLevel
TopLevel()
Definition: toplevel.cpp:82
TopLevel::readProperties
virtual void readProperties(const KConfigGroup &)
Definition: toplevel.cpp:364
TopLevel::dumpVisibilityChanged
void dumpVisibilityChanged(bool)
Definition: toplevel.cpp:876
TopLevel::loadStart
virtual void loadStart(const QString &filename)
Definition: toplevel.cpp:2329
TopLevel::activeParts
TracePartList activeParts()
Definition: toplevel.h:78
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:39:50 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcachegrind

Skip menu "kcachegrind"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal