<?xml version="1.0"?>
<!-- The package name -->
<typesystem package="KDDockWidgets">
    <!-- Pre-defined typesystem that contains types used by our class
        PySide has one typesystem for each module, here we use only the widgets
        typesystem because it already include gui and core typesystem -->
    <load-typesystem name="typesystem_widgets.xml" generate="no"/>

    <rejection class="KDDockWidgets" function-name="qt_getEnumName"/>
    <rejection class="KDDockWidgets" function-name="qt_getEnumMetaObject"/>

    <!-- Our classes are declared in a namespace, so we should define this -->

    <namespace-type name="KDDockWidgets" visible="no">
        <!-- this is used in a public virtual pure function we need to declare it
            otherwise shiboken will ignore the function and will fail to create a wrapper -->
        <primitive-type name="DropAreaWithCentralFrame"/>
        <primitive-type name="SideBar"/>

        <!-- Some plublic enum and flags -->
        <enum-type name="Location"/>
        <enum-type name="MainWindowOption" flags="MainWindowOptions"/>
        <enum-type name="InitialVisibilityOption"/>
        <enum-type name="RestoreOption" flags="RestoreOptions"/>
        <enum-type name="DefaultSizeMode"/>
        <enum-type name="FrameOption" flags="FrameOptions"/>
        <enum-type name="DropIndicatorType"/>
        <enum-type name="SideBarLocation"/>
        <enum-type name="TitleBarButtonType"/>
        <enum-type name="SuggestedGeometryHint" flags="SuggestedGeometryHints" />
        <enum-type name="CursorPosition" flags="CursorPositions" />
        <enum-type name="AddingOption" />

        <!-- our classes
             For class we can use two types:
                object-type: class that does not have a copy-contructor and can not be passed as value to functions;
                value-type: class that can be passed as value for functions
             Here we only use 'object-type' since all our classes are derived from QWidget
         -->
        <value-type name="InitialOption"/>
        <object-type name="MainWindowBase" />
        <object-type name="MainWindow" />
        <object-type name="DockWidgetBase" >
            <!-- this class contains a internal enum, so it should be declared
                 inside of the object-type -->
            <enum-type name="Option" flags="Options" />
            <enum-type name="IconPlace" flags="IconPlaces" />
            <enum-type name="LayoutSaverOption" flags="LayoutSaverOptions" />
        </object-type>

        <object-type name="DockWidget" />
        <object-type name="LayoutSaver" />
    </namespace-type>
</typesystem>
