You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kdbg/kdbg/winstack.h

148 lines
4.2 KiB

/*
* Copyright Johannes Sixt
* This file is licensed under the GNU General Public License Version 2.
* See the file COPYING in the toplevel directory of the source directory.
*/
#ifndef WINSTACK_H
#define WINSTACK_H
#include <tqdialog.h>
#include <tqlineedit.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <tqpushbutton.h>
#include <tqtooltip.h>
#include <ktabwidget.h>
#include <list>
// forward declarations
class KDebugger;
class WinStack;
class SourceWindow;
class DisassembledCode;
struct DbgAddr;
class FindDialog : public TQDialog
{
Q_OBJECT
public:
FindDialog();
~FindDialog();
bool caseSensitive() const { return m_caseCheck.isChecked(); }
TQString searchText() const { return m_searchText.text(); }
virtual void done(int result);
TQLineEdit m_searchText;
TQCheckBox m_caseCheck;
TQPushButton m_buttonForward;
TQPushButton m_buttonBackward;
TQPushButton m_buttonClose;
signals:
void closed();
protected:
virtual void closeEvent(TQCloseEvent* ev);
TQVBoxLayout m_layout;
TQHBoxLayout m_buttons;
};
class ValueTip : public TQToolTip
{
public:
ValueTip(WinStack* parent);
virtual ~ValueTip() {} // TQt3's TQToolTip lacks virtual dtor!
virtual void maybeTip(const TQPoint& p);
void tip(const TQRect& r, const TQString& s) { TQToolTip::tip(r, s); }
};
class WinStack : public KTabWidget
{
Q_OBJECT
public:
WinStack(TQWidget* parent, const char* name);
virtual ~WinStack();
/**
* Slot activate also looks in this directory when the specified file is
* a relative path.
*/
void setExtraDirectory(const TQString& dir) { m_lastOpenDir = dir; }
void activateFile(const TQString& fileName);
bool activeLine(TQString& filename, int& lineNo);
bool activeLine(TQString& filename, int& lineNo, DbgAddr& address);
void maybeTip(const TQPoint& p);
bool hasWindows() const { return count() > 0; }
TQString activeFileName() const;
SourceWindow* activeWindow() const;
SourceWindow* windowAt(int i) const;
virtual TQSize sizeHint() const;
signals:
void toggleBreak(const TQString&, int, const DbgAddr&, bool);
void enadisBreak(const TQString&, int, const DbgAddr&);
void newFileLoaded();
void initiateValuePopup(const TQString&);
void disassemble(const TQString&, int);
void setTabWidth(int numChars);
void moveProgramCounter(const TQString&, int, const DbgAddr&);
public slots:
virtual void slotFindForward();
virtual void slotFindBackward();
virtual void activate(const TQString& filename, int lineNo, const DbgAddr& address);
void updatePC(const TQString& filename, int lineNo, const DbgAddr& address, int frameNo);
void reloadAllFiles();
void updateLineItems(const KDebugger* deb);
void slotSetTabWidth(int numChars);
void slotFileReload();
void slotViewFind();
void slotBrkptSet();
void slotBrkptSetTemp();
void slotBrkptEnable();
void slotMoveProgramCounter();
void slotClose();
// Displays the value tip at m_tipLocation
void slotShowValueTip(const TQString& tipText);
// Shows the disassembled code at the location given by file and lineNo
void slotDisassembled(const TQString& fileName, int lineNo,
const std::list<DisassembledCode>& disass);
// Updates line items after expanding/collapsing disassembled code
void slotExpandCollapse(int lineNo);
protected:
bool activatePath(TQString pathname, int lineNo, const DbgAddr& address);
virtual bool activateWindow(SourceWindow* fw, int lineNo, const DbgAddr& address); /* -1 doesnt change line */
virtual void contextMenuEvent(TQContextMenuEvent* e);
void setPC(bool set, const TQString& fileName, int lineNo,
const DbgAddr& address, int frameNo);
SourceWindow* findByFileName(const TQString& fileName) const;
TQString m_lastOpenDir; /* where user opened last file */
// program counter
TQString m_pcFile;
int m_pcLine; /* -1 if no PC */
TQString m_pcAddress; /* exact address of PC */
int m_pcFrame;
ValueTip m_valueTip;
TQRect m_tipLocation; /* where tip should appear */
int m_tabWidth; /* number of chars */
public:
// find dialog
FindDialog m_findDlg;
};
#endif // WINSTACK_H