a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/* $Id$ */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** @file
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * VBox Debugger GUI - The Manager.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2013 Oracle Corporation
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * available from http://www.virtualbox.org. This file is free software;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * General Public License (GPL) as published by the Free Software
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#ifndef ___Debugger_VBoxDbgGui_h
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define ___Debugger_VBoxDbgGui_h
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync// VirtualBox COM interfaces declarations (generated header)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#ifdef VBOX_WITH_XPCOM
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync# include <VirtualBox_XPCOM.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync# include <VirtualBox.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#endif
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include "VBoxDbgStatsQt4.h"
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include "VBoxDbgConsole.h"
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * The Debugger GUI manager class.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * It's job is to provide a C callable external interface and manage the
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * windows and bit making up the debugger GUI.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncclass VBoxDbgGui : public QObject
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync{
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync Q_OBJECT;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncpublic:
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Create a default VBoxDbgGui object.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync VBoxDbgGui();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Initializes a VBoxDbgGui object by ISession.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @returns VBox status code.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param pSession VBox Session object.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int init(ISession *pSession);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Initializes a VBoxDbgGui object by VM handle.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @returns VBox status code.
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync * @param pUVM The user mode VM handle. The caller's reference will be
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync * consumed on success.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync int init(PUVM pUVM);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Destroys the VBoxDbgGui object.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync virtual ~VBoxDbgGui();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Sets the parent widget.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param pParent New parent widget.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @remarks This only affects new windows.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void setParent(QWidget *pParent);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Sets the menu object.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param pMenu New menu object.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @remarks This only affects new menu additions.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void setMenu(QMenu *pMenu);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Show the default statistics window, creating it if necessary.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @returns VBox status code.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int showStatistics();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Repositions and resizes (optionally) the statistics to its defaults
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param fResize If set (default) the size of window is also changed.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void repositionStatistics(bool fResize = true);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Show the console window (aka. command line), creating it if necessary.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @returns VBox status code.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int showConsole();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Repositions and resizes (optionally) the console to its defaults
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param fResize If set (default) the size of window is also changed.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void repositionConsole(bool fResize = true);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Update the desktop size.
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync * This is called whenever the reference window changes position.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void updateDesktopSize();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Notifies the debugger GUI that the console window (or whatever) has changed
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * size or position.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param x The x-coordinate of the window the debugger is relative to.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param y The y-coordinate of the window the debugger is relative to.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param cx The width of the window the debugger is relative to.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param cy The height of the window the debugger is relative to.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void adjustRelativePos(int x, int y, unsigned cx, unsigned cy);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync * Gets the user mode VM handle.
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync * @returns The UVM handle.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync PUVM getUvmHandle() const
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync return m_pUVM;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncprotected slots:
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Notify that a child object (i.e. a window is begin destroyed).
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param pObj The object which is being destroyed.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync void notifyChildDestroyed(QObject *pObj);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncprotected:
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The debugger statistics. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync VBoxDbgStats *m_pDbgStats;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The debugger console (aka. command line). */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync VBoxDbgConsole *m_pDbgConsole;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The VirtualBox session. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync ISession *m_pSession;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The VirtualBox console. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync IConsole *m_pConsole;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The VirtualBox Machine Debugger. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync IMachineDebugger *m_pMachineDebugger;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The VirtualBox Machine. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync IMachine *m_pMachine;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The VM instance. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync PVM m_pVM;
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync /** The user mode VM handle. */
021c939a9e3f688c0c3bbd759354be906bb2dcabvboxsync PUVM m_pUVM;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The parent widget. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync QWidget *m_pParent;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The menu object for the 'debug' menu. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync QMenu *m_pMenu;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The x-coordinate of the window we're relative to. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int m_x;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The y-coordinate of the window we're relative to. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int m_y;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The width of the window we're relative to. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync unsigned m_cx;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The height of the window we're relative to. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync unsigned m_cy;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** The x-coordinate of the desktop. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int m_xDesktop;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** The y-coordinate of the desktop. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int m_yDesktop;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The size of the desktop. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync unsigned m_cxDesktop;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** The size of the desktop. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync unsigned m_cyDesktop;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync};
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#endif
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync