summaryrefslogtreecommitdiffstats
path: root/kxsldbg/kxsldbgpart/xsldbgcallstackimpl.cpp
blob: 5592e4e6642a47b40a26e88e1d5ef03e6bfb4cce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*************************************************************************** 
                          xsldbgcallstackimpl.cpp  -  description 
                             ------------------- 
    begin                : Wed Jan 16 2002 
    copyright           : (C) 2002 by Keith lsdale 
    email                : k_isdale@tpg.com.au 
 ***************************************************************************/ 
 
/*************************************************************************** 
 *                                                                         * 
 *   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 <qlistview.h> 
#include <qlineedit.h> 
 
#include "xsldbgdebugger.h" 
#include "xsldbgcallstackimpl.h" 
#include "xsldbggloballistitem.h" /* reuse global list item variable as a template list item */ 
 
XsldbgCallStackImpl::XsldbgCallStackImpl(XsldbgDebugger *debugger, 
	QWidget *parent /*=0*/, const char *name /*=0*/) 
		:  XsldbgCallStack(parent, name), XsldbgDialogBase() 
{	 
	this->debugger = debugger; 
	 
	connect(debugger, SIGNAL(callStackItem(QString /* templateName*/, QString /* fileName */, int /* lineNumber */)), 
		this, SLOT(slotProcCallStackItem(QString /* templateName*/, QString /* fileName */, int /* lineNumber */))); 
	connect( callStackListView,  SIGNAL(selectionChanged(QListViewItem *)), 
						this, SLOT(selectionChanged(QListViewItem*))); 
						 
	show(); 
	refresh(); 
} 
 
XsldbgCallStackImpl::~XsldbgCallStackImpl(){ 
    debugger = 0L; 
} 
 
void XsldbgCallStackImpl::slotProcCallStackItem(QString  templateName, QString  fileName , int  lineNumber ) 
{ 
	static int frameNo =0; 
	if (templateName.isNull()){ 
		  callStackListView->clear(); 
		  frameNo = 0;	  	 
	}else{ 
		/* each stack entry will have a FRAME# prefix */ 
		callStackListView->insertItem(new XsldbgGlobalListItem(callStackListView, 
																					fileName, lineNumber, templateName.prepend(QString::number(frameNo++)+ "# "))); 
	} 
} 
 
 
void XsldbgCallStackImpl::selectionChanged(QListViewItem *item) 
{ 
	XsldbgGlobalListItem *callStackItem = dynamic_cast<XsldbgGlobalListItem*>(item); 
	if (callStackItem){ 
		debugger->gotoLine(callStackItem->getFileName(), callStackItem->getLineNumber());	 
	} 
} 
 
void XsldbgCallStackImpl::refresh() 
{ 
	debugger->fakeInput("where", true) ; 
} 
 

#include "xsldbgcallstackimpl.moc"