]> git.saurik.com Git - wxWidgets.git/commitdiff
added native wxColourDialog for GTK2
authorVáclav Slavík <vslavik@fastmail.fm>
Fri, 4 Jun 2004 16:02:14 +0000 (16:02 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Fri, 4 Jun 2004 16:02:14 +0000 (16:02 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

Makefile.in
build/bakefiles/files.bkl
include/wx/colordlg.h
include/wx/gtk/colordlg.h [new file with mode: 0644]
include/wx/gtk1/colordlg.h [new file with mode: 0644]
src/gtk/colordlg.cpp [new file with mode: 0644]
src/gtk1/colordlg.cpp [new file with mode: 0644]

index fa5905460dde71953568d5900e9d0b7e7fa1204d..3a2afec6011f9758e6f254d307344f8160016896 100644 (file)
@@ -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) $<
 
index bbf0ec23eebda61fdebf7c9b1bfb75f79df895b3..51a84b82be7cc0c2583db48a839ba82e9b957a09 100644 (file)
@@ -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
 </set>
 <set var="GTK_HDR" hints="files">
+    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
index 06323076cd16f44209a254739fe1bd691fb755d6..e953735ab7b88d2660c4fa1b02a078cb90f14432 100644 (file)
 #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 (file)
index 0000000..9db85c5
--- /dev/null
@@ -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 (file)
index 0000000..9db85c5
--- /dev/null
@@ -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 (file)
index 0000000..fa41faa
--- /dev/null
@@ -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 (file)
index 0000000..fa41faa
--- /dev/null
@@ -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__)
+