blob: 72a94abfe335982789ff164de5ffb9b09d574086 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_vcl.hxx"
#include <unx/svunx.h>
#include <svdata.hxx>
#include <vcl/window.hxx>
#include <unx/gtk/gtkinst.hxx>
#include <cstdio>
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <X11/Xlib.h>
SalSystem *GtkInstance::CreateSalSystem()
{
return new GtkSalSystem();
}
GtkSalSystem::~GtkSalSystem()
{
}
int GtkSalSystem::ShowNativeDialog( const String& rTitle,
const String& rMessage,
const std::list< String >& rButtons,
int nDefButton )
{
ImplSVData* pSVData = ImplGetSVData();
if( pSVData->mpIntroWindow )
pSVData->mpIntroWindow->Hide();
#if OSL_DEBUG_LEVEL > 1
std::fprintf( stderr, "GtkSalSystem::ShowNativeDialog\n");
#endif
ByteString aTitle( rTitle, RTL_TEXTENCODING_UTF8 );
ByteString aMessage( rMessage, RTL_TEXTENCODING_UTF8 );
/* Create the dialogue */
GtkWidget* mainwin = gtk_message_dialog_new
( NULL, (GtkDialogFlags)0, GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE, aMessage.GetBuffer(), NULL );
gtk_window_set_title( GTK_WINDOW( mainwin ), aTitle.GetBuffer() );
gint nButtons = 0, nResponse;
int nButton = 0;
for( std::list< String >::const_iterator it = rButtons.begin(); it != rButtons.end(); ++it )
{
ByteString aLabel( *it, RTL_TEXTENCODING_UTF8 );
if( nButton == nDefButton )
{
gtk_dialog_add_button( GTK_DIALOG( mainwin ), aLabel.GetBuffer(), nButtons );
gtk_dialog_set_default_response( GTK_DIALOG( mainwin ), nButtons );
}
else
gtk_dialog_add_button( GTK_DIALOG( mainwin ), aLabel.GetBuffer(), nButtons );
nButtons++;
}
nResponse = gtk_dialog_run( GTK_DIALOG(mainwin) );
if( nResponse == GTK_RESPONSE_NONE || nResponse == GTK_RESPONSE_DELETE_EVENT )
nResponse = -1;
gtk_widget_destroy( GTK_WIDGET(mainwin) );
return nResponse;
}