VirtualBox

Changeset 71924 in vbox for trunk/src


Ignore:
Timestamp:
Apr 19, 2018 1:56:18 PM (7 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9049: Full and heavy cleanup for UINameAndSystemEditor, solve few dependencies and move the class to VBoxGlobal library.

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r71923 r71924  
    565565        src/widgets/UIMiniToolBar.h \
    566566        src/widgets/VBoxOSTypeSelectorButton.h \
    567         src/widgets/UINameAndSystemEditor.h \
    568567        src/widgets/UIWarningPane.h \
    569568        src/widgets/graphics/UIGraphicsButton.h \
     
    686685        src/widgets/UIMediumSizeEditor.h \
    687686        src/widgets/UIMenuBar.h \
     687        src/widgets/UINameAndSystemEditor.h \
    688688        src/widgets/UIPopupBox.h \
    689689        src/widgets/UIPopupPane.h \
     
    780780        src/widgets/UIMediumSizeEditor.h \
    781781        src/widgets/UIMenuBar.h \
     782        src/widgets/UINameAndSystemEditor.h \
    782783        src/widgets/UIPopupBox.h \
    783784        src/widgets/UIPopupPane.h \
     
    10581059        src/widgets/UIMiniToolBar.cpp \
    10591060        src/widgets/VBoxOSTypeSelectorButton.cpp \
    1060         src/widgets/UINameAndSystemEditor.cpp \
    10611061        src/widgets/UIWarningPane.cpp \
    10621062        src/widgets/graphics/UIGraphicsButton.cpp \
     
    12181218        src/widgets/UIMediumSizeEditor.cpp \
    12191219        src/widgets/UIMenuBar.cpp \
     1220        src/widgets/UINameAndSystemEditor.cpp \
    12201221        src/widgets/UIPopupBox.cpp \
    12211222        src/widgets/UIPopupPane.cpp \
     
    13381339        src/widgets/UIMediumSizeEditor.cpp \
    13391340        src/widgets/UIMenuBar.cpp \
     1341        src/widgets/UINameAndSystemEditor.cpp \
    13401342        src/widgets/UIPopupBox.cpp \
    13411343        src/widgets/UIPopupPane.cpp \
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp

    r71845 r71924  
    2626/* GUI includes: */
    2727# include "QIWidgetValidator.h"
     28# include "VBoxGlobal.h"
    2829# include "UIConverter.h"
     30# include "UIErrorString.h"
    2931# include "UIMachineSettingsGeneral.h"
    30 # include "UIErrorString.h"
    3132# include "UIModalWindowManager.h"
    3233# include "UIProgressDialog.h"
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp

    r71026 r71924  
    55
    66/*
    7  * Copyright (C) 2008-2017 Oracle Corporation
     7 * Copyright (C) 2008-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2121
    2222/* Qt includes: */
     23# include <QComboBox>
    2324# include <QGridLayout>
    24 # include <QVBoxLayout>
    2525# include <QLabel>
    2626# include <QLineEdit>
    27 # include <QComboBox>
     27# include <QVBoxLayout>
    2828
    2929/* GUI includes: */
     30# include "VBoxGlobal.h"
     31# include "UIFilePathSelector.h"
    3032# include "UINameAndSystemEditor.h"
    31 # include "UIFilePathSelector.h"
    3233
    3334/* COM includes: */
     
    3536
    3637#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
     38
    3739
    3840/** Defines the VM OS type ID. */
     
    6163}
    6264
     65QString UINameAndSystemEditor::name() const
     66{
     67    if (!m_fChooseLocation)
     68        return m_pEditorName->text();
     69    else
     70        return m_pEditorLocation->path();
     71}
     72
     73void UINameAndSystemEditor::setName(const QString &strName)
     74{
     75    if (!m_fChooseLocation)
     76        m_pEditorName->setText(strName);
     77    else
     78        m_pEditorLocation->setPath(strName);
     79}
     80
     81CGuestOSType UINameAndSystemEditor::type() const
     82{
     83    return m_enmType;
     84}
     85
     86void UINameAndSystemEditor::setType(const CGuestOSType &enmType)
     87{
     88    // WORKAROUND:
     89    // We're getting here with a NULL enmType when creating new VMs.
     90    // Very annoying, so just workarounded for now.
     91    /** @todo find out the reason and way to fix that.. */
     92    if (enmType.isNull())
     93        return;
     94
     95    /* Initialize variables: */
     96    const QString strFamilyId = enmType.GetFamilyId();
     97    const QString strTypeId = enmType.GetId();
     98
     99    /* Get/check family index: */
     100    const int iFamilyIndex = m_pComboFamily->findData(strFamilyId, TypeID);
     101    AssertMsg(iFamilyIndex != -1, ("Invalid family ID: '%s'", strFamilyId.toLatin1().constData()));
     102    if (iFamilyIndex != -1)
     103        m_pComboFamily->setCurrentIndex(iFamilyIndex);
     104
     105    /* Get/check type index: */
     106    const int iTypeIndex = m_pComboType->findData(strTypeId, TypeID);
     107    AssertMsg(iTypeIndex != -1, ("Invalid type ID: '%s'", strTypeId.toLatin1().constData()));
     108    if (iTypeIndex != -1)
     109        m_pComboType->setCurrentIndex(iTypeIndex);
     110}
     111
     112void UINameAndSystemEditor::retranslateUi()
     113{
     114    m_pLabelName->setText(tr("N&ame:"));
     115    m_pLabelFamily->setText(tr("&Type:"));
     116    m_pLabelType->setText(tr("&Version:"));
     117    if (!m_fChooseLocation)
     118        m_pEditorName->setWhatsThis(tr("Holds the name of the virtual machine."));
     119    else
     120        m_pEditorLocation->setWhatsThis(tr("Holds the location of the virtual machine."));
     121    m_pComboFamily->setWhatsThis(tr("Selects the operating system family that "
     122                                    "you plan to install into this virtual machine."));
     123    m_pComboType->setWhatsThis(tr("Selects the operating system type that "
     124                                  "you plan to install into this virtual machine "
     125                                  "(called a guest operating system)."));
     126}
     127
     128void UINameAndSystemEditor::sltFamilyChanged(int iIndex)
     129{
     130    /* Lock the signals of m_pComboType to prevent it's reaction on clearing: */
     131    m_pComboType->blockSignals(true);
     132    m_pComboType->clear();
     133
     134    /* Populate combo-box with OS types related to currently selected family id: */
     135    const QString strFamilyId = m_pComboFamily->itemData(iIndex, TypeID).toString();
     136    const QList<CGuestOSType> types = vboxGlobal().vmGuestOSTypeList(strFamilyId);
     137    for (int i = 0; i < types.size(); ++i)
     138    {
     139        /* Skip 64bit OS types is hardware virtualization or long mode is not supported: */
     140        if (types.at(i).GetIs64Bit() && (!m_fSupportsHWVirtEx || !m_fSupportsLongMode))
     141            continue;
     142        const int iIndex = m_pComboType->count();
     143        m_pComboType->insertItem(iIndex, types[i].GetDescription());
     144        m_pComboType->setItemData(iIndex, types[i].GetId(), TypeID);
     145    }
     146
     147    /* Select the most recently chosen item: */
     148    if (m_currentIds.contains(strFamilyId))
     149    {
     150        const QString strTypeId = m_currentIds.value(strFamilyId);
     151        const int iTypeIndex = m_pComboType->findData(strTypeId, TypeID);
     152        if (iTypeIndex != -1)
     153            m_pComboType->setCurrentIndex(iTypeIndex);
     154    }
     155    /* Or select Windows 7 item for Windows family as default: */
     156    else if (strFamilyId == "Windows")
     157    {
     158        QString strDefaultID = "Windows7";
     159        if (ARCH_BITS == 64 && m_fSupportsHWVirtEx && m_fSupportsLongMode)
     160            strDefaultID += "_64";
     161        const int iIndexWin7 = m_pComboType->findData(strDefaultID, TypeID);
     162        if (iIndexWin7 != -1)
     163            m_pComboType->setCurrentIndex(iIndexWin7);
     164    }
     165    /* Or select Oracle Linux item for Linux family as default: */
     166    else if (strFamilyId == "Linux")
     167    {
     168        QString strDefaultID = "Oracle";
     169        if (ARCH_BITS == 64 && m_fSupportsHWVirtEx && m_fSupportsLongMode)
     170            strDefaultID += "_64";
     171        const int iIndexUbuntu = m_pComboType->findData(strDefaultID, TypeID);
     172        if (iIndexUbuntu != -1)
     173            m_pComboType->setCurrentIndex(iIndexUbuntu);
     174    }
     175    /* Else simply select the first one present: */
     176    else
     177        m_pComboType->setCurrentIndex(0);
     178
     179    /* Update all the stuff: */
     180    sltTypeChanged(m_pComboType->currentIndex());
     181
     182    /* Unlock the signals of m_pComboType: */
     183    m_pComboType->blockSignals(false);
     184}
     185
     186void UINameAndSystemEditor::sltTypeChanged(int iIndex)
     187{
     188    /* Save the new selected OS type: */
     189    m_enmType = vboxGlobal().vmGuestOSType(m_pComboType->itemData(iIndex, TypeID).toString(),
     190                                        m_pComboFamily->itemData(m_pComboFamily->currentIndex(), TypeID).toString());
     191    m_pIconType->setPixmap(vboxGlobal().vmGuestOSTypePixmapDefault(m_enmType.GetId()));
     192
     193    /* Save the most recently used item: */
     194    m_currentIds[m_enmType.GetFamilyId()] = m_enmType.GetId();
     195
     196    /* Notifies listeners about OS type change: */
     197    emit sigOsTypeChanged();
     198}
     199
    63200void UINameAndSystemEditor::prepare()
    64201{
     
    85222    /* Create main-layout: */
    86223    QGridLayout *pMainLayout = new QGridLayout(this);
    87     AssertPtrReturnVoid(pMainLayout);
     224    if (pMainLayout)
    88225    {
    89226        /* Configure main-layout: */
     
    92229        /* Create VM name label: */
    93230        m_pLabelName = new QLabel;
    94         AssertPtrReturnVoid(m_pLabelName);
     231        if (m_pLabelName)
    95232        {
    96233            /* Configure VM name label: */
     
    105242            /* Create VM name editor: */
    106243            m_pEditorName = new QLineEdit;
    107             AssertPtrReturnVoid(m_pEditorName);
     244            if (m_pEditorName)
    108245            {
    109246                /* Configure VM name editor: */
     
    118255            /* Create VM location editor: */
    119256            m_pEditorLocation = new UIFilePathSelector;
    120             AssertPtrReturnVoid(m_pEditorLocation);
     257            if (m_pEditorLocation)
    121258            {
    122259                /* Configure advanced VM name editor: */
     
    133270        /* Create VM OS family label: */
    134271        m_pLabelFamily = new QLabel;
    135         AssertPtrReturnVoid(m_pLabelFamily);
     272        if (m_pLabelFamily)
    136273        {
    137274            /* Configure VM OS family label: */
     
    144281        /* Create VM OS family combo: */
    145282        m_pComboFamily = new QComboBox;
    146         AssertPtrReturnVoid(m_pComboFamily);
     283        if (m_pComboFamily)
    147284        {
    148285            /* Configure VM OS family combo: */
     
    155292        /* Create VM OS type label: */
    156293        m_pLabelType = new QLabel;
    157         AssertPtrReturnVoid(m_pLabelType);
     294        if (m_pLabelType)
    158295        {
    159296            /* Configure VM OS type label: */
     
    166303        /* Create VM OS type combo: */
    167304        m_pComboType = new QComboBox;
    168         AssertPtrReturnVoid(m_pComboType);
     305        if (m_pComboType)
    169306        {
    170307            /* Configure VM OS type combo: */
     
    177314        /* Create sub-layout: */
    178315        QVBoxLayout *pLayoutIcon = new QVBoxLayout;
    179         AssertPtrReturnVoid(pLayoutIcon);
     316        if (pLayoutIcon)
    180317        {
    181318            /* Create VM OS type icon: */
    182319            m_pIconType = new QLabel;
    183             AssertPtrReturnVoid(m_pIconType);
     320            if (m_pIconType)
    184321            {
    185322                /* Configure VM OS type icon: */
     
    222359    /* Prepare connections: */
    223360    if (!m_fChooseLocation)
    224         connect(m_pEditorName, SIGNAL(textChanged(const QString &)), this, SIGNAL(sigNameChanged(const QString &)));
    225     else
    226         connect(m_pEditorLocation, SIGNAL(pathChanged(const QString &)), this, SIGNAL(sigNameChanged(const QString &)));
    227     connect(m_pComboFamily, SIGNAL(currentIndexChanged(int)), this, SLOT(sltFamilyChanged(int)));
    228     connect(m_pComboType, SIGNAL(currentIndexChanged(int)), this, SLOT(sltTypeChanged(int)));
    229 }
    230 
    231 QString UINameAndSystemEditor::name() const
    232 {
    233     if (!m_fChooseLocation)
    234         return m_pEditorName->text();
    235     else
    236         return m_pEditorLocation->path();
    237 }
    238 
    239 void UINameAndSystemEditor::setName(const QString &strName)
    240 {
    241     if (!m_fChooseLocation)
    242         m_pEditorName->setText(strName);
    243     else
    244         m_pEditorLocation->setPath(strName);
    245 }
    246 
    247 CGuestOSType UINameAndSystemEditor::type() const
    248 {
    249     return m_type;
    250 }
    251 
    252 void UINameAndSystemEditor::setType(const CGuestOSType &type)
    253 {
    254     /** @todo We're getting here with a NULL type when creating new VMs.  Very
    255      *        annoying, so I've just shut it up for now.  Sergey and Santosh can try
    256      *        figure out why this happens now with Qt5. */
    257     if (type.isNotNull())
    258     {
    259         /* Initialize variables: */
    260         const QString strFamilyId = type.GetFamilyId();
    261         const QString strTypeId = type.GetId();
    262 
    263         /* Get/check family index: */
    264         const int iFamilyIndex = m_pComboFamily->findData(strFamilyId, TypeID);
    265         AssertMsg(iFamilyIndex != -1, ("Invalid family ID: '%s'", strFamilyId.toLatin1().constData()));
    266         if (iFamilyIndex != -1)
    267             m_pComboFamily->setCurrentIndex(iFamilyIndex);
    268 
    269         /* Get/check type index: */
    270         const int iTypeIndex = m_pComboType->findData(strTypeId, TypeID);
    271         AssertMsg(iTypeIndex != -1, ("Invalid type ID: '%s'", strTypeId.toLatin1().constData()));
    272         if (iTypeIndex != -1)
    273             m_pComboType->setCurrentIndex(iTypeIndex);
    274     }
    275 }
    276 
    277 void UINameAndSystemEditor::retranslateUi()
    278 {
    279     m_pLabelName->setText(tr("N&ame:"));
    280     m_pLabelFamily->setText(tr("&Type:"));
    281     m_pLabelType->setText(tr("&Version:"));
    282     if (!m_fChooseLocation)
    283         m_pEditorName->setWhatsThis(tr("Holds the name of the virtual machine."));
    284     else
    285         m_pEditorLocation->setWhatsThis(tr("Holds the location of the virtual machine."));
    286     m_pComboFamily->setWhatsThis(tr("Selects the operating system family that "
    287                                     "you plan to install into this virtual machine."));
    288     m_pComboType->setWhatsThis(tr("Selects the operating system type that "
    289                                   "you plan to install into this virtual machine "
    290                                   "(called a guest operating system)."));
    291 }
    292 
    293 void UINameAndSystemEditor::sltFamilyChanged(int iIndex)
    294 {
    295     /* Lock the signals of m_pComboType to prevent it's reaction on clearing: */
    296     m_pComboType->blockSignals(true);
    297     m_pComboType->clear();
    298 
    299     /* Populate combo-box with OS types related to currently selected family id: */
    300     const QString strFamilyId = m_pComboFamily->itemData(iIndex, TypeID).toString();
    301     const QList<CGuestOSType> types = vboxGlobal().vmGuestOSTypeList(strFamilyId);
    302     for (int i = 0; i < types.size(); ++i)
    303     {
    304         /* Skip 64bit OS types is hardware virtualization or long mode is not supported: */
    305         if (types.at(i).GetIs64Bit() && (!m_fSupportsHWVirtEx || !m_fSupportsLongMode))
    306             continue;
    307         const int iIndex = m_pComboType->count();
    308         m_pComboType->insertItem(iIndex, types[i].GetDescription());
    309         m_pComboType->setItemData(iIndex, types[i].GetId(), TypeID);
    310     }
    311 
    312     /* Select the most recently chosen item: */
    313     if (m_currentIds.contains(strFamilyId))
    314     {
    315         const QString strTypeId = m_currentIds.value(strFamilyId);
    316         const int iTypeIndex = m_pComboType->findData(strTypeId, TypeID);
    317         if (iTypeIndex != -1)
    318             m_pComboType->setCurrentIndex(iTypeIndex);
    319     }
    320     /* Or select Windows 7 item for Windows family as default: */
    321     else if (strFamilyId == "Windows")
    322     {
    323         QString strDefaultID = "Windows7";
    324         if (ARCH_BITS == 64 && m_fSupportsHWVirtEx && m_fSupportsLongMode)
    325             strDefaultID += "_64";
    326         const int iIndexWin7 = m_pComboType->findData(strDefaultID, TypeID);
    327         if (iIndexWin7 != -1)
    328             m_pComboType->setCurrentIndex(iIndexWin7);
    329     }
    330     /* Or select Oracle Linux item for Linux family as default: */
    331     else if (strFamilyId == "Linux")
    332     {
    333         QString strDefaultID = "Oracle";
    334         if (ARCH_BITS == 64 && m_fSupportsHWVirtEx && m_fSupportsLongMode)
    335             strDefaultID += "_64";
    336         const int iIndexUbuntu = m_pComboType->findData(strDefaultID, TypeID);
    337         if (iIndexUbuntu != -1)
    338             m_pComboType->setCurrentIndex(iIndexUbuntu);
    339     }
    340     /* Else simply select the first one present: */
    341     else
    342         m_pComboType->setCurrentIndex(0);
    343 
    344     /* Update all the stuff: */
    345     sltTypeChanged(m_pComboType->currentIndex());
    346 
    347     /* Unlock the signals of m_pComboType: */
    348     m_pComboType->blockSignals(false);
    349 }
    350 
    351 void UINameAndSystemEditor::sltTypeChanged(int iIndex)
    352 {
    353     /* Save the new selected OS type: */
    354     m_type = vboxGlobal().vmGuestOSType(m_pComboType->itemData(iIndex, TypeID).toString(),
    355                                         m_pComboFamily->itemData(m_pComboFamily->currentIndex(), TypeID).toString());
    356     m_pIconType->setPixmap(vboxGlobal().vmGuestOSTypePixmapDefault(m_type.GetId()));
    357 
    358     /* Save the most recently used item: */
    359     m_currentIds[m_type.GetFamilyId()] = m_type.GetId();
    360 
    361     /* Notifies listeners about OS type change: */
    362     emit sigOsTypeChanged();
    363 }
    364 
     361        connect(m_pEditorName, &QLineEdit::textChanged,
     362                this, &UINameAndSystemEditor::sigNameChanged);
     363    else
     364        connect(m_pEditorLocation, &UIFilePathSelector::pathChanged,
     365                this, &UINameAndSystemEditor::sigNameChanged);
     366    connect(m_pComboFamily, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
     367            this, &UINameAndSystemEditor::sltFamilyChanged);
     368    connect(m_pComboType, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
     369            this, &UINameAndSystemEditor::sltTypeChanged);
     370}
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.h

    r69500 r71924  
    55
    66/*
    7  * Copyright (C) 2008-2017 Oracle Corporation
     7 * Copyright (C) 2008-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2424/* GUI includes: */
    2525#include "QIWithRetranslateUI.h"
    26 #include "VBoxGlobal.h"
     26#include "UILibraryDefs.h"
     27
     28/* COM includes: */
     29#include "COMEnums.h"
     30#include "CGuestOSType.h"
    2731
    2832/* Forward declarations: */
     33class QComboBox;
    2934class QLabel;
    3035class QLineEdit;
    31 class QComboBox;
     36class QString;
    3237class UIFilePathSelector;
    3338
    34 /** QWidget extension providing complex editor for basic VM parameters. */
    35 class UINameAndSystemEditor : public QIWithRetranslateUI<QWidget>
     39/** QWidget subclass providing complex editor for basic VM parameters. */
     40class SHARED_LIBRARY_STUFF UINameAndSystemEditor : public QIWithRetranslateUI<QWidget>
    3641{
    3742    Q_OBJECT;
     
    4954public:
    5055
    51     /** Constructs VM parameters editor on the basis of passed @a pParent.
    52       * @param fChooseFullPath determine whether we should propose to choose location. */
     56    /** Constructs VM parameters editor passing @a pParent to the base-class.
     57      * @param  fChooseFullPath  Brings whether we should propose to choose location. */
    5358    UINameAndSystemEditor(QWidget *pParent, bool fChooseLocation = false);
    5459
    5560    /** Returns the VM name editor. */
    56     QLineEdit* nameEditor() const { return m_pEditorName; }
     61    QLineEdit *nameEditor() const { return m_pEditorName; }
    5762    /** Returns the VM location editor. */
    58     UIFilePathSelector* locationEditor() const { return m_pEditorLocation; }
     63    UIFilePathSelector *locationEditor() const { return m_pEditorLocation; }
    5964
    6065    /** Returns the VM name. */
     
    6570    /** Returns the VM OS type. */
    6671    CGuestOSType type() const;
    67     /** Defines the VM OS @a type. */
    68     void setType(const CGuestOSType &type);
     72    /** Defines the VM OS @a enmType. */
     73    void setType(const CGuestOSType &enmType);
    6974
    7075protected:
     76
     77    /** Handles translation event. */
     78    virtual void retranslateUi() /* override */;
     79
     80private slots:
     81
     82    /** Handles VM OS family @a iIndex change. */
     83    void sltFamilyChanged(int iIndex);
     84
     85    /** Handles VM OS type @a iIndex change. */
     86    void sltTypeChanged(int iIndex);
     87
     88private:
    7189
    7290    /** @name Prepare cascade.
     
    84102    /** @} */
    85103
    86     /** Handles translation event. */
    87     virtual void retranslateUi() /* override */;
    88 
    89 private slots:
    90 
    91     /** Handles VM OS family @a iIndex change. */
    92     void sltFamilyChanged(int iIndex);
    93 
    94     /** Handles VM OS type @a iIndex change. */
    95     void sltTypeChanged(int iIndex);
    96 
    97 private:
    98 
    99104    /** Holds the VM OS type. */
    100     CGuestOSType            m_type;
     105    CGuestOSType            m_enmType;
    101106    /** Holds the currently chosen OS type IDs on per-family basis. */
    102107    QMap<QString, QString>  m_currentIds;
     
    127132
    128133#endif /* !___UINameAndSystemEditor_h___ */
    129 
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp

    r71027 r71924  
    2222/* Qt includes: */
    2323# include <QDir>
     24# include <QLineEdit>
     25# include <QHBoxLayout>
    2426# include <QVBoxLayout>
    25 # include <QHBoxLayout>
    26 # include <QLineEdit>
    2727
    2828/* GUI includes: */
     29# include "QIRichTextLabel.h"
     30# include "VBoxGlobal.h"
     31# include "UIMessageCenter.h"
     32# include "UINameAndSystemEditor.h"
    2933# include "UIWizardNewVMPageBasic1.h"
    3034# include "UIWizardNewVM.h"
    31 # include "UIMessageCenter.h"
    32 # include "UINameAndSystemEditor.h"
    33 # include "QIRichTextLabel.h"
    3435
    3536/* COM includes: */
     37# include "CHost.h"
    3638# include "CSystemProperties.h"
    3739
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette