X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aeb9a156187f0c12dd24040bd344a47038909573..60435227b10297510316a88f67758fb6b6d93c10:/src/motif/filedlg.cpp diff --git a/src/motif/filedlg.cpp b/src/motif/filedlg.cpp index e54cb2d4d6..ede29a20b7 100644 --- a/src/motif/filedlg.cpp +++ b/src/motif/filedlg.cpp @@ -1,35 +1,28 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp +// Name: src/motif/filedlg.cpp // Purpose: wxFileDialog // Author: Julian Smart // Modified by: // Created: 17/09/98 -// RCS-ID: $Id$ // Copyright: (c) Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "filedlg.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#ifdef __VMS -#define XtDisplay XTDISPLAY -#define XtParent XTPARENT -#define XtWindow XTWINDOW +#include "wx/filedlg.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" + #include "wx/app.h" + #include "wx/utils.h" + #include "wx/settings.h" #endif -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/filedlg.h" -#include "wx/intl.h" -#include "wx/app.h" -#include "wx/settings.h" #include "wx/tokenzr.h" #include "wx/stockitem.h" +#include "wx/modalhook.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -60,21 +53,21 @@ IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase) #define wxFSB_HEIGHT 500 -wxString wxFileDialog::m_fileSelectorAnswer = ""; +wxString wxFileDialog::m_fileSelectorAnswer = wxEmptyString; bool wxFileDialog::m_fileSelectorReturned = false; static void wxFileSelClose(Widget WXUNUSED(w), void* WXUNUSED(client_data), XmAnyCallbackStruct *WXUNUSED(call_data)) { - wxFileDialog::m_fileSelectorAnswer = ""; + wxFileDialog::m_fileSelectorAnswer = wxEmptyString; wxFileDialog::m_fileSelectorReturned = true; } void wxFileSelCancel( Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSelectionBoxCallbackStruct *WXUNUSED(cbs) ) { - wxFileDialog::m_fileSelectorAnswer = ""; + wxFileDialog::m_fileSelectorAnswer = wxEmptyString; wxFileDialog::m_fileSelectorReturned = true; } @@ -82,7 +75,7 @@ void wxFileSelOk(Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSel { char *filename = NULL; if (!XmStringGetLtoR(cbs->value, XmSTRING_DEFAULT_CHARSET, &filename)) { - wxFileDialog::m_fileSelectorAnswer = ""; + wxFileDialog::m_fileSelectorAnswer = wxEmptyString; wxFileDialog::m_fileSelectorReturned = true; } else { if (filename) { @@ -95,21 +88,20 @@ void wxFileSelOk(Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSel static wxString ParseWildCard( const wxString& wild ) { -#ifdef __WXDEBUG__ - static const wxChar* msg = - _T("Motif file dialog does not understand this ") - _T("wildcard syntax"); +#if wxDEBUG_LEVEL + static const char *msg = + "Motif file dialog does not understand this wildcard syntax"; #endif wxArrayString wildDescriptions, wildFilters; const size_t count = wxParseCommonDialogsFilter(wild, wildDescriptions, wildFilters); - wxCHECK_MSG( count, _T("*.*"), wxT("wxFileDialog: bad wildcard string") ); - wxCHECK_MSG( count == 1, _T("*.*"), msg ); + wxCHECK_MSG( count, wxT("*.*"), wxT("wxFileDialog: bad wildcard string") ); + wxCHECK_MSG( count == 1, wxT("*.*"), msg ); // check for *.txt;*.rtf - wxStringTokenizer tok2( wildFilters[0], _T(";") ); + wxStringTokenizer tok2( wildFilters[0], wxT(";") ); wxString wildcard = tok2.GetNextToken(); wxCHECK_MSG( tok2.CountTokens() <= 1, wildcard, msg ); @@ -118,10 +110,9 @@ static wxString ParseWildCard( const wxString& wild ) wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) - :wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos) + long style, const wxPoint& pos, const wxSize& sz, const wxString& name) + :wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name) { - m_filterIndex = 1; } static void wxChangeListBoxColours(wxWindow* WXUNUSED(win), Widget widget) @@ -160,6 +151,8 @@ static void wxChangeListBoxColours(wxWindow* WXUNUSED(win), Widget widget) int wxFileDialog::ShowModal() { + WX_HOOK_MODAL_DIALOG(); + wxBeginBusyCursor(); // static char fileBuf[512]; @@ -173,30 +166,31 @@ int wxFileDialog::ShowModal() Arg args[10]; int ac = 0; - wxComputeColours (dpy, & m_backgroundColour, (wxColour*) NULL); + if (m_backgroundColour.IsOk()) + { + wxComputeColours (dpy, & m_backgroundColour, NULL); - XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++; - XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++; - XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++; - XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++; + XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++; + XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++; + XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++; + XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++; + } wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - if ( wxFont::GetFontTag() == (WXString) XmNfontList ) - { - XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++; - XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++; - XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++; - } - else - { - XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++; - XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++; - XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++; - } +#if __WXMOTIF20__ && !__WXLESSTIF__ + XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++; + XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++; + XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++; +#else + XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++; + XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++; + XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++; +#endif Widget fileSel = XmCreateFileSelectionDialog(parentWidget, - "file_selector", args, ac); + wxMOTIF_STR("file_selector"), + args, ac); #define wxFSChild( name ) \ XmFileSelectionBoxGetChild(fileSel, name) @@ -235,28 +229,28 @@ int wxFileDialog::ShowModal() Widget shell = XtParent(fileSel); - if (!m_message.IsNull()) + if ( !m_message.empty() ) XtVaSetValues(shell, - XmNtitle, wxConstCast(m_message.c_str(), char), + XmNtitle, (const char*)m_message.mb_str(), NULL); - if (m_wildCard != "") + if (!m_wildCard.empty()) { // return something understandable by Motif wxString wildCard = ParseWildCard( m_wildCard ); wxString filter; - if (m_dir != "") + if (!m_dir.empty()) filter = m_dir + wxString("/") + wildCard; else filter = wildCard; - XmTextSetString(filterWidget, wxConstCast(filter.c_str(), char)); + XmTextSetString(filterWidget, filter.char_str()); XmFileSelectionDoSearch(fileSel, NULL); } // Suggested by Terry Gitnick, 16/9/97, because of change in Motif // file selector on Solaris 1.5.1. - if ( m_dir != "" ) + if ( !m_dir.empty() ) { wxXmString thePath( m_dir ); @@ -265,9 +259,9 @@ int wxFileDialog::ShowModal() NULL); } - wxString entirePath(""); + wxString entirePath; - if (m_dir != "") + if (!m_dir.empty()) { entirePath = m_dir + wxString("/") + m_fileName; } @@ -276,10 +270,9 @@ int wxFileDialog::ShowModal() entirePath = m_fileName; } - if (entirePath != "") + if (!entirePath.empty()) { - XmTextSetString(selectionWidget, - wxConstCast(entirePath.c_str(), char)); + XmTextSetString(selectionWidget, entirePath.char_str()); } XtAddCallback(fileSel, XmNcancelCallback, @@ -312,7 +305,7 @@ int wxFileDialog::ShowModal() XtManageChild(fileSel); - m_fileSelectorAnswer = ""; + m_fileSelectorAnswer = wxEmptyString; m_fileSelectorReturned = false; wxEndBusyCursor(); @@ -338,9 +331,8 @@ int wxFileDialog::ShowModal() m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); m_dir = wxPathOnly(m_path); - if (m_fileName == "") + if (m_fileName.empty()) return wxID_CANCEL; else return wxID_OK; } -