added native wxColourDialog for GTK2

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2004-06-04 16:02:14 +00:00
parent a2b99ff5a5
commit 274ad000d2
7 changed files with 468 additions and 36 deletions

View 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) $<

View 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

View File

@@ -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"

56
include/wx/gtk/colordlg.h Normal file
View File

@@ -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

View File

@@ -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

147
src/gtk/colordlg.cpp Normal file
View File

@@ -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__)

147
src/gtk1/colordlg.cpp Normal file
View File

@@ -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__)