diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-03 17:53:54 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-03-04 16:27:12 +0100 |
commit | f705047867c30cbcdf45fae2e035b304c42ce336 (patch) | |
tree | f4b139c97214170bab0fea2c5121b5168ea17e86 /basctl | |
parent | c7bb99964bc29f146a8bc7f27f21a3b62a197b2d (diff) |
weld new library dialog
Change-Id: I86c70a01e45a7e9f80c19f9a9b0e6307830ba722
Reviewed-on: https://gerrit.libreoffice.org/50685
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'basctl')
-rw-r--r-- | basctl/source/basicide/macrodlg.cxx | 8 | ||||
-rw-r--r-- | basctl/source/basicide/moduldl2.cxx | 68 | ||||
-rw-r--r-- | basctl/source/basicide/moduldlg.cxx | 26 | ||||
-rw-r--r-- | basctl/source/basicide/moduldlg.hxx | 33 | ||||
-rw-r--r-- | basctl/uiconfig/basicide/ui/newlibdialog.ui | 12 |
5 files changed, 69 insertions, 78 deletions
diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx index 69c2e4ec4b90..986dfecb635e 100644 --- a/basctl/source/basicide/macrodlg.cxx +++ b/basctl/source/basicide/macrodlg.cxx @@ -369,8 +369,7 @@ SbMethod* MacroChooser::CreateMacro() if ( !pModule ) { - pModule = createModImpl( static_cast<vcl::Window*>( this ), - aDocument, *m_pBasicBox, aLibName, aModName, false ); + pModule = createModImpl(GetFrameWeld(), aDocument, *m_pBasicBox, aLibName, aModName, false); } DBG_ASSERT( !pModule || !pModule->FindMethod( aSubName, SbxClassType::Method ), "Macro exists already!" ); @@ -758,7 +757,7 @@ IMPL_LINK( MacroChooser, ButtonHdl, Button *, pButton, void ) SvTreeListEntry* pCurEntry = m_pBasicBox->GetCurEntry(); EntryDescriptor aDesc = m_pBasicBox->GetEntryDescriptor(pCurEntry); ScriptDocument aDocument( aDesc.GetDocument() ); - createLibImpl( static_cast<vcl::Window*>( this ), aDocument, nullptr, m_pBasicBox ); + createLibImpl(GetFrameWeld(), aDocument, nullptr, m_pBasicBox); } else if (pButton == m_pNewModButton) { @@ -766,8 +765,7 @@ IMPL_LINK( MacroChooser, ButtonHdl, Button *, pButton, void ) EntryDescriptor aDesc = m_pBasicBox->GetEntryDescriptor(pCurEntry); ScriptDocument aDocument( aDesc.GetDocument() ); OUString aLibName( aDesc.GetLibName() ); - createModImpl( static_cast<vcl::Window*>( this ), aDocument, - *m_pBasicBox, aLibName, OUString(), true ); + createModImpl(GetFrameWeld(), aDocument, *m_pBasicBox, aLibName, OUString(), true); } else if (pButton == m_pOrganizeButton) { diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx index 40da9f29f536..9062db209b33 100644 --- a/basctl/source/basicide/moduldl2.cxx +++ b/basctl/source/basicide/moduldl2.cxx @@ -355,57 +355,41 @@ bool CheckBox::EditedEntry( SvTreeListEntry* pEntry, const OUString& rNewName ) } // NewObjectDialog -IMPL_LINK_NOARG(NewObjectDialog, OkButtonHandler, Button*, void) +IMPL_LINK_NOARG(NewObjectDialog, OkButtonHandler, weld::Button&, void) { - if (IsValidSbxName(m_pEdit->GetText())) - EndDialog(1); + if (!m_bCheckName || IsValidSbxName(m_xEdit->get_text())) + m_xDialog->response(RET_OK); else { - std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(), + std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_BADSBXNAME))); xErrorBox->run(); - m_pEdit->GrabFocus(); + m_xEdit->grab_focus(); } } -NewObjectDialog::NewObjectDialog(vcl::Window * pParent, ObjectMode eMode, - bool bCheckName) - : ModalDialog(pParent, "NewLibDialog", "modules/BasicIDE/ui/newlibdialog.ui") +NewObjectDialog::NewObjectDialog(weld::Window * pParent, ObjectMode eMode, bool bCheckName) + : m_xBuilder(Application::CreateBuilder(pParent, "modules/BasicIDE/ui/newlibdialog.ui")) + , m_xDialog(m_xBuilder->weld_dialog("NewLibDialog")) + , m_xEdit(m_xBuilder->weld_entry("entry")) + , m_xOKButton(m_xBuilder->weld_button("ok")) + , m_bCheckName(bCheckName) { - get(m_pOKButton, "ok"); - get(m_pEdit, "entry"); - - m_pEdit->GrabFocus(); - switch (eMode) { case ObjectMode::Library: - SetText( IDEResId(RID_STR_NEWLIB) ); + m_xDialog->set_title(IDEResId(RID_STR_NEWLIB)); break; case ObjectMode::Module: - SetText( IDEResId(RID_STR_NEWMOD) ); + m_xDialog->set_title(IDEResId(RID_STR_NEWMOD)); break; case ObjectMode::Dialog: - SetText( IDEResId(RID_STR_NEWDLG) ); + m_xDialog->set_title(IDEResId(RID_STR_NEWDLG)); break; default: assert(false); } - - if (bCheckName) - m_pOKButton->SetClickHdl(LINK(this, NewObjectDialog, OkButtonHandler)); -} - -NewObjectDialog::~NewObjectDialog() -{ - disposeOnce(); -} - -void NewObjectDialog::dispose() -{ - m_pEdit.clear(); - m_pOKButton.clear(); - ModalDialog::dispose(); + m_xOKButton->connect_clicked(LINK(this, NewObjectDialog, OkButtonHandler)); } // GotoLineDialog @@ -735,7 +719,7 @@ IMPL_LINK( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg, bool ) void LibPage::NewLib() { - createLibImpl( static_cast<vcl::Window*>( this ), m_aCurDocument, m_pLibBox, nullptr); + createLibImpl(GetFrameWeld(), m_aCurDocument, m_pLibBox, nullptr); } void LibPage::InsertLib() @@ -1478,8 +1462,8 @@ SvTreeListEntry* LibPage::ImpInsertLibEntry( const OUString& rLibName, sal_uLong } // Helper function -void createLibImpl( vcl::Window* pWin, const ScriptDocument& rDocument, - CheckBox* pLibBox, TreeListBox* pBasicBox ) +void createLibImpl(weld::Window* pWin, const ScriptDocument& rDocument, + CheckBox* pLibBox, TreeListBox* pBasicBox) { OSL_ENSURE( rDocument.isAlive(), "createLibImpl: invalid document!" ); if ( !rDocument.isAlive() ) @@ -1497,29 +1481,29 @@ void createLibImpl( vcl::Window* pWin, const ScriptDocument& rDocument, i++; } - ScopedVclPtrInstance< NewObjectDialog > aNewDlg(pWin, ObjectMode::Library); - aNewDlg->SetObjectName(aLibName); + NewObjectDialog aNewDlg(pWin, ObjectMode::Library); + aNewDlg.SetObjectName(aLibName); - if (aNewDlg->Execute()) + if (aNewDlg.run()) { - if (!aNewDlg->GetObjectName().isEmpty()) - aLibName = aNewDlg->GetObjectName(); + if (!aNewDlg.GetObjectName().isEmpty()) + aLibName = aNewDlg.GetObjectName(); if ( aLibName.getLength() > 30 ) { - std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr, + std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin, VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_LIBNAMETOLONG))); xErrorBox->run(); } else if ( !IsValidSbxName( aLibName ) ) { - std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr, + std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin, VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_BADSBXNAME))); xErrorBox->run(); } else if ( rDocument.hasLibrary( E_SCRIPTS, aLibName ) || rDocument.hasLibrary( E_DIALOGS, aLibName ) ) { - std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr, + std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(pWin, VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_SBXNAMEALLREADYUSED2))); xErrorBox->run(); } diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx index d0abbe481951..68c4b1b7526a 100644 --- a/basctl/source/basicide/moduldlg.cxx +++ b/basctl/source/basicide/moduldlg.cxx @@ -802,8 +802,8 @@ void ObjectPage::NewModule() if ( GetSelection( aDocument, aLibName ) ) { - createModImpl( static_cast<vcl::Window*>( this ), aDocument, - *m_pBasicBox, aLibName, OUString(), true ); + createModImpl(GetFrameWeld(), aDocument, + *m_pBasicBox, aLibName, OUString(), true); } } @@ -816,12 +816,12 @@ void ObjectPage::NewDialog() { aDocument.getOrCreateLibrary( E_DIALOGS, aLibName ); - ScopedVclPtrInstance< NewObjectDialog > aNewDlg(this, ObjectMode::Dialog, true); - aNewDlg->SetObjectName( aDocument.createObjectName( E_DIALOGS, aLibName ) ); + NewObjectDialog aNewDlg(GetFrameWeld(), ObjectMode::Dialog, true); + aNewDlg.SetObjectName(aDocument.createObjectName(E_DIALOGS, aLibName)); - if (aNewDlg->Execute() != 0) + if (aNewDlg.run() != RET_CANCEL) { - OUString aDlgName = aNewDlg->GetObjectName(); + OUString aDlgName = aNewDlg.GetObjectName(); if (aDlgName.isEmpty()) aDlgName = aDocument.createObjectName( E_DIALOGS, aLibName); @@ -959,7 +959,7 @@ void LibDialog::SetStorageName( const OUString& rName ) } // Helper function -SbModule* createModImpl( vcl::Window* pWin, const ScriptDocument& rDocument, +SbModule* createModImpl(weld::Window* pWin, const ScriptDocument& rDocument, TreeListBox& rBasicBox, const OUString& rLibName, const OUString& _aModName, bool bMain ) { OSL_ENSURE( rDocument.isAlive(), "createModImpl: invalid document!" ); @@ -976,13 +976,13 @@ SbModule* createModImpl( vcl::Window* pWin, const ScriptDocument& rDocument, if ( aModName.isEmpty() ) aModName = rDocument.createObjectName( E_SCRIPTS, aLibName ); - ScopedVclPtrInstance< NewObjectDialog > aNewDlg(pWin, ObjectMode::Module, true); - aNewDlg->SetObjectName( aModName ); + NewObjectDialog aNewDlg(pWin, ObjectMode::Module, true); + aNewDlg.SetObjectName(aModName); - if (aNewDlg->Execute() != 0) + if (aNewDlg.run() != RET_CANCEL) { - if (!aNewDlg->GetObjectName().isEmpty() ) - aModName = aNewDlg->GetObjectName(); + if (!aNewDlg.GetObjectName().isEmpty()) + aModName = aNewDlg.GetObjectName(); try { @@ -1043,7 +1043,7 @@ SbModule* createModImpl( vcl::Window* pWin, const ScriptDocument& rDocument, } catch (const container::ElementExistException& ) { - std::unique_ptr<weld::MessageDialog> xError(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr, + std::unique_ptr<weld::MessageDialog> xError(Application::CreateMessageDialog(pWin, VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_SBXNAMEALLREADYUSED2))); xError->run(); } diff --git a/basctl/source/basicide/moduldlg.hxx b/basctl/source/basicide/moduldlg.hxx index ce9de92864bc..b1fe48ad0ac4 100644 --- a/basctl/source/basicide/moduldlg.hxx +++ b/basctl/source/basicide/moduldlg.hxx @@ -27,6 +27,7 @@ #include <vcl/tabctrl.hxx> #include <vcl/tabdlg.hxx> #include <vcl/tabpage.hxx> +#include <vcl/weld.hxx> #include <com/sun/star/task/XInteractionHandler.hpp> class SvxPasswordDialog; @@ -41,22 +42,24 @@ enum class ObjectMode Dialog = 3, }; -class NewObjectDialog : public ModalDialog +class NewObjectDialog { private: - VclPtr<Edit> m_pEdit; - VclPtr<OKButton> m_pOKButton; + std::unique_ptr<weld::Builder> m_xBuilder; + std::unique_ptr<weld::Dialog> m_xDialog; + std::unique_ptr<weld::Entry> m_xEdit; + std::unique_ptr<weld::Button> m_xOKButton; + bool m_bCheckName; - DECL_LINK(OkButtonHandler, Button*, void); + DECL_LINK(OkButtonHandler, weld::Button&, void); public: - NewObjectDialog (vcl::Window* pParent, ObjectMode, bool bCheckName = false); - virtual ~NewObjectDialog() override; - virtual void dispose() override; - OUString GetObjectName() const { return m_pEdit->GetText(); } - void SetObjectName( const OUString& rName ) + NewObjectDialog(weld::Window* pParent, ObjectMode, bool bCheckName = false); + short run() { return m_xDialog->run(); } + OUString GetObjectName() const { return m_xEdit->get_text(); } + void SetObjectName(const OUString& rName) { - m_pEdit->SetText( rName ); - m_pEdit->SetSelection(Selection( 0, rName.getLength())); + m_xEdit->set_text(rName); + m_xEdit->select_region(0, -1); } }; @@ -252,10 +255,10 @@ public: }; // Helper functions -SbModule* createModImpl( vcl::Window* pWin, const ScriptDocument& rDocument, - TreeListBox& rBasicBox, const OUString& rLibName, const OUString& aModName, bool bMain ); -void createLibImpl( vcl::Window* pWin, const ScriptDocument& rDocument, - CheckBox* pLibBox, TreeListBox* pBasicBox ); +SbModule* createModImpl(weld::Window* pWin, const ScriptDocument& rDocument, + TreeListBox& rBasicBox, const OUString& rLibName, const OUString& aModName, bool bMain); +void createLibImpl(weld::Window* pWin, const ScriptDocument& rDocument, + CheckBox* pLibBox, TreeListBox* pBasicBox); } // namespace basctl diff --git a/basctl/uiconfig/basicide/ui/newlibdialog.ui b/basctl/uiconfig/basicide/ui/newlibdialog.ui index 53db96c6a8d9..c52086b638a5 100644 --- a/basctl/uiconfig/basicide/ui/newlibdialog.ui +++ b/basctl/uiconfig/basicide/ui/newlibdialog.ui @@ -1,10 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.2 --> <interface domain="basctl"> <requires lib="gtk+" version="3.0"/> <object class="GtkDialog" id="NewLibDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> + <property name="modal">True</property> + <property name="default_width">0</property> + <property name="default_height">0</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -80,10 +83,10 @@ <object class="GtkLabel" id="area"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="newlibdialog|area">_Name:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">entry</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -111,8 +114,11 @@ </object> </child> <action-widgets> - <action-widget response="-5">ok</action-widget> <action-widget response="-6">cancel</action-widget> + <action-widget response="-11">help</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> |