convert RID_FMSHELL_CONVERSIONMENU menu to .ui

Change-Id: I6b38611063690a4038862f3a2810dd3c695b62d2
diff --git a/include/svx/fmresids.hrc b/include/svx/fmresids.hrc
index bd6422a..7a82ef7 100644
--- a/include/svx/fmresids.hrc
+++ b/include/svx/fmresids.hrc
@@ -62,7 +62,6 @@
#define RID_SVXTBX_FORMDESIGN                       (RID_FORMS_START +  6)

// Menu-Id's -----------------------------------------------------------
#define RID_FMSHELL_CONVERSIONMENU                  (RID_FORMS_START + 4)
#define RID_FM_FILTER_MENU                          (RID_FORMS_START + 5)

// String-Id's -----------------------------------------------------------
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index cfe6260..5367c59 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -24,6 +24,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
	svx/uiconfig/ui/colorwindow \
	svx/uiconfig/ui/colsmenu \
	svx/uiconfig/ui/compressgraphicdialog \
	svx/uiconfig/ui/convertmenu \
	svx/uiconfig/ui/crashreportdlg \
	svx/uiconfig/ui/datanavigator \
	svx/uiconfig/ui/defaultshapespanel \
diff --git a/svx/source/form/fmexpl.src b/svx/source/form/fmexpl.src
index 3b09946..2513a80 100644
--- a/svx/source/form/fmexpl.src
+++ b/svx/source/form/fmexpl.src
@@ -22,153 +22,6 @@
#include <svx/svxcommands.h>
#include "fmhelp.hrc"

Menu RID_FMSHELL_CONVERSIONMENU
{
    ItemList =
    {
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_EDIT ;
            HelpId = CMD_SID_FM_CONVERTTO_EDIT ;
            Command = ".uno:ConvertToEdit" ;
            Text [ en-US ] = "~Text Box";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_BUTTON ;
            HelpId = CMD_SID_FM_CONVERTTO_BUTTON ;
            Command = ".uno:ConvertToButton" ;
            Text [ en-US ] = "~Button";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_FIXEDTEXT ;
            HelpId = CMD_SID_FM_CONVERTTO_FIXEDTEXT ;
            Command = ".uno:ConvertToFixed" ;
            Text [ en-US ] = "La~bel field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_GROUPBOX ;
            HelpId = CMD_SID_FM_CONVERTTO_GROUPBOX ;
            Command = ".uno:ConvertToGroup" ;
            Text [ en-US ] = "G~roup Box";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_LISTBOX ;
            HelpId = CMD_SID_FM_CONVERTTO_LISTBOX ;
            Command = ".uno:ConvertToList" ;
            Text [ en-US ] = "L~ist Box";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_CHECKBOX ;
            HelpId = CMD_SID_FM_CONVERTTO_CHECKBOX ;
            Command = ".uno:ConvertToCheckBox" ;
            Text [ en-US ] = "~Check Box";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_RADIOBUTTON ;
            HelpId = CMD_SID_FM_CONVERTTO_RADIOBUTTON ;
            Command = ".uno:ConvertToRadio" ;
            Text [ en-US ] = "~Radio Button";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_COMBOBOX ;
            HelpId = CMD_SID_FM_CONVERTTO_COMBOBOX ;
            Command = ".uno:ConvertToCombo" ;
            Text [ en-US ] = "Combo Bo~x";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_IMAGEBUTTON ;
            HelpId = CMD_SID_FM_CONVERTTO_IMAGEBUTTON ;
            Command = ".uno:ConvertToImageBtn" ;
            Text [ en-US ] = "I~mage Button";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_FILECONTROL ;
            HelpId = CMD_SID_FM_CONVERTTO_FILECONTROL ;
            Command = ".uno:ConvertToFileControl" ;
            Text [ en-US ] = "~File Selection";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_DATE ;
            HelpId = CMD_SID_FM_CONVERTTO_DATE ;
            Command = ".uno:ConvertToDate" ;
            Text [ en-US ] = "~Date Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_TIME ;
            HelpId = CMD_SID_FM_CONVERTTO_TIME ;
            Command = ".uno:ConvertToTime" ;
            Text [ en-US ] = "Tim~e Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_NUMERIC ;
            HelpId = CMD_SID_FM_CONVERTTO_NUMERIC ;
            Command = ".uno:ConvertToNumeric" ;
            Text [ en-US ] = "~Numerical Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_CURRENCY ;
            HelpId = CMD_SID_FM_CONVERTTO_CURRENCY ;
            Command = ".uno:ConvertToCurrency" ;
            Text [ en-US ] = "C~urrency Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_PATTERN ;
            HelpId = CMD_SID_FM_CONVERTTO_PATTERN ;
            Command = ".uno:ConvertToPattern" ;
            Text [ en-US ] = "~Pattern Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_IMAGECONTROL ;
            HelpId = CMD_SID_FM_CONVERTTO_IMAGECONTROL ;
            Command = ".uno:ConvertToImageControl" ;
            Text [ en-US ] = "Ima~ge Control";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_FORMATTED ;
            HelpId = CMD_SID_FM_CONVERTTO_FORMATTED ;
            Command = ".uno:ConvertToFormatted" ;
            Text [ en-US ] = "Fo~rmatted Field";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_SCROLLBAR ;
            HelpId = CMD_SID_FM_CONVERTTO_SCROLLBAR ;
            Command = ".uno:ConvertToScrollBar" ;
            Text [ en-US ] = "Scroll bar";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_SPINBUTTON;
            HelpId = CMD_SID_FM_CONVERTTO_SPINBUTTON;
            Command = ".uno:ConvertToSpinButton" ;
            Text [ en-US ] = "Spin Button";
        };
        MenuItem
        {
            Identifier = SID_FM_CONVERTTO_NAVIGATIONBAR;
            HelpId = CMD_SID_FM_CONVERTTO_NAVIGATIONBAR;
            Command = ".uno:ConvertToNavigationBar" ;
            Text [ en-US ] = "Navigation Bar" ;
        };
    };
};

Bitmap RID_SVXBMP_FORM
{
    File = "sx10593.png";
diff --git a/svx/source/form/fmshell.cxx b/svx/source/form/fmshell.cxx
index 31306a94..93ff871 100644
--- a/svx/source/form/fmshell.cxx
+++ b/svx/source/form/fmshell.cxx
@@ -576,7 +576,7 @@ void FmFormShell::Execute(SfxRequest &rReq)
        case SID_FM_CONVERTTO_SCROLLBAR     :
        case SID_FM_CONVERTTO_SPINBUTTON    :
        case SID_FM_CONVERTTO_NAVIGATIONBAR :
            GetImpl()->executeControlConversionSlot( nSlot );
            GetImpl()->executeControlConversionSlot(FmXFormShell::SlotToIdent(nSlot));
            // nach dem Konvertieren die Selektion neu bestimmern, da sich ja das selektierte Objekt
            // geaendert hat
            GetImpl()->SetSelection(GetFormView()->GetMarkedObjectList());
@@ -1021,7 +1021,7 @@ void FmFormShell::GetState(SfxItemSet &rSet)
                    rSet.DisableItem( nWhich );
                else
                {
                    if ( !GetImpl()->canConvertCurrentSelectionToControl( SID_FM_CONVERTTO_FIXEDTEXT ) )
                    if (!GetImpl()->canConvertCurrentSelectionToControl("ConvertToFixed"))
                        // if it cannot be converted to a fixed text, it is no single control
                        rSet.DisableItem( nWhich );
                }
@@ -1048,7 +1048,7 @@ void FmFormShell::GetState(SfxItemSet &rSet)
            case SID_FM_CONVERTTO_FORMATTED     :
            case SID_FM_CONVERTTO_SPINBUTTON    :
            {
                if ( !m_pFormView || !m_bDesignMode || !GetImpl()->canConvertCurrentSelectionToControl( nWhich ) )
                if (!m_pFormView || !m_bDesignMode || !GetImpl()->canConvertCurrentSelectionToControl(FmXFormShell::SlotToIdent(nWhich)))
                    rSet.DisableItem( nWhich );
                else
                {
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 95ab5fa..358832f 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -179,28 +179,28 @@ static const sal_Int16 SelObjectSlotMap[] =  // vom SelObject abhaengige Slots

// die folgenden Arrays muessen kosistent sein, also einander entsprechende Eintraege an der selben relativen Position
// innerhalb ihres jeweiligen Arrays stehen
static const sal_Int16 nConvertSlots[] =
static const char* aConvertSlots[] =
{
    SID_FM_CONVERTTO_EDIT,
    SID_FM_CONVERTTO_BUTTON,
    SID_FM_CONVERTTO_FIXEDTEXT,
    SID_FM_CONVERTTO_LISTBOX,
    SID_FM_CONVERTTO_CHECKBOX,
    SID_FM_CONVERTTO_RADIOBUTTON,
    SID_FM_CONVERTTO_GROUPBOX,
    SID_FM_CONVERTTO_COMBOBOX,
    SID_FM_CONVERTTO_IMAGEBUTTON,
    SID_FM_CONVERTTO_FILECONTROL,
    SID_FM_CONVERTTO_DATE,
    SID_FM_CONVERTTO_TIME,
    SID_FM_CONVERTTO_NUMERIC,
    SID_FM_CONVERTTO_CURRENCY,
    SID_FM_CONVERTTO_PATTERN,
    SID_FM_CONVERTTO_IMAGECONTROL,
    SID_FM_CONVERTTO_FORMATTED,
    SID_FM_CONVERTTO_SCROLLBAR,
    SID_FM_CONVERTTO_SPINBUTTON,
    SID_FM_CONVERTTO_NAVIGATIONBAR
    "ConvertToEdit",
    "ConvertToButton",
    "ConvertToFixed",
    "ConvertToList",
    "ConvertToCheckBox",
    "ConvertToRadio",
    "ConvertToGroup",
    "ConvertToCombo",
    "ConvertToImageBtn",
    "ConvertToFileControl",
    "ConvertToDate",
    "ConvertToTime",
    "ConvertToNumeric",
    "ConvertToCurrency",
    "ConvertToPattern",
    "ConvertToImageControl",
    "ConvertToFormatted",
    "ConvertToScrollBar",
    "ConvertToSpinButton",
    "ConvertToNavigationBar"
};

static const sal_Int16 nImgIds[] =
@@ -1028,38 +1028,50 @@ void FmXFormShell::ForceUpdateSelection()
    }
}

VclPtr<PopupMenu> FmXFormShell::GetConversionMenu()
VclBuilder* FmXFormShell::GetConversionMenu()
{

    VclPtrInstance<PopupMenu> pNewMenu(SVX_RES( RID_FMSHELL_CONVERSIONMENU ));
    for ( size_t i = 0; i < SAL_N_ELEMENTS(nConvertSlots); ++i )
    VclBuilder* pBuilder = new VclBuilder(nullptr, VclBuilderContainer::getUIRootDir(), "svx/ui/convertmenu.ui", "");
    VclPtr<PopupMenu> pNewMenu(pBuilder->get_menu("menu"));
    for (size_t i = 0; i < SAL_N_ELEMENTS(aConvertSlots); ++i)
    {
        // das entsprechende Image dran
        pNewMenu->SetItemImage(nConvertSlots[i], Image(BitmapEx(SVX_RES(nImgIds[i]))));
        pNewMenu->SetItemImage(pNewMenu->GetItemId(aConvertSlots[i]), Image(BitmapEx(SVX_RES(nImgIds[i]))));
    }
    return pNewMenu;
    return pBuilder;
}

bool FmXFormShell::isControlConversionSlot( sal_uInt16 nSlotId )
OString FmXFormShell::SlotToIdent(sal_uInt16 nSlot)
{
    for (sal_Int16 nConvertSlot : nConvertSlots)
        if (nConvertSlot == nSlotId)
    assert(SAL_N_ELEMENTS(SelObjectSlotMap) >= SAL_N_ELEMENTS(aConvertSlots));

    for (size_t i = 0; i < SAL_N_ELEMENTS(aConvertSlots); ++i)
    {
        if (nSlot == SelObjectSlotMap[i])
            return aConvertSlots[i];
    }

    return OString();
}

bool FmXFormShell::isControlConversionSlot(const OString& rIdent)
{
    for (const auto& rConvertSlot : aConvertSlots)
        if (rIdent == rConvertSlot)
            return true;
    return false;
}

void FmXFormShell::executeControlConversionSlot( sal_uInt16 _nSlotId )
void FmXFormShell::executeControlConversionSlot(const OString &rIdent)
{
    OSL_PRECOND( canConvertCurrentSelectionToControl( _nSlotId ), "FmXFormShell::executeControlConversionSlot: illegal call!" );
    OSL_PRECOND( canConvertCurrentSelectionToControl(rIdent), "FmXFormShell::executeControlConversionSlot: illegal call!" );
    InterfaceBag::const_iterator aSelectedElement = m_aCurrentSelection.begin();
    if ( aSelectedElement == m_aCurrentSelection.end() )
        return;

    executeControlConversionSlot( Reference< XFormComponent >( *aSelectedElement, UNO_QUERY ), _nSlotId );
    executeControlConversionSlot(Reference< XFormComponent >(*aSelectedElement, UNO_QUERY), rIdent);
}


bool FmXFormShell::executeControlConversionSlot( const Reference< XFormComponent >& _rxObject, sal_uInt16 _nSlotId )
bool FmXFormShell::executeControlConversionSlot(const Reference< XFormComponent >& _rxObject, const OString& rIdent)
{
    if ( impl_checkDisposed() )
        return false;
@@ -1077,9 +1089,9 @@ bool FmXFormShell::executeControlConversionSlot( const Reference< XFormComponent
    OSL_ENSURE( isSolelySelected( _rxObject ),
        "FmXFormShell::executeControlConversionSlot: hmm ... shouldn't this parameter be redundant?" );

    for ( size_t lookupSlot = 0; lookupSlot < SAL_N_ELEMENTS(nConvertSlots); ++lookupSlot )
    for (size_t lookupSlot = 0; lookupSlot < SAL_N_ELEMENTS(aConvertSlots); ++lookupSlot)
    {
        if (nConvertSlots[lookupSlot] == _nSlotId)
        if (rIdent == aConvertSlots[lookupSlot])
        {
            Reference< XInterface > xNormalizedObject( _rxObject, UNO_QUERY );

@@ -1265,8 +1277,7 @@ bool FmXFormShell::executeControlConversionSlot( const Reference< XFormComponent
    return false;
}


bool FmXFormShell::canConvertCurrentSelectionToControl( sal_Int16 nConversionSlot )
bool FmXFormShell::canConvertCurrentSelectionToControl(const OString& rIdent)
{
    if ( m_aCurrentSelection.empty() )
        return false;
@@ -1293,25 +1304,26 @@ bool FmXFormShell::canConvertCurrentSelectionToControl( sal_Int16 nConversionSlo
       )
        return false;   // those types cannot be converted

    DBG_ASSERT(SAL_N_ELEMENTS(nConvertSlots) == SAL_N_ELEMENTS(nObjectTypes),
        "FmXFormShell::canConvertCurrentSelectionToControl: nConvertSlots & nObjectTypes must have the same size !");
    DBG_ASSERT(SAL_N_ELEMENTS(aConvertSlots) == SAL_N_ELEMENTS(nObjectTypes),
        "FmXFormShell::canConvertCurrentSelectionToControl: aConvertSlots & nObjectTypes must have the same size !");

    for ( size_t i = 0; i < SAL_N_ELEMENTS( nConvertSlots ); ++i )
        if (nConvertSlots[i] == nConversionSlot)
    for (size_t i = 0; i < SAL_N_ELEMENTS(aConvertSlots); ++i)
        if (rIdent == aConvertSlots[i])
            return nObjectTypes[i] != nObjectType;

    return true;    // all other slots: assume "yes"
}


void FmXFormShell::checkControlConversionSlotsForCurrentSelection( Menu& rMenu )
void FmXFormShell::checkControlConversionSlotsForCurrentSelection(Menu& rMenu)
{
    for (sal_Int16 i=0; i<rMenu.GetItemCount(); ++i)
    for (sal_Int16 i = 0; i < rMenu.GetItemCount(); ++i)
    {
        // der Context ist schon von einem Typ, der dem Eitnrag entspricht -> disable
        rMenu.EnableItem( rMenu.GetItemId(i), canConvertCurrentSelectionToControl( rMenu.GetItemId( i ) ) );
        const sal_uInt16 nId = rMenu.GetItemId(i);
        rMenu.EnableItem(nId, canConvertCurrentSelectionToControl(rMenu.GetItemIdent(nId)));
    }
}


void FmXFormShell::LoopGrids(LoopGridsSync nSync, LoopGridsFlags nFlags)
{
    if ( impl_checkDisposed() )
diff --git a/svx/source/form/navigatortree.cxx b/svx/source/form/navigatortree.cxx
index d0ae2f7..d7157b3 100644
--- a/svx/source/form/navigatortree.cxx
+++ b/svx/source/form/navigatortree.cxx
@@ -409,12 +409,16 @@ namespace svxform
                    // the same for automatic control focus
                    aContextMenu->EnableItem(aContextMenu->GetItemId("controlfocus"), m_bRootSelected);

                    std::unique_ptr<VclBuilder> xBuilder;
                    VclPtr<PopupMenu> xConversionMenu;
                    // ConvertTo-Slots are enabled, if one control is selected
                    // the corresponding slot is disabled
                    const sal_Int16 nChangeId = aContextMenu->GetItemId("change");
                    if (!m_bRootSelected && !m_nFormsSelected && (m_nControlsSelected == 1))
                    {
                        aContextMenu->SetPopupMenu(nChangeId, FmXFormShell::GetConversionMenu() );
                        xBuilder.reset(FmXFormShell::GetConversionMenu());
                        xConversionMenu = xBuilder->get_menu("menu");
                        aContextMenu->SetPopupMenu(nChangeId, xConversionMenu);
#if OSL_DEBUG_LEVEL > 0
                        FmControlData* pCurrent = static_cast<FmControlData*>((*m_arrCurrentSelection.begin())->GetUserData());
                        OSL_ENSURE( pFormShell->GetImpl()->isSolelySelected( pCurrent->GetFormComponent() ),
@@ -434,10 +438,14 @@ namespace svxform
                    aContextMenu->CheckItem(aContextMenu->GetItemId("designmode"), pFormModel->GetOpenInDesignMode());
                    aContextMenu->CheckItem(aContextMenu->GetItemId("controlfocus"), pFormModel->GetAutoControlFocus());

                    sal_uInt16 nSlotId = aContextMenu->Execute(this, ptWhere);
                    OString sIdent = aContextMenu->GetCurItemIdent();
                    aContextMenu->Execute(this, ptWhere);
                    OString sIdent;
                    if (xConversionMenu)
                        sIdent = xConversionMenu->GetCurItemIdent();
                    if (sIdent.isEmpty())
                        sIdent = pSubMenuNew->GetCurItemIdent();
                    if (sIdent.isEmpty())
                        sIdent = aContextMenu->GetCurItemIdent();
                    if (sIdent == "form")
                    {
                        OUString aStr(SVX_RESSTR(RID_STR_FORM));
@@ -499,10 +507,10 @@ namespace svxform
                        pFormModel->SetAutoControlFocus( !pFormModel->GetAutoControlFocus() );
                        pFormShell->GetViewShell()->GetViewFrame()->GetBindings().Invalidate(SID_FM_AUTOCONTROLFOCUS);
                    }
                    else if (FmXFormShell::isControlConversionSlot(nSlotId))
                    else if (FmXFormShell::isControlConversionSlot(sIdent))
                    {
                        FmControlData* pCurrent = static_cast<FmControlData*>((*m_arrCurrentSelection.begin())->GetUserData());
                        if ( pFormShell->GetImpl()->executeControlConversionSlot( pCurrent->GetFormComponent(), nSlotId ) )
                        if (pFormShell->GetImpl()->executeControlConversionSlot(pCurrent->GetFormComponent(), sIdent))
                            ShowSelectionProperties();
                    }
                }
diff --git a/svx/source/inc/fmshimp.hxx b/svx/source/inc/fmshimp.hxx
index 6a92aa8..c8ed5a1 100644
--- a/svx/source/inc/fmshimp.hxx
+++ b/svx/source/inc/fmshimp.hxx
@@ -416,21 +416,21 @@ public:
    SAL_DLLPRIVATE void startFiltering();
    SAL_DLLPRIVATE void stopFiltering(bool bSave);

    SAL_DLLPRIVATE static VclPtr<PopupMenu> GetConversionMenu();
    SAL_DLLPRIVATE static VclBuilder* GetConversionMenu();
        // ein Menue, das alle ControlConversion-Eintraege enthaelt

    /// checks whether a given control conversion slot can be applied to the current selection
    SAL_DLLPRIVATE        bool canConvertCurrentSelectionToControl( sal_Int16 nConversionSlot );
    SAL_DLLPRIVATE        bool canConvertCurrentSelectionToControl(const OString& rIdent);
    /// enables or disables all conversion slots in a menu, according to the current selection
    SAL_DLLPRIVATE        void checkControlConversionSlotsForCurrentSelection( Menu& rMenu );
    /// executes a control conversion slot for a given object
    SAL_DLLPRIVATE        bool executeControlConversionSlot( const css::uno::Reference< css::form::XFormComponent >& _rxObject, sal_uInt16 _nSlotId );
    SAL_DLLPRIVATE        bool executeControlConversionSlot(const css::uno::Reference< css::form::XFormComponent >& _rxObject, const OString& rIdent);
    /** executes a control conversion slot for the current selection
        @precond canConvertCurrentSelectionToControl( <arg>_nSlotId</arg> ) must return <TRUE/>
    */
    SAL_DLLPRIVATE        void executeControlConversionSlot( sal_uInt16 _nSlotId );
    SAL_DLLPRIVATE        void executeControlConversionSlot(const OString& rIdent);
    /// checks whether the given slot id denotes a control conversion slot
    SAL_DLLPRIVATE static bool isControlConversionSlot( sal_uInt16 _nSlotId );
    SAL_DLLPRIVATE static bool isControlConversionSlot(const OString& rIdent);

    SAL_DLLPRIVATE void    ExecuteTextAttribute( SfxRequest& _rReq );
    SAL_DLLPRIVATE void    GetTextAttributeState( SfxItemSet& _rSet );
@@ -526,6 +526,8 @@ public:
    */
    SAL_DLLPRIVATE bool    IsFormSlotEnabled( sal_Int32 _nSlot, css::form::runtime::FeatureState* _pCompleteState );

    SAL_DLLPRIVATE static OString SlotToIdent(sal_uInt16 nSlot);

protected:
    DECL_DLLPRIVATE_LINK( OnLoadForms, void*, void );
};
diff --git a/svx/uiconfig/ui/convertmenu.ui b/svx/uiconfig/ui/convertmenu.ui
new file mode 100644
index 0000000..24e5519
--- /dev/null
+++ b/svx/uiconfig/ui/convertmenu.ui
@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
  <requires lib="gtk+" version="3.10"/>
  <object class="GtkMenu" id="menu">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkMenuItem" id="ConvertToEdit">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Text Box</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToButton">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Button</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToFixed">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">La_bel field</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToGroup">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">G_roup Box</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToList">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">L_ist Box</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToCheckBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Check Box</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToRadio">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Radio Button</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToCombo">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Combo Bo_x</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToImageBtn">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">I_mage Button</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToFileControl">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_File Selection</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToDate">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Date Field</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToTime">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Tim_e Field</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToNumeric">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Numerical Field</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToCurrency">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">C_urrency Field</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToPattern">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Pattern Field</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToImageControl">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Ima_ge Control</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToFormatted">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Fo_rmatted Field</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToScrollBar">
        <property name="sensitive">False</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Scroll bar</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToSpinButton">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Spin Button</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="ConvertToNavigationBar">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">Navigation Bar</property>
        <property name="use_underline">True</property>
      </object>
    </child>
  </object>
</interface>