summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2013-04-10 17:25:32 +0100
committerMichael Meeks <michael.meeks@suse.com>2013-04-10 17:36:40 +0100
commit5dfe4ff3adff1193965572522d630f334e730129 (patch)
treeb3aa9a433cfa84742aebfc1de07882c45ba85fda
parent21346ce5d21ee34b420159d9a737093b0a5cfe78 (diff)
start of slide grouping UI in the slide-sorter.
Change-Id: If19ee509b698cb69e8e7313837a4a5428f8b3d1d
-rw-r--r--sd/Library_sdui.mk1
-rw-r--r--sd/UI_simpress.mk1
-rw-r--r--sd/inc/sdabstdlg.hxx3
-rw-r--r--sd/source/ui/dlg/GroupSlidesDialog.cxx61
-rw-r--r--sd/source/ui/dlg/GroupSlidesDialog.hxx52
-rw-r--r--sd/source/ui/dlg/sddlgfact.cxx8
-rw-r--r--sd/source/ui/dlg/sddlgfact.hxx5
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx42
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx5
-rw-r--r--sd/uiconfig/simpress/ui/groupslides.ui306
10 files changed, 478 insertions, 6 deletions
diff --git a/sd/Library_sdui.mk b/sd/Library_sdui.mk
index 14f4fbb7625c..af2ba0706fba 100644
--- a/sd/Library_sdui.mk
+++ b/sd/Library_sdui.mk
@@ -106,6 +106,7 @@ $(eval $(call gb_Library_add_exception_objects,sdui,\
sd/source/ui/dlg/tpoption \
sd/source/ui/dlg/vectdlg \
sd/source/ui/dlg/PhotoAlbumDialog \
+ sd/source/ui/dlg/GroupSlidesDialog \
))
# $(WORKDIR)/inc/sd/sddll0.hxx :
diff --git a/sd/UI_simpress.mk b/sd/UI_simpress.mk
index d6cf6e08c1bc..513f292ab957 100644
--- a/sd/UI_simpress.mk
+++ b/sd/UI_simpress.mk
@@ -13,6 +13,7 @@ $(eval $(call gb_UI_add_uifiles,modules/simpress,\
sd/uiconfig/simpress/ui/presentationdialog \
sd/uiconfig/simpress/ui/printeroptions \
sd/uiconfig/simpress/ui/photoalbum \
+ sd/uiconfig/simpress/ui/groupslides \
))
# vim: set noet sw=4 ts=4:
diff --git a/sd/inc/sdabstdlg.hxx b/sd/inc/sdabstdlg.hxx
index 21c78b7aadba..a42a4816c643 100644
--- a/sd/inc/sdabstdlg.hxx
+++ b/sd/inc/sdabstdlg.hxx
@@ -213,7 +213,8 @@ public:
virtual CreateTabPage GetSdOptionsMiscTabPageCreatorFunc() = 0;
virtual CreateTabPage GetSdOptionsSnapTabPageCreatorFunc() = 0;
- virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc) = 0;
+ virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc) = 0;
+ virtual VclAbstractDialog* CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup ) = 0;
protected:
~SdAbstractDialogFactory() {}
diff --git a/sd/source/ui/dlg/GroupSlidesDialog.cxx b/sd/source/ui/dlg/GroupSlidesDialog.cxx
new file mode 100644
index 000000000000..d6c3cb2a69ba
--- /dev/null
+++ b/sd/source/ui/dlg/GroupSlidesDialog.cxx
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+* This file is part of the LibreOffice project.
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+#include "GroupSlidesDialog.hxx"
+
+#include <com/sun/star/graphic/GraphicProvider.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
+
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XDrawPages.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+
+#include <sfx2/filedlghelper.hxx>
+#include <tools/urlobj.hxx>
+
+#include <unotools/pathoptions.hxx>
+#include <unotools/useroptions.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+
+#include <vcl/msgbox.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::presentation;
+
+namespace sd
+{
+
+SdGroupSlidesDialog::SdGroupSlidesDialog(Window* pWindow, SdDrawDocument* pActDoc,
+ const std::vector< SdPage * > &rPages )
+ : ModalDialog(pWindow, "GroupSlidesDialog", "modules/simpress/ui/groupslides.ui"),
+ pDoc(pActDoc),
+ maPages( rPages )
+{
+ get(pCancelBtn, "cancel_btn");
+ pCancelBtn->SetClickHdl(LINK(this, SdGroupSlidesDialog, CancelHdl));
+}
+
+SdGroupSlidesDialog::~SdGroupSlidesDialog()
+{
+}
+
+IMPL_LINK_NOARG(SdGroupSlidesDialog, CancelHdl)
+{
+ EndDialog(0);
+ return 0;
+}
+
+}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/GroupSlidesDialog.hxx b/sd/source/ui/dlg/GroupSlidesDialog.hxx
new file mode 100644
index 000000000000..ed5c9c8fb796
--- /dev/null
+++ b/sd/source/ui/dlg/GroupSlidesDialog.hxx
@@ -0,0 +1,52 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+* This file is part of the LibreOffice project.
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+#ifndef _SD_GROUPSLIDESDIALOG_HXX
+#define _SD_GROUPSLIDESDIALOG_HXX
+
+#include "tools/link.hxx"
+#include "sdpage.hxx"
+#include "pres.hxx"
+#include "drawdoc.hxx"
+
+#include <vcl/lstbox.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/button.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/field.hxx>
+#include <vcl/graphicfilter.hxx>
+#include <svx/svdotext.hxx>
+
+class SdrTextObj;
+class SdDrawDocument;
+class SdPage;
+
+namespace sd
+{
+
+class SdGroupSlidesDialog : public ModalDialog
+{
+public:
+ SdGroupSlidesDialog(Window* pWindow, SdDrawDocument* pActDoc,
+ const std::vector< SdPage * > &rPages );
+ ~SdGroupSlidesDialog();
+
+private:
+ CancelButton* pCancelBtn;
+
+ SdDrawDocument* pDoc;
+ std::vector< SdPage * > maPages;
+
+ DECL_LINK(CancelHdl, void*);
+};
+
+}
+
+#endif // _SD_GROUPSLIDESDIALOG_HXX
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/sddlgfact.cxx b/sd/source/ui/dlg/sddlgfact.cxx
index 0103a32b7ac2..312de2273e67 100644
--- a/sd/source/ui/dlg/sddlgfact.cxx
+++ b/sd/source/ui/dlg/sddlgfact.cxx
@@ -47,6 +47,7 @@
#include "masterlayoutdlg.hxx"
#include "headerfooterdlg.hxx"
#include "PhotoAlbumDialog.hxx"
+#include "GroupSlidesDialog.hxx"
IMPL_ABSTDLG_BASE(SdVclAbstractDialog_Impl);
IMPL_ABSTDLG_BASE(AbstractCopyDlg_Impl);
@@ -576,7 +577,12 @@ AbstractHeaderFooterDialog* SdAbstractDialogFactory_Impl::CreateHeaderFooterDial
VclAbstractDialog * SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc )
{
- return new SdVclAbstractDialog_Impl( new ::sd::SdPhotoAlbumDialog( pWindow, pDoc ) );
+ return new SdVclAbstractDialog_Impl( new ::sd::SdPhotoAlbumDialog( pWindow, pDoc ) );
+}
+
+VclAbstractDialog* SdAbstractDialogFactory_Impl::CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup )
+{
+ return new SdVclAbstractDialog_Impl( new ::sd::SdGroupSlidesDialog( pWindow, pDoc, rPagesToGroup ) );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx
index bd44d54e5022..337e4da77d31 100644
--- a/sd/source/ui/dlg/sddlgfact.hxx
+++ b/sd/source/ui/dlg/sddlgfact.hxx
@@ -276,10 +276,9 @@ public:
virtual SfxAbstractDialog* CreatSdActionDialog( ::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView );
virtual AbstractSdVectorizeDlg* CreateSdVectorizeDlg( ::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell );
virtual AbstractSdPublishingDlg* CreateSdPublishingDlg( ::Window* pWindow, DocumentType eDocType);
-
virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc);
-
- virtual VclAbstractDialog* CreateMasterLayoutDialog( ::Window* pParent,
+ virtual VclAbstractDialog* CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup );
+ virtual VclAbstractDialog* CreateMasterLayoutDialog( ::Window* pParent,
SdDrawDocument* pDoc,
SdPage* ); // add for MasterLayoutDialog
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 0b6b060ebd0e..a500dee4d748 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -65,6 +65,7 @@
#include "glob.hrc"
#include "unmodpg.hxx"
#include "DrawViewShell.hxx"
+#include "sdabstdlg.hxx"
#include <sfx2/request.hxx>
#include <sfx2/viewfrm.hxx>
@@ -143,8 +144,11 @@ void SlotManager::FuTemporary (SfxRequest& rRequest)
break;
case SID_GROUP_SLIDES:
+ GroupSlides();
+ break;
+
case SID_UNGROUP_SLIDES:
- fprintf (stderr, "Execute group / un-group\n");
+ UnGroupSlides();
break;
case SID_PAGES_PER_ROW:
@@ -1266,6 +1270,42 @@ SlideExclusionState GetSlideExclusionState (model::PageEnumeration& rPageSet)
} // end of anonymous namespace
+void SlotManager::GroupSlides()
+{
+ PageKind ePageKind = mrSlideSorter.GetModel().GetPageType();
+ View* pDrView = &mrSlideSorter.GetView();
+
+ fprintf (stderr, "Execute -group\n");
+
+ model::PageEnumeration aSelectedPages (
+ model::PageEnumerationProvider::CreateSelectedPagesEnumeration(
+ mrSlideSorter.GetModel()));
+ std::vector< SdPage * > aPagesToGroup;
+ while (aSelectedPages.HasMoreElements())
+ {
+ SdPage* pPage = aSelectedPages.GetNextElement()->GetPage();
+ aPagesToGroup.push_back( pPage );
+ }
+ if( aPagesToGroup.size() > 0 )
+ {
+ SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
+ VclAbstractDialog *pDialog = pFact->CreateSdGroupDialog(
+ mrSlideSorter.GetContentWindow().get(), /* TESTME: window ? */
+ mrSlideSorter.GetModel().GetDocument(),
+ aPagesToGroup);
+ if ( pDialog->Execute() == RET_OK )
+ {
+// mrSlideSorter.Redraw(); // FIXME ...
+ }
+ delete pDialog;
+ }
+}
+
+void SlotManager::UnGroupSlides()
+{
+ fprintf (stderr, "Execute un-group\n");
+}
+
} } } // end of namespace ::sd::slidesorter::controller
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
index 5d76da661ce8..b706d51ba985 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
@@ -105,6 +105,11 @@ private:
This can be the current selection or the insertion indicator.
*/
sal_Int32 GetInsertionPosition (void);
+
+ /// Handle SID_GROUP_SLIDES
+ void GroupSlides();
+ /// Handle SID_UNGROUP_SLIDES
+ void UnGroupSlides();
};
} } } // end of namespace ::sd::slidesorter::controller
diff --git a/sd/uiconfig/simpress/ui/groupslides.ui b/sd/uiconfig/simpress/ui/groupslides.ui
new file mode 100644
index 000000000000..bb209bc237ba
--- /dev/null
+++ b/sd/uiconfig/simpress/ui/groupslides.ui
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkDialog" id="GroupSlidesDialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Slide Grouping</property>
+ <property name="resizable">False</property>
+ <property name="window_position">center</property>
+ <property name="type_hint">dialog</property>
+ <property name="has_resize_grip">False</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="create_btn">
+ <property name="label" translatable="yes">Add to group</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="cancel_btn">
+ <property name="label">gtk-cancel</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Group:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Keywords</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="comboboxtext1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Title</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Select Group to add to:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkRadioButton" id="rb_update_automatic">
+ <property name="label" translatable="yes">Automatic Update</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="rb_update_manual">
+ <property name="label" translatable="yes">Notify for Manual Update</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="rb_update_never">
+ <property name="label" translatable="yes">Never Update</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Select updating type:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">create_btn</action-widget>
+ <action-widget response="0">cancel_btn</action-widget>
+ </action-widgets>
+ </object>
+</interface>