VBoxDbgGui.h revision f71d7c0b05c9b18f7f88f2107119dedf76428a80
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos/* $Id$ */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos/** @file
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * VBox Debugger GUI - The Manager.
86d05410e0a25e2d622432ff2f9b3e22eec92237Alin Brici */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos/*
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Copyright (C) 2006-2007 Sun Microsystems, Inc.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * This file is part of VirtualBox Open Source Edition (OSE), as
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * available from http://www.virtualbox.org. This file is free software;
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * you can redistribute it and/or modify it under the terms of the GNU
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * General Public License (GPL) as published by the Free Software
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Foundation, in version 2 as it comes in the "COPYING" file of the
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Clara, CA 95054 USA or visit http://www.sun.com if you need
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * additional information or have any questions.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#ifndef ___Debugger_VBoxDbgGui_h
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#define ___Debugger_VBoxDbgGui_h
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos// VirtualBox COM interfaces declarations (generated header)
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#ifdef VBOX_WITH_XPCOM
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos# include <VirtualBox_XPCOM.h>
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#else
088fa5d9eaa83bf4b3d59a64c0519f42a143aaa9Alin Brici# include <VirtualBox.h>
088fa5d9eaa83bf4b3d59a64c0519f42a143aaa9Alin Brici#endif
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller#ifdef VBOXDBG_USE_QT4
e95ef6b1ae95c5684fc1b20063975a2cb29055b9Laszlo Hordos# include "VBoxDbgStatsQt4.h"
aa26d20912b59f80d1b06b9c0a34c2d4de507a4fLaszlo Hordos#else
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos# include "VBoxDbgStats.h"
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#endif
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#include "VBoxDbgConsole.h"
51c85743b9d73dedd60a0ecad2402c231f71e39dLaszlo Hordos
968a8ea42a7a90597e80bca047c0e8a70b3b5f5fLaszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos/**
51c85743b9d73dedd60a0ecad2402c231f71e39dLaszlo Hordos * The Debugger GUI manager class.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * It's job is to provide a C callable external interface and manage the
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * windows and bit making up the debugger GUI.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordosclass VBoxDbgGui : public QObject
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos{
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos Q_OBJECT;
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordospublic:
fe644a7302b3235c08aec5fd7992a329f2ee1364Laszlo Hordos /**
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Create a default VBoxDbgGui object.
51c85743b9d73dedd60a0ecad2402c231f71e39dLaszlo Hordos */
968a8ea42a7a90597e80bca047c0e8a70b3b5f5fLaszlo Hordos VBoxDbgGui();
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
86d05410e0a25e2d622432ff2f9b3e22eec92237Alin Brici /**
86d05410e0a25e2d622432ff2f9b3e22eec92237Alin Brici * Initializes a VBoxDbgGui object by ISession.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
86d05410e0a25e2d622432ff2f9b3e22eec92237Alin Brici * @returns VBox status code.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @param pSession VBox Session object.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
e95ef6b1ae95c5684fc1b20063975a2cb29055b9Laszlo Hordos int init(ISession *pSession);
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos /**
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller * Initializes a VBoxDbgGui object by VM handle.
968a8ea42a7a90597e80bca047c0e8a70b3b5f5fLaszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @returns VBox status code.
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller * @param pVM The VM handle.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller int init(PVM pVM);
a1f638677d6b70887a0eeeab4e30fd2d7dbb5e5eBrendan Mmiller
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos /**
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Destroys the VBoxDbgGui object.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos virtual ~VBoxDbgGui();
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
6e2a3debb126632908b48829c5a3f3823c1c60aaLaszlo Hordos /**
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Sets the parent widget.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @param pParent New parent widget.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @remarks This only affects new windows.
c0671d328e655a5b90ba22dcceb5d3ebc76839bbAndi Egloff */
c0671d328e655a5b90ba22dcceb5d3ebc76839bbAndi Egloff void setParent(QWidget *pParent);
c0671d328e655a5b90ba22dcceb5d3ebc76839bbAndi Egloff
c0671d328e655a5b90ba22dcceb5d3ebc76839bbAndi Egloff /**
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Sets the menu object.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos *
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @param pMenu New menu object.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * @remarks This only affects new menu additions.
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos */
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#ifdef VBOXDBG_USE_QT4
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos void setMenu(QMenu *pMenu);
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#else
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos void setMenu(QPopupMenu *pMenu);
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos#endif
c0671d328e655a5b90ba22dcceb5d3ebc76839bbAndi Egloff
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos /**
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos * Show the default statistics window, creating it if necessary.
*
* @returns VBox status code.
*/
int showStatistics();
/**
* Repositions and resizes (optionally) the statistics to its defaults
*
* @param fResize If set (default) the size of window is also changed.
*/
void repositionStatistics(bool fResize = true);
/**
* Show the console window (aka. command line), creating it if necessary.
*
* @returns VBox status code.
*/
int showConsole();
/**
* Repositions and resizes (optionally) the console to its defaults
*
* @param fResize If set (default) the size of window is also changed.
*/
void repositionConsole(bool fResize = true);
/**
* Update the desktop size.
* This is called whenever the reference window changes positition.
*/
void updateDesktopSize();
/**
* Notifies the debugger GUI that the console window (or whatever) has changed
* size or position.
*
* @param x The x-coordinate of the window the debugger is relative to.
* @param y The y-coordinate of the window the debugger is relative to.
* @param cx The width of the window the debugger is relative to.
* @param cy The height of the window the debugger is relative to.
*/
void adjustRelativePos(int x, int y, unsigned cx, unsigned cy);
/**
* Resizes a QWidget given the frame size.
*
* @param pWidget The widget to resize.
* @param cx The new frame height.
* @param cy The new frame width.
*/
static void resizeWidget(QWidget *pWidget, unsigned cx, unsigned cy);
protected slots:
/**
* Notify that a child object (i.e. a window is begin destroyed).
* @param pObj The object which is being destroyed.
*/
void notifyChildDestroyed(QObject *pObj);
protected:
/** The debugger statistics. */
VBoxDbgStats *m_pDbgStats;
/** The debugger console (aka. command line). */
VBoxDbgConsole *m_pDbgConsole;
/** The Virtual Box session. */
ISession *m_pSession;
/** The Virtual Box console. */
IConsole *m_pConsole;
/** The Virtual Box Machine Debugger. */
IMachineDebugger *m_pMachineDebugger;
/** The Virtual Box Machine. */
IMachine *m_pMachine;
/** The VM instance. */
PVM m_pVM;
/** The parent widget. */
QWidget *m_pParent;
/** The menu object for the 'debug' menu. */
#ifdef VBOXDBG_USE_QT4
QMenu *m_pMenu;
#else
QPopupMenu *m_pMenu;
#endif
/** The x-coordinate of the window we're relative to. */
int m_x;
/** The y-coordinate of the window we're relative to. */
int m_y;
/** The width of the window we're relative to. */
unsigned m_cx;
/** The height of the window we're relative to. */
unsigned m_cy;
/** The x-coordianate of the desktop. */
int m_xDesktop;
/** The y-coordianate of the desktop. */
int m_yDesktop;
/** The size of the desktop. */
unsigned m_cxDesktop;
/** The size of the desktop. */
unsigned m_cyDesktop;
};
#endif