
/*
 * xfsys.idl:
 *      SOM interface description file for the following
 *      XFolder classes (in this order):
 *          XFldSystem
 *          XFldWPS
 *      and the respective metaclasses.
 *
 *      Check the other files starting with xf* for the
 *      other XFolder classes.
 *
 *      These classes implement the "OS/2 Kernel" and
 *      "Workplace Shell" settings objects, respectively.
 *
 *      Installation of these classes is optional, but you
 *      won't be able to change XFolder's settings without
 *      them.
 *
 *      Copyright (C) 1997-99 Ulrich M”ller.
 *      This file is part of the XFolder source package.
 *      XFolder is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published
 *      by the Free Software Foundation, in version 2 as it comes in the
 *      "COPYING" file of the XFolder main distribution.
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 */

#include <wpsystem.idl>         // this is SOM for WPSystem

/*
   CLASS: XFldSystem

   CLASS HIERARCHY:

       SOMObject
         ÀÄÄ WPObject
               ÀÄÄ WPAbstract
                     ÀÄÄ WPSystem
                           ÀÄÄ  XFldSystem
*/

interface M_XFldSystem;            // Forward Reference to XFolder metaclass

interface XFldSystem : WPSystem
{
    /*
     * New instance methods for XFldSystem:
     *
     */

    ULONG xfAddXFldSystemPages(in HWND hwndDlg);
        /*@@ xfAddXFldSystemPages:
           this actually adds the "XFolder" pages into the System notebook */

#ifdef __SOMIDL__
  implementation {

    releaseorder: xfAddXFldSystemPages;

    /*
     * Class Modifiers:
     *
     */

    externalprefix = xfsys_;
    externalstem = xfsys;
    majorversion = 1;
    minorversion = 1;
    filestem = xfsys;           //# specifies the filestem for sc-generated files
    metaclass = M_XFldSystem;
    dllname = "xfldr.dll";
    callstyle = oidl;           //# forget CORBA stuff (*ev and such)

    /*
     * WPSystem methods overridden by XFldSystem:
     *
     */

    wpAddSettingsPages: override;
        /*@@ wpAddSettingsPages:
           this instance method is overridden in order
           to add the new XFolder page after the default
           "Screen" page in the settings notebook. In
           order to to this, unlike the procedure used in
           the "Workplace Shell" object, we will explicitly
           call the WPSystem methods which insert the
           pages we want to see here into the notebook.
           As a result, the "Workplace Shell" object
           inherits all pages from the "System" object
           which might be added by other WPS utils, while
           this thing does not. */

#ifdef __PRIVATE__

#endif

  }; // implementation
#endif /* __SOMIDL__ */
};

//#
//#
//# Now define Metaclass.
//# ---------------------
//#

interface M_XFldSystem : M_WPSystem
{

#ifdef __SOMIDL__
  implementation {

    /*
     * Class Modifiers:
     *
     */

    externalprefix = xfsysM_;
    externalstem = xfsysM;
    functionprefix = xfsysM_;
    majorversion = 1;
    minorversion = 1;
    filestem = xfsys;           //# specifies the filestem for sc-generated files
    dllname = "xfldr.dll";
    callstyle = oidl;

    /*
     * Internal class variables for M_XFldSystem:
     *
     */

    /*
     * M_WPSystem methods overridden by M_XFldSystem:
     *
     */

    wpclsSetSetting: override;
        /*@@ wpclsSetSetting:
           this WPAbstract method sets the class object
           settings in the settings notebook via setup
           strings. WPSystem defines the WPS-wide system
           setting strings here, and XFolder needs to
           introduce its own settings here also. */

    wpclsQuerySettingsPageSize: override;
        /*@@ wpclsQuerySettingsPageSize:
           this WPObject class method should return the
           size of the largest settings page in dialog
           units; if a settings notebook is initially
           opened, i.e. no window pos has been stored
           yet, the WPS will use this size, to avoid
           truncated settings pages. */

    wpclsQueryIconData: override;
        /*@@ wpclsQueryIconData:
           give the WPS object a new icon */

    wpclsQueryTitle: override;
        /*@@ wpclsQueryTitle:
           tell the WPS the new class name: System (XFolder) */

    wpclsInitData: override;
        /*@@ wpclsInitData:
           initialize XFldSystem class data */
  };
#endif /* __SOMIDL__ */
};

/*
   CLASS: XFldWPS

   CLASS HIERARCHY:

       SOMObject
         ÀÄÄ WPObject
               ÀÄÄ WPAbstract
                     ÀÄÄ WPSystem
                           ÀÄÄ  XFldWPS
*/

interface M_XFldWPS;            // Forward Reference to XFolder metaclass

interface XFldWPS : WPSystem
{
    /*
     * New instance methods for XFldWPS:
     *
     */

    ULONG xfAddXFldWPSPages(in HWND hwndDlg);
        /*@@ xfAddXFldWPSPages:
           this actually adds the XFolder pages into the "Workplace Shell" notebook */

#ifdef __SOMIDL__
  implementation {

    releaseorder: xfAddXFldWPSPages;

    /*
     * Class Modifiers:
     *
     */

    externalprefix = xfwps_;
    externalstem = xfwps;
    majorversion = 1;
    minorversion = 1;
    filestem = xfsys;           //# specifies the filestem for sc-generated files
    metaclass = M_XFldWPS;
    dllname = "xfldr.dll";
    callstyle = oidl;           //# forget CORBA stuff (*ev and such)

    /*
     * WPSystem methods overridden by XFldWPS:
     *
     */

    wpAddSystemScreenPage: override;
        /*@@ wpAddSystemScreenPage:
           this WPSystem instance method is overridden in order
           to suppress the "Screen" page in the "Workplace Shell"
           object, because we want that page in "OS/2 Kernel"
           only. */

    wpAddDMQSDisplayTypePage: override;
        /*@@ wpAddDMQSDisplayTypePage:
           this WPSystem instance method is overridden in order
           to suppress the second "Screen" page in the "Workplace
           Shell" object. Depending on the installed video driver,
           this page may or may not be displayed in the "System"
           notebook, but we never want this in "Workplace Shell",
           but in "OS/2 Kernel" instead. */

    wpAddSettingsPages: override;
        /*@@ wpAddSettingsPages:
           this instance method is overridden in order
           to add the new XFolder pages on top of
           the other WPS settings pages from the old "System"
           notebook. */

#ifdef __PRIVATE__

#endif

  }; // implementation
#endif /* __SOMIDL__ */
};

//#
//#
//# Now define Metaclass.
//# ---------------------
//#

interface M_XFldWPS : M_WPSystem
{

#ifdef __SOMIDL__
  implementation {

    /*
     * Class Modifiers:
     *
     */

    externalprefix = xfwpsM_;
    externalstem = xfwpsM;
    functionprefix = xfwpsM_;
    majorversion = 1;
    minorversion = 1;
    filestem = xfsys;           //# specifies the filestem for sc-generated files
    dllname = "xfldr.dll";
    callstyle = oidl;

    /*
     * Internal instance variables:
     *
     */

    /*
     * M_WPSystem methods overridden by M_XFldWPS:
     *
     */

    wpclsSetSetting: override;
        /*@@ wpclsSetSetting:
           this WPAbstract method sets the class object
           settings in the settings notebook via setup
           strings. WPSystem defines the WPS-wide system
           setting strings here, and XFolder needs to
           introduce its own settings here also. */

    wpclsQuerySettingsPageSize: override;
        /*@@ wpclsQuerySettingsPageSize:
           this WPObject class method should return the
           size of the largest settings page in dialog
           units; if a settings notebook is initially
           opened, i.e. no window pos has been stored
           yet, the WPS will use this size, to avoid
           truncated settings pages. */

    wpclsQueryIconData: override;
        /*@@ wpclsQueryIconData:
           give the WPS object a new icon */

    wpclsQueryTitle: override;
        /*@@ wpclsQueryTitle:
           tell the WPS the new class name: "Workplace Shell" */

    wpclsInitData: override;
        /*@@ wpclsInitData:
           initialize XFldWPS class data */

  };
#endif /* __SOMIDL__ */
};


