From 3af5cc2797277082dc82f531d08bfbf90df31306 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 1 Jul 2015 12:47:58 +0100 Subject: prototype native gtk3 .ui loading message dialog native gtkbuilder loading our .ui files Change-Id: Iff07d8d0d92e0c0f67fb10605f7329d46235aeff --- vcl/unx/gtk3/app/gtk3gtkinst.cxx | 78 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) (limited to 'vcl/unx/gtk3/app/gtk3gtkinst.cxx') diff --git a/vcl/unx/gtk3/app/gtk3gtkinst.cxx b/vcl/unx/gtk3/app/gtk3gtkinst.cxx index 2dedd2de8bb7..e076d690285d 100644 --- a/vcl/unx/gtk3/app/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/app/gtk3gtkinst.cxx @@ -28,6 +28,7 @@ #include "cppuhelper/compbase.hxx" #include "cppuhelper/implbase1.hxx" #include +#include using namespace com::sun::star; using namespace com::sun::star::uno; @@ -628,4 +629,81 @@ Reference< XInterface > GtkInstance::CreateClipboard(const Sequence< Any >& argu return Reference< XInterface >( static_cast(new VclGtkClipboard()) ); } +class SalMessageDialog : public MessageDialogImpl +{ +private: + GtkBuilder *m_pBuilder; + GtkWidget *m_pDialog; +public: + SalMessageDialog(vcl::Window* /*pParent*/, const OString& rID, const OUString& rUIXMLDescription) + { + OUString sURL = VclBuilderContainer::getUIRootDir() + rUIXMLDescription; + OUString sFileName; + osl::FileBase::getSystemPathFromFileURL(sURL, sFileName); + + m_pBuilder = gtk_builder_new_from_file(OUStringToOString(sFileName, RTL_TEXTENCODING_UTF8).getStr()); + + m_pDialog = GTK_WIDGET(gtk_builder_get_object(m_pBuilder, rID.getStr())); + + gtk_window_set_title(GTK_WINDOW(m_pDialog), ""); + } + + virtual void set_title(const OUString &rTitle) SAL_OVERRIDE + { + gtk_window_set_title(GTK_WINDOW(m_pDialog), OUStringToOString(rTitle, RTL_TEXTENCODING_UTF8).getStr()); + } + + virtual short Execute() SAL_OVERRIDE + { + gint nStatus = gtk_dialog_run(GTK_DIALOG(m_pDialog)); + gtk_widget_hide(m_pDialog); + return nStatus; + } + + ///Emitted when an action widget is clicked + virtual void response(short /*nResponseId*/) SAL_OVERRIDE + { + } + + OUString get_primary_text() const SAL_OVERRIDE + { + gchar *text; + g_object_get(m_pDialog, "text", &text, NULL); + return OUString(text, rtl_str_getLength(text), RTL_TEXTENCODING_UTF8); + } + + OUString get_secondary_text() const SAL_OVERRIDE + { + gchar *text; + g_object_get(m_pDialog, "secondary-text", &text, NULL); + return OUString(text, rtl_str_getLength(text), RTL_TEXTENCODING_UTF8); + } + + void set_primary_text(const OUString &rPrimaryString) SAL_OVERRIDE + { + g_object_set(m_pDialog, "text", OUStringToOString(rPrimaryString, RTL_TEXTENCODING_UTF8).getStr(), NULL); + } + + void set_secondary_text(const OUString &rSecondaryString) SAL_OVERRIDE + { + g_object_set(m_pDialog, "secondary-text", OUStringToOString(rSecondaryString, RTL_TEXTENCODING_UTF8).getStr(), NULL); + } + + virtual void dispose() SAL_OVERRIDE + { + g_object_unref(G_OBJECT(m_pBuilder)); + } + + virtual ~SalMessageDialog() + { + disposeOnce(); + } +}; + +VclPtr GtkInstance::CreateSalDialog(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription) +{ + return VclPtr::Create(pParent, rID, rUIXMLDescription); +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3