From: Václav Slavík Date: Fri, 4 Jun 2004 16:02:14 +0000 (+0000) Subject: added native wxColourDialog for GTK2 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/274ad000d2eec40f0af7d2c40940aeece00765d3 added native wxColourDialog for GTK2 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/Makefile.in b/Makefile.in index fa5905460d..3a2afec601 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1216,6 +1216,7 @@ COND_TOOLKIT_COCOA_GUI_HDR = \ wx/cocoa/gdiobj.h \ wx/cocoa/icon.h \ wx/cocoa/listbox.h \ + wx/cocoa/log.h \ wx/cocoa/mbarman.h \ wx/cocoa/mdi.h \ wx/cocoa/menu.h \ @@ -1247,6 +1248,7 @@ COND_TOOLKIT_COCOA_GUI_HDR = \ wx/generic/tabg.h @COND_TOOLKIT_COCOA@GUI_HDR = $(COND_TOOLKIT_COCOA_GUI_HDR) COND_TOOLKIT_GTK_GUI_HDR = \ + wx/generic/colrdlgg.h \ wx/generic/dirdlgg.h \ wx/generic/fdrepdlg.h \ wx/generic/listctrl.h \ @@ -1260,6 +1262,7 @@ COND_TOOLKIT_GTK_GUI_HDR = \ wx/gtk/button.h \ wx/gtk/checkbox.h \ wx/gtk/checklst.h \ + wx/gtk/colordlg.h \ wx/gtk/choice.h \ wx/gtk/clipbrd.h \ wx/gtk/colour.h \ @@ -2660,6 +2663,7 @@ COND_TOOLKIT_GTK___GUI_SRC_OBJECTS = \ monodll_checkbox.o \ monodll_checklst.o \ monodll_choice.o \ + monodll_colordlg.o \ monodll_combobox.o \ monodll_control.o \ monodll_dialog.o \ @@ -3518,6 +3522,7 @@ COND_TOOLKIT_GTK___GUI_SRC_OBJECTS_1 = \ monolib_checkbox.o \ monolib_checklst.o \ monolib_choice.o \ + monolib_colordlg.o \ monolib_combobox.o \ monolib_control.o \ monolib_dialog.o \ @@ -4548,6 +4553,7 @@ COND_TOOLKIT_GTK___GUI_SRC_OBJECTS_2 = \ coredll_checkbox.o \ coredll_checklst.o \ coredll_choice.o \ + coredll_colordlg.o \ coredll_combobox.o \ coredll_control.o \ coredll_dialog.o \ @@ -5273,6 +5279,7 @@ COND_TOOLKIT_GTK___GUI_SRC_OBJECTS_3 = \ corelib_checkbox.o \ corelib_checklst.o \ corelib_choice.o \ + corelib_colordlg.o \ corelib_combobox.o \ corelib_control.o \ corelib_dialog.o \ @@ -9746,6 +9753,18 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@monodll_choice.o: $(srcdir)/src/univ/choice.cpp $(MONODLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/gtk/colordlg.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< + +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< + +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< + +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< + @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@monodll_combobox.o: $(srcdir)/src/gtk/combobox.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< @@ -10274,15 +10293,6 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@monodll_toolbar.o: $(srcdir)/src/univ/toolbar.cpp $(MONODLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONODLL_ODEP) -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< - -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONODLL_ODEP) -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< - -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monodll_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(MONODLL_ODEP) -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< - @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_dragimag.o: $(srcdir)/src/msw/dragimag.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $< @@ -12683,6 +12693,18 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@monolib_choice.o: $(srcdir)/src/univ/choice.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/gtk/colordlg.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< + +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< + +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< + +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< + @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@monolib_combobox.o: $(srcdir)/src/gtk/combobox.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< @@ -13211,15 +13233,6 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@monolib_toolbar.o: $(srcdir)/src/univ/toolbar.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONOLIB_ODEP) -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< - -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(MONOLIB_ODEP) -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< - -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monolib_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(MONOLIB_ODEP) -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< - @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_dragimag.o: $(srcdir)/src/msw/dragimag.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $< @@ -15887,6 +15900,18 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@coredll_choice.o: $(srcdir)/src/univ/choice.cpp $(COREDLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/gtk/colordlg.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< + +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< + +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< + +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< + @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@coredll_combobox.o: $(srcdir)/src/gtk/combobox.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< @@ -16415,15 +16440,6 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@coredll_toolbar.o: $(srcdir)/src/univ/toolbar.cpp $(COREDLL_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(COREDLL_ODEP) -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< - -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(COREDLL_ODEP) -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< - -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@coredll_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(COREDLL_ODEP) -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< - @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_dragimag.o: $(srcdir)/src/msw/dragimag.cpp $(COREDLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $< @@ -18311,6 +18327,18 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@corelib_choice.o: $(srcdir)/src/univ/choice.cpp $(CORELIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/gtk/colordlg.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< + +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< + +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< + +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< + @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@corelib_combobox.o: $(srcdir)/src/gtk/combobox.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< @@ -18839,15 +18867,6 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@corelib_toolbar.o: $(srcdir)/src/univ/toolbar.cpp $(CORELIB_ODEP) @COND_USE_GUI_1_WXUNIV_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(CORELIB_ODEP) -@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< - -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/msw/colordlg.cpp $(CORELIB_ODEP) -@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< - -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@corelib_colordlg.o: $(srcdir)/src/mac/carbon/colordlg.cpp $(CORELIB_ODEP) -@COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< - @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_dragimag.o: $(srcdir)/src/msw/dragimag.cpp $(CORELIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $< diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index bbf0ec23ee..51a84b82be 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -727,6 +727,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/gtk/checkbox.cpp src/gtk/checklst.cpp src/gtk/choice.cpp + src/gtk/colordlg.cpp src/gtk/combobox.cpp src/gtk/control.cpp src/gtk/dialog.cpp @@ -755,6 +756,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/gtk/utilsres.cpp + wx/generic/colrdlgg.h wx/generic/dirdlgg.h wx/generic/fdrepdlg.h wx/generic/listctrl.h @@ -768,6 +770,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/gtk/button.h wx/gtk/checkbox.h wx/gtk/checklst.h + wx/gtk/colordlg.h wx/gtk/choice.h wx/gtk/clipbrd.h wx/gtk/colour.h diff --git a/include/wx/colordlg.h b/include/wx/colordlg.h index 06323076cd..e953735ab7 100644 --- a/include/wx/colordlg.h +++ b/include/wx/colordlg.h @@ -12,12 +12,16 @@ #ifndef _WX_COLORDLG_H_BASE_ #define _WX_COLORDLG_H_BASE_ +#include "wx/defs.h" + #if wxUSE_COLOURDLG #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) #include "wx/msw/colordlg.h" #elif defined(__WXMAC__) && !defined(__WXUNIVERSAL__) #include "wx/mac/colordlg.h" +#elif defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) + #include "wx/gtk/colordlg.h" #else #include "wx/generic/colrdlgg.h" diff --git a/include/wx/gtk/colordlg.h b/include/wx/gtk/colordlg.h new file mode 100644 index 0000000000..9db85c55a2 --- /dev/null +++ b/include/wx/gtk/colordlg.h @@ -0,0 +1,56 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/gtk/colordlg.h +// Purpose: wxColourDialog +// Author: Vaclav Slavik +// Modified by: +// Created: 2004/06/04 +// RCS-ID: $Id$ +// Copyright: (c) Vaclav Slavik, 2004 +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef __COLORDLG_H__ +#define __COLORDLG_H__ + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma interface "colordlg.h" +#endif + +#include "wx/setup.h" +#include "wx/gdicmn.h" +#include "wx/dialog.h" +#include "wx/cmndata.h" + + +class WXDLLEXPORT wxColourDialog : public wxDialog +{ +public: + wxColourDialog() {} + wxColourDialog(wxWindow *parent, + wxColourData *data = (wxColourData *)NULL); + virtual ~wxColourDialog() {} + + bool Create(wxWindow *parent, wxColourData *data = (wxColourData *)NULL); + + wxColourData &GetColourData() { return m_data; } + + virtual int ShowModal(); + +protected: + // implement some base class methods to do nothing to avoid asserts and + // GTK warnings, since this is not a real wxDialog. + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO) {} + virtual void DoMoveWindow(int x, int y, int width, int height) {} + + // copy data between the dialog and m_colourData: + void ColourDataToDialog(); + void DialogToColourData(); + + wxColourData m_data; + + DECLARE_DYNAMIC_CLASS(wxColourDialog) +}; + +#endif diff --git a/include/wx/gtk1/colordlg.h b/include/wx/gtk1/colordlg.h new file mode 100644 index 0000000000..9db85c55a2 --- /dev/null +++ b/include/wx/gtk1/colordlg.h @@ -0,0 +1,56 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/gtk/colordlg.h +// Purpose: wxColourDialog +// Author: Vaclav Slavik +// Modified by: +// Created: 2004/06/04 +// RCS-ID: $Id$ +// Copyright: (c) Vaclav Slavik, 2004 +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef __COLORDLG_H__ +#define __COLORDLG_H__ + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma interface "colordlg.h" +#endif + +#include "wx/setup.h" +#include "wx/gdicmn.h" +#include "wx/dialog.h" +#include "wx/cmndata.h" + + +class WXDLLEXPORT wxColourDialog : public wxDialog +{ +public: + wxColourDialog() {} + wxColourDialog(wxWindow *parent, + wxColourData *data = (wxColourData *)NULL); + virtual ~wxColourDialog() {} + + bool Create(wxWindow *parent, wxColourData *data = (wxColourData *)NULL); + + wxColourData &GetColourData() { return m_data; } + + virtual int ShowModal(); + +protected: + // implement some base class methods to do nothing to avoid asserts and + // GTK warnings, since this is not a real wxDialog. + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO) {} + virtual void DoMoveWindow(int x, int y, int width, int height) {} + + // copy data between the dialog and m_colourData: + void ColourDataToDialog(); + void DialogToColourData(); + + wxColourData m_data; + + DECLARE_DYNAMIC_CLASS(wxColourDialog) +}; + +#endif diff --git a/src/gtk/colordlg.cpp b/src/gtk/colordlg.cpp new file mode 100644 index 0000000000..fa41faa4f8 --- /dev/null +++ b/src/gtk/colordlg.cpp @@ -0,0 +1,147 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: gtk/colordlg.cpp +// Purpose: Native wxColourDialog for GTK+ +// Author: Vaclav Slavik +// Modified by: +// Created: 2004/06/04 +// RCS-ID: $Id$ +// Copyright: (c) Vaclav Slavik, 2004 +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma implementation "colordlg.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_COLOURDLG && defined(__WXGTK20__) + +#include "wx/colordlg.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" +#endif + +#include "wx/gtk/private.h" + +IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) + +wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) +{ + Create(parent, data); +} + +bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) +{ + if (data) + m_data = *data; + + wxString title(_("Choose colour")); + m_widget = gtk_color_selection_dialog_new(wxGTK_CONV(title)); + + if (parent) + gtk_window_set_transient_for(GTK_WINDOW(m_widget), + GTK_WINDOW(parent->m_widget)); + + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + gtk_color_selection_set_has_palette(sel, true); + + return true; +} + +int wxColourDialog::ShowModal() +{ + ColourDataToDialog(); + + gint result = gtk_dialog_run(GTK_DIALOG(m_widget)); + + switch (result) + { + default: + wxFAIL_MSG(_T("unexpected GtkColorSelectionDialog return code")); + // fall through + + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + case GTK_RESPONSE_CLOSE: + return wxID_CANCEL; + + case GTK_RESPONSE_OK: + DialogToColourData(); + return wxID_OK; + }; +} + +void wxColourDialog::ColourDataToDialog() +{ + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + + if (m_data.GetColour().Ok()) + { + gtk_color_selection_set_current_color(sel, + m_data.GetColour().GetColor()); + } + + // setup the palette: + + GdkColor colors[16]; + gint n_colors = 0; + for (unsigned i = 0; i < 16; i++) + { + wxColour c = m_data.GetCustomColour(i); + if (c.Ok()) + { + colors[n_colors] = *c.GetColor(); + n_colors++; + } + } + + gchar *pal = gtk_color_selection_palette_to_string(colors, n_colors); + + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel)); + g_object_set(settings, "gtk-color-palette", pal, NULL); + + g_free(pal); +} + +void wxColourDialog::DialogToColourData() +{ + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + + GdkColor clr; + gtk_color_selection_get_current_color(sel, &clr); + m_data.SetColour(wxColour(clr.red >> 8, clr.green >> 8, clr.blue >> 8)); + + // Extract custom palette: + + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel)); + gchar *pal; + g_object_get(settings, "gtk-color-palette", &pal, NULL); + + GdkColor *colors; + gint n_colors; + if (gtk_color_selection_palette_from_string(pal, &colors, &n_colors)) + { + for (int i = 0; i < wxMin(n_colors, 16); i++) + { + m_data.SetCustomColour(i, wxColour(colors[i].red >> 8, + colors[i].green >> 8, + colors[i].blue >> 8)); + } + g_free(colors); + } + + g_free(pal); +} + +#endif // wxUSE_COLOURDLG && defined(__WXGTK20__) + diff --git a/src/gtk1/colordlg.cpp b/src/gtk1/colordlg.cpp new file mode 100644 index 0000000000..fa41faa4f8 --- /dev/null +++ b/src/gtk1/colordlg.cpp @@ -0,0 +1,147 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: gtk/colordlg.cpp +// Purpose: Native wxColourDialog for GTK+ +// Author: Vaclav Slavik +// Modified by: +// Created: 2004/06/04 +// RCS-ID: $Id$ +// Copyright: (c) Vaclav Slavik, 2004 +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma implementation "colordlg.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_COLOURDLG && defined(__WXGTK20__) + +#include "wx/colordlg.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" +#endif + +#include "wx/gtk/private.h" + +IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) + +wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) +{ + Create(parent, data); +} + +bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) +{ + if (data) + m_data = *data; + + wxString title(_("Choose colour")); + m_widget = gtk_color_selection_dialog_new(wxGTK_CONV(title)); + + if (parent) + gtk_window_set_transient_for(GTK_WINDOW(m_widget), + GTK_WINDOW(parent->m_widget)); + + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + gtk_color_selection_set_has_palette(sel, true); + + return true; +} + +int wxColourDialog::ShowModal() +{ + ColourDataToDialog(); + + gint result = gtk_dialog_run(GTK_DIALOG(m_widget)); + + switch (result) + { + default: + wxFAIL_MSG(_T("unexpected GtkColorSelectionDialog return code")); + // fall through + + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + case GTK_RESPONSE_CLOSE: + return wxID_CANCEL; + + case GTK_RESPONSE_OK: + DialogToColourData(); + return wxID_OK; + }; +} + +void wxColourDialog::ColourDataToDialog() +{ + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + + if (m_data.GetColour().Ok()) + { + gtk_color_selection_set_current_color(sel, + m_data.GetColour().GetColor()); + } + + // setup the palette: + + GdkColor colors[16]; + gint n_colors = 0; + for (unsigned i = 0; i < 16; i++) + { + wxColour c = m_data.GetCustomColour(i); + if (c.Ok()) + { + colors[n_colors] = *c.GetColor(); + n_colors++; + } + } + + gchar *pal = gtk_color_selection_palette_to_string(colors, n_colors); + + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel)); + g_object_set(settings, "gtk-color-palette", pal, NULL); + + g_free(pal); +} + +void wxColourDialog::DialogToColourData() +{ + GtkColorSelection *sel = + GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(m_widget)->colorsel); + + GdkColor clr; + gtk_color_selection_get_current_color(sel, &clr); + m_data.SetColour(wxColour(clr.red >> 8, clr.green >> 8, clr.blue >> 8)); + + // Extract custom palette: + + GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel)); + gchar *pal; + g_object_get(settings, "gtk-color-palette", &pal, NULL); + + GdkColor *colors; + gint n_colors; + if (gtk_color_selection_palette_from_string(pal, &colors, &n_colors)) + { + for (int i = 0; i < wxMin(n_colors, 16); i++) + { + m_data.SetCustomColour(i, wxColour(colors[i].red >> 8, + colors[i].green >> 8, + colors[i].blue >> 8)); + } + g_free(colors); + } + + g_free(pal); +} + +#endif // wxUSE_COLOURDLG && defined(__WXGTK20__) +