VBoxConsoleWnd.cpp revision 8d418a0564b3f2c13bd34a1e56ae01694a3c9a7f
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * VBox frontends: Qt GUI ("VirtualBox"):
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * VBoxConsoleWnd class implementation
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Copyright (C) 2006-2008 Sun Microsystems, Inc.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * available from http://www.virtualbox.org. This file is free software;
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * General Public License (GPL) as published by the Free Software
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * additional information or have any questions.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/* Qt includes */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync# include <ApplicationServices/ApplicationServices.h>
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Qt includes */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** class StatusTipEvent
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * The StatusTipEvent class is an auxiliary QEvent class
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * for carrying statusTip text of non-QAction menu item's.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * This event is posted then the menu item is highlighted but
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * processed later in VBoxConsoleWnd::event() handler to
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * avoid statusBar messaging collisions.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsyncclass VBoxAdditionsDownloader : public VBoxDownloaderWgt
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync VBoxAdditionsDownloader (const QString &aSource, const QString &aTarget, QAction *aAction)
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync mProgressBar->setToolTip (tr ("Downloading the VirtualBox Guest Additions "
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync "CD image from <nobr><b>%1</b>...</nobr>")
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mCancelButton->setToolTip (tr ("Cancel the VirtualBox Guest "
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync "Additions CD image download"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Serialize the incoming buffer into the .iso image. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync while (true)
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync if (vboxProblem().confirmMountAdditions (mSource.toString(),
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync vboxGlobal().consoleWnd().installGuestAdditionsFrom (mTarget);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync vboxProblem().message (window(), VBoxProblemReporter::Error,
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync "<nobr><b>%1</b>.</nobr></p>")
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync QString target = vboxGlobal().getExistingDirectory (
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync tr ("Select folder to save Guest Additions image to"), true);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mTarget = QDir (target).absoluteFilePath (QFileInfo (mTarget).fileName());
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync QStatusBar *sb = qobject_cast <QStatusBar*> (parent());
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync return vboxProblem().confirmDownloadAdditions (mSource.toString(),
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync return vboxProblem().cannotDownloadGuestAdditions (mSource.toString(), aError);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync/** \class VBoxConsoleWnd
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * The VBoxConsoleWnd class is a VM console window, one of two main VBox
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * GUI windows.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * This window appears when the user starts the virtual machine. It
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * contains the VBoxConsoleView widget that acts as a console of the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * running virtual machine.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Constructs the VM console window.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * @param aSelf pointer to a variable where to store |this| right after
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * this object's constructor is called (necessary to avoid
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * recursion in VBoxGlobal::consoleWnd())
daa94352f51be2329ac8660f70396e03a7cb983bvboxsyncVBoxConsoleWnd (VBoxConsoleWnd **aSelf, QWidget* aParent,
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync : QIWithRetranslateUI2<QMainWindow> (aParent, aFlags)
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* The default application icon (will change to the VM-specific icon in
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * openView()). On Win32, it's built-in to the executable. On Mac OS X the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * icon referenced in info.plist is used. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* ensure status bar is created */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ///// Actions ///////////////////////////////////////////////////////////
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* a group for all actions that are enabled only when the VM is running.
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * Note that only actions whose enabled state depends exclusively on the
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * execution state of the VM are added to this group. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* a group for all actions that are enabled when the VM is running or
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * paused. Note that only actions whose enabled state depends exclusively
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync * on the execution state of the VM are added to this group. */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* VM menu actions */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/fullscreen_on_16px.png", ":/fullscreen_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/fullscreen_on_disabled_16px.png", ":/fullscreen_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/seamless_on_disabled_16px.png", ":/seamless_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmAutoresizeGuestAction = new QAction (mRunningActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/auto_resize_on_on_16px.png", ":/auto_resize_on_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/auto_resize_on_on_disabled_16px.png", ":/auto_resize_on_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/adjust_win_size_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmTypeCADAction->setIcon (VBoxGlobal::iconSet (":/hostkey_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/hostkey_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmTypeCABSAction->setIcon (VBoxGlobal::iconSet (":/hostkey_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/hostkey_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmResetAction->setIcon (VBoxGlobal::iconSet (":/reset_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/reset_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* checkbox over the pause icon doesn't look nice */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/pause_on_disabled_16px.png", ":/pause_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync VBoxGlobal::iconSet (":/pause_16px.png", ":/pause_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmACPIShutdownAction = new QAction (mRunningActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync VBoxGlobal::iconSet (":/acpi_16px.png", ":/acpi_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmCloseAction->setIcon (VBoxGlobal::iconSet (":/exit_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmTakeSnapshotAction = new QAction (mRunningOrPausedActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmTakeSnapshotAction->setIcon (VBoxGlobal::iconSet (
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/take_snapshot_16px.png", ":/take_snapshot_dis_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmShowInformationDlgAction->setIcon (VBoxGlobal::iconSet (
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/session_info_16px.png", ":/session_info_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/mouse_can_seamless_on_16px.png", ":/mouse_can_seamless_16px.png",
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/mouse_can_seamless_on_disabled_16px.png", ":/mouse_can_seamless_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Devices menu actions */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountFloppyImageAction = new QAction (mRunningOrPausedActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/fd_unmount_dis_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountDVDImageAction = new QAction (mRunningOrPausedActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/cd_unmount_dis_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesSFDialogAction = new QAction (mRunningOrPausedActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/shared_folder_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesSwitchVrdpAction = new QAction (mRunningOrPausedActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/vrdp_on_disabled_16px.png", ":/vrdp_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesInstallGuestToolsAction = new QAction (mRunningActions);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ":/guesttools_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync if (vboxGlobal().getDebuggerModule()== NIL_RTLDRMOD)
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Help menu actions */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ///// Menubar ///////////////////////////////////////////////////////////
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Machine submenu */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* dynamic & status line popup menus */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmAutoresizeMenu = new VBoxSwitchMenu (mVMMenu, mVmAutoresizeGuestAction);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVmDisMouseIntegrMenu = new VBoxSwitchMenu (mVMMenu, mVmDisableMouseIntegrAction,
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync true /* inverted toggle state */);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Devices submenu */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* dynamic & statusline popup menus */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountDVDMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/cd_16px.png", ":/cd_disabled_16px.png"), QString::null);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMenu->addAction (mDevicesUnmountDVDAction);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountFloppyMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/fd_16px.png", ":/fd_disabled_16px.png"), QString::null);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMenu->addAction (mDevicesUnmountFloppyAction);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesNetworkMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/nw_16px.png", ":/nw_disabled_16px.png"), QString::null);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesUSBMenu->setIcon (VBoxGlobal::iconSet (":/usb_16px.png", ":/usb_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesUSBMenuSeparator = mDevicesMenu->addSeparator();
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* see showIndicatorContextMenu for a description of mDevicesSFMenu */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* mDevicesSFMenu = mDevicesMenu->addMenu (QString::null); */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesSFMenuSeparator = mDevicesMenu->addSeparator();
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Currently not needed cause there is no state icon in the statusbar */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* mDevicesVRDPMenu = new VBoxSwitchMenu (mDevicesMenu, mDevicesSwitchVrdpAction); */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMenu->addAction (mDevicesSwitchVrdpAction);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesVRDPMenuSeparator = mDevicesMenu->addSeparator();
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMenu->addAction (mDevicesInstallGuestToolsAction);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* reset the "context menu" flag */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountFloppyMenu->menuAction()->setData (false);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mDevicesMountDVDMenu->menuAction()->setData (false);
abe1b07126bb9f5644b2ad8424534c2d1e97a66cvboxsync /* Debug popup menu */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* Help submenu */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync ///// Status bar ////////////////////////////////////////////////////////
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync QHBoxLayout *indicatorBoxHLayout = new QHBoxLayout (indicatorBox);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync VBoxGlobal::setLayoutMargin (indicatorBoxHLayout, 0);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* i/o devices */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hd_light = new QIStateIndicator (KDeviceActivity_Idle);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hd_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/hd_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hd_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/hd_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hd_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/hd_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hd_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/hd_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync cd_light = new QIStateIndicator (KDeviceActivity_Idle);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync cd_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/cd_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync cd_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/cd_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync cd_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/cd_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync cd_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/cd_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light = new QIStateIndicator (KDeviceActivity_Idle);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/fd_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/fd_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/fd_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/fd_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync fd_light->hide(); /* This LED hidden due to little importance (defect #3630) */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync net_light = new QIStateIndicator (KDeviceActivity_Idle);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync net_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/nw_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync net_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/nw_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync net_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/nw_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync net_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/nw_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync usb_light = new QIStateIndicator (KDeviceActivity_Idle);
abe1b07126bb9f5644b2ad8424534c2d1e97a66cvboxsync usb_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/usb_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync usb_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/usb_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync usb_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/usb_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync usb_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/usb_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync sf_light = new QIStateIndicator (KDeviceActivity_Idle);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync sf_light->setStateIcon (KDeviceActivity_Idle, QPixmap (":/shared_folder_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync sf_light->setStateIcon (KDeviceActivity_Reading, QPixmap (":/shared_folder_read_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync sf_light->setStateIcon (KDeviceActivity_Writing, QPixmap (":/shared_folder_write_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync sf_light->setStateIcon (KDeviceActivity_Null, QPixmap (":/shared_folder_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* virtualization */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVirtLed->setStateIcon (0, QPixmap (":/vtx_amdv_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mVirtLed->setStateIcon (1, QPixmap (":/vtx_amdv_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync separator->setFrameStyle (QFrame::VLine | QFrame::Sunken);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync#if 0 // do not show these indicators, information overload
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* vrdp state */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync vrdp_state = new QIStateIndicator (0, indicatorBox, "vrdp_state", Qt::WNoAutoErase);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync vrdp_state->setStateIcon (0, QPixmap (":/vrdp_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync vrdp_state->setStateIcon (1, QPixmap (":/vrdp_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* auto resize state */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync autoresize_state = new QIStateIndicator (1, indicatorBox, "autoresize_state", Qt::WNoAutoErase);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync autoresize_state->setStateIcon (0, QPixmap (":/auto_resize_off_disabled_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync autoresize_state->setStateIcon (1, QPixmap (":/auto_resize_off_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync autoresize_state->setStateIcon (2, QPixmap (":/auto_resize_on_disabled_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync autoresize_state->setStateIcon (3, QPixmap (":/auto_resize_on_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync /* mouse */
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync mouse_state->setStateIcon (0, QPixmap (":/mouse_disabled_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync mouse_state->setStateIcon (1, QPixmap (":/mouse_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync mouse_state->setStateIcon (2, QPixmap (":/mouse_seamless_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync mouse_state->setStateIcon (3, QPixmap (":/mouse_can_seamless_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync mouse_state->setStateIcon (4, QPixmap (":/mouse_can_seamless_uncaptured_16px.png"));
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync /* host key */
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync QHBoxLayout *hostkeyHBoxLayout = new QHBoxLayout (hostkey_hbox);
d90eec53c9dcaa0f3d1054e8734ed46875b9093avboxsync VBoxGlobal::setLayoutMargin (hostkeyHBoxLayout, 0);
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hostkey_state->setStateIcon (0, QPixmap (":/hostkey_16px.png"));
daa94352f51be2329ac8660f70396e03a7cb983bvboxsync hostkey_state->setStateIcon (1, QPixmap (":/hostkey_captured_16px.png"));
#if defined(Q_WS_X11)
connect (mVmDisableMouseIntegrAction, SIGNAL(toggled (bool)), this, SLOT(vmDisableMouseIntegr (bool)));
connect (mDevicesMountFloppyImageAction, SIGNAL(triggered()), this, SLOT(devicesMountFloppyImage()));
connect (mDevicesInstallGuestToolsAction, SIGNAL(triggered()), this, SLOT(devicesInstallGuestAdditions()));
connect (statusBar(), SIGNAL(messageChanged (const QString &)), this, SLOT(statusTipChanged (const QString &)));
connect (mDevicesMountFloppyMenu, SIGNAL(triggered(QAction *)), this, SLOT(captureFloppy(QAction *)));
connect (mDevicesNetworkMenu, SIGNAL(triggered(QAction *)), this, SLOT(activateNetworkMenu(QAction *)));
#ifdef Q_WS_MAC
#ifdef VBOX_WITH_DEBUGGER_GUI
if (mDbgMenu)
if (mDbgStatisticsAction)
if (mDbgLoggingAction)
#ifdef Q_WS_MAC
# ifdef VBOX_WITH_ICHAT_THEATER
closeView();
#ifdef VBOX_WITH_DEBUGGER_GUI
dbgDestroy();
if (console)
#ifdef Q_WS_MAC
if (!centralWidget())
centralWidget());
static_cast<QGridLayout*>(centralWidget()->layout())->addWidget(console, 1, 1, Qt::AlignVCenter | Qt::AlignHCenter);
#ifndef Q_WS_MAC
if (ok)
if (ok)
if (ok)
if (ok)
if (max)
show();
mIsFirstTimeStarted = true;
mIsAutoSaveMedia = false;
if (extendedMode)
#ifdef Q_WS_MAC
QString testStr = vboxGlobal().virtualBox().GetExtraData (VBoxDefs::GUI_RealtimeDockIconUpdateEnabled).toLower();
if (mIsFirstTimeStarted)
close();
no_auto_close = true;
if (saved)
close();
no_auto_close = false;
close();
toggleFullscreenMode (true, true);
#ifdef VBOX_WITH_DEBUGGER_GUI
if (desktop)
mIsOpenViewFinished = true;
#ifdef VBOX_WITH_UPDATE_REQUEST
if (!console)
delete console;
console = 0;
if ( console ) {
* This slot is called just after leaving the fullscreen/seamless mode,
if (mIsSeamless)
else if (mIsFullscreen)
#ifdef Q_WS_MAC
if (!mIsSeamless)
# ifdef QT_MAC_USE_COCOA
CGDisplayFade (mFadeToken, 0.5, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0.0, 0.0, 0.0, false);
if (aCenter)
#ifdef Q_WS_WIN
switch (e->type())
#ifdef VBOX_WITH_DEBUGGER_GUI
if (mIsWaitingModeResize)
mIsWaitingModeResize = false;
#ifdef VBOX_WITH_DEBUGGER_GUI
#ifdef Q_WS_MAC
if (mIsSeamless)
# ifdef QT_MAC_USE_COCOA
if (!console)
e->accept();
e->ignore();
e->accept();
e->ignore();
bool success = true;
if (!wasPaused)
if (success)
success = false;
bool wasShutdown = false;
no_auto_close = true;
success = true;
wasPaused = true;
if (!wasShutdown)
success = false;
success = true;
if (success)
if (success)
e->accept();
AssertFailed();
no_auto_close = false;
e->accept();
if (!success)
if (e->isAccepted())
#ifndef VBOX_GUI_SEPARATE_VM_PROCESS
hide();
#ifdef VBOX_WITH_DEBUGGER_GUI
dbgDestroy();
#if defined(Q_WS_X11)
#ifdef Q_WS_MAC
#ifdef VBOX_OSE
#ifdef Q_WS_MAC
qt_set_sequence_auto_mnemonic (false);
mVmAutoresizeGuestAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Auto-resize &Guest Display"),
mVmAdjustWindowAction->setText (VBoxGlobal::insertKeyToActionText (tr ("&Adjust Window Size"), "A"));
#if defined(Q_WS_X11)
#ifdef Q_WS_MAC
mVmShowInformationDlgAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Session I&nformation Dialog"),
#ifdef VBOX_WITH_DEBUGGER_GUI
if (mDbgStatisticsAction)
if (mDbgLoggingAction)
#ifdef VBOX_WITH_DEBUGGER_GUI
"<nobr><img src=:/mouse_can_seamless_16px.png/> MI is Off, pointer is captured</nobr><br>"
"<nobr><img src=:/mouse_can_seamless_uncaptured_16px.png/> MI is Off, pointer is not captured</nobr><br>"
"Note that the mouse integration feature requires Guest Additions to be installed in the guest OS."));
if (!console) return;
switch (state)
drvName :
case KDriveState_ImageMounted:
case KDriveState_NotMounted:
switch (state)
drvName :
case KDriveState_ImageMounted:
case KDriveState_NotMounted:
bool hasDisks = false;
hasDisks = true;
if (!hasDisks)
count++;
mVmDisableMouseIntegrAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Disable &Mouse Integration"),
mVmDisableMouseIntegrAction->setText (VBoxGlobal::insertKeyToActionText (tr ("Enable &Mouse Integration"),
if (!console) return;
vmPause (true);
close();
vmPause (false);
* guestBpp
* csession.GetMachine().GetMonitorCount() /**< @todo fix assumption that all screens have same resolution */
if (aSeamless)
if (aOn)
if (aOn)
if (!ok)
#ifdef Q_WS_MAC
if (!aSeamless)
# ifdef QT_MAC_USE_COCOA
CGDisplayFade (mFadeToken, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, true);
if (aSeamless)
if (aOn)
* fullscreen/seamless state to restore this minimum size before
if (aSeamless)
#ifdef Q_WS_WIN
if (w != centralWidget() &&
w != console &&
if (!w->isHidden())
w->hide();
#ifdef Q_WS_MAC
if (aSeamless)
# ifdef QT_MAC_USE_COCOA
clearMask();
mIsWaitingModeResize = true;
#ifdef Q_WS_MAC
# ifdef QT_MAC_USE_COCOA
status = InstallWindowEventHandler ((WindowPtr)winId(), DarwinRegionHandler, GetEventTypeCount (wCompositingEvent), &wCompositingEvent, &mCurrRegion, &mDarwinRegionEventHandlerRef);
status = InstallControlEventHandler (contentView, DarwinRegionHandler, GetEventTypeCount (drawEvent), &drawEvent, &contentView, NULL);
if (!mIsWaitingModeResize)
if (!wasHidden)
show();
if (wasHidden)
hide();
#ifdef Q_WS_MAC
if (console)
Q_UNUSED (e);
#ifdef Q_WS_MAC
# ifdef QT_MAC_USE_COCOA
if (aSeamless)
if (aOn)
#ifndef Q_WS_MAC
if (!ok)
if (!ok)
if (!console)
if (console)
if (isWindowMaximized())
showNormal();
if (console)
#if defined(Q_WS_X11)
if (console)
if (console)
if (console)
if (console)
if (console)
close();
if (!wasPaused)
int maxSnapShotIndex = 0;
vboxProblem().
if (!wasPaused)
if (console)
if (!console) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
if (!console) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
if (!console) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
if (!console) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
if (!console) return;
if (!console) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
#ifdef Q_WS_WIN
# if defined(VBOX_GUI_USE_QUARTZ2D)
#ifdef Q_WS_WIN
if (!console) return;
drvName :
if (!console) return;
drvName :
mWaitForStatusBarChange = true;
mWaitForStatusBarChange = false;
if (!console) return;
if (d.isNull()) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
if (!console) return;
if (d.isNull()) return;
if (mIsAutoSaveMedia)
m.SaveSettings();
if (!m.isOk())
* Switch the cable connected/disconnected for the selected network adapter
if (!console) return;
if (console) {
int st;
bool guruMeditation = false;
switch (state)
case KMachineState_Stuck:
guruMeditation = true;
case KMachineState_Paused:
case KMachineState_Running:
#ifdef Q_WS_X11
case KMachineState_Starting:
if (!no_auto_close)
tryClose();
if (guruMeditation)
#ifdef Q_WS_MAC
if (console)
bool aActive,
bool aSeamlessSupported,
bool aGraphicsSupported)
toggleFullscreenMode (true, true);
if (!aActive)
AllStuff);
if (widget)
close();
#ifdef VBOX_WITH_DEBUGGER_GUI
bool fEnabled = false;
bool fChecked = false;
fEnabled = true;
#ifdef VBOX_WITH_DEBUGGER_GUI
if (dbgCreated())
#ifdef VBOX_WITH_DEBUGGER_GUI
if (dbgCreated())
#ifdef VBOX_WITH_DEBUGGER_GUI
#ifdef VBOX_WITH_DEBUGGER_GUI
if (mDbgGui)
if (mDbgGui)
if (mDbgGui)
, mSettings (0)
setModal (true);
setSizeGripEnabled (true);