%{
#include "helpers.h"
#include <wx/metafile.h>
+#include <wx/imaglist.h>
#ifndef __WXMSW__
#include <wx/dcps.h>
#endif
//---------------------------------------------------------------------------
-class wxBitmap {
+// class wxGDIImage {
+// public:
+// long GetHandle();
+// void SetHandle(long handle);
+// bool Ok();
+// int GetWidth();
+// int GetHeight();
+// int GetDepth();
+// void SetWidth(int w);
+// void SetHeight(int h);
+// void SetDepth(int d);
+// void SetSize(const wxSize& size);
+// };
+
+//---------------------------------------------------------------------------
+
+class wxBitmap
+//: public wxGDIImage
+{
public:
wxBitmap(const wxString& name, long type);
~wxBitmap();
-#ifdef __WXMSW__
- void Create(int width, int height, int depth = -1);
-#endif
- int GetDepth();
- int GetHeight();
wxPalette* GetPalette();
wxMask* GetMask();
- int GetWidth();
bool LoadFile(const wxString& name, long flags);
- bool Ok();
bool SaveFile(const wxString& name, int type, wxPalette* palette = NULL);
- void SetDepth(int depth);
- void SetHeight(int height);
void SetMask(wxMask* mask);
#ifdef __WXMSW__
void SetPalette(wxPalette& palette);
#endif
- void SetWidth(int width);
+
+ // wxGDIImage methods
+#ifdef __WXMSW__
+ long GetHandle();
+ void SetHandle(long handle);
+#endif
+ bool Ok();
+ int GetWidth();
+ int GetHeight();
+ int GetDepth();
+ void SetWidth(int w);
+ void SetHeight(int h);
+ void SetDepth(int d);
+#ifdef __WXMSW__
+ void SetSize(const wxSize& size);
+#endif
};
+
%new wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1);
-wxBitmap* wxNoRefBitmap(char* name, long flags);
+
+#ifdef __WXMSW__
+%new wxBitmap* wxBitmapFromData(PyObject* data, long type,
+ int width, int height, int depth = 1);
+#endif
%{ // Alternate 'constructor'
wxBitmap* wxEmptyBitmap(int width, int height, int depth=-1) {
return new wxBitmap(width, height, depth);
}
- // This one won't own the reference, so Python won't call
- // the dtor, this is good for toolbars and such where
- // the parent will manage the bitmap.
- wxBitmap* wxNoRefBitmap(char* name, long flags) {
- return new wxBitmap(name, flags);
+#ifdef __WXMSW__
+ wxBitmap* wxBitmapFromData(PyObject* data, long type,
+ int width, int height, int depth = 1) {
+ if (! PyString_Check(data)) {
+ PyErr_SetString(PyExc_TypeError, "Expected string object");
+ return NULL;
+ }
+
+ return new wxBitmap((void*)PyString_AsString(data), type, width, height, depth);
}
+#endif
%}
//---------------------------------------------------------------------------
class wxMask {
public:
wxMask(const wxBitmap& bitmap);
- ~wxMask();
+ //~wxMask();
};
%new wxMask* wxMaskColour(const wxBitmap& bitmap, const wxColour& colour);
//---------------------------------------------------------------------------
-class wxIcon : public wxBitmap {
+class wxIcon
+//: public wxGDIImage
+{
public:
-#ifdef __WXMSW__
wxIcon(const wxString& name, long flags,
int desiredWidth = -1, int desiredHeight = -1);
-#endif
~wxIcon();
- int GetDepth();
- int GetHeight();
- int GetWidth();
bool LoadFile(const wxString& name, long flags);
+
+ // wxGDIImage methods
+#ifdef __WXMSW__
+ long GetHandle();
+ void SetHandle(long handle);
+#endif
bool Ok();
- void SetDepth(int depth);
- void SetHeight(int height);
- void SetWidth(int width);
+ int GetWidth();
+ int GetHeight();
+ int GetDepth();
+ void SetWidth(int w);
+ void SetHeight(int h);
+ void SetDepth(int d);
+#ifdef __WXMSW__
+ void SetSize(const wxSize& size);
+#endif
};
+
//---------------------------------------------------------------------------
-class wxCursor : public wxBitmap {
+class wxCursor
+//: public wxGDIImage
+{
public:
#ifdef __WXMSW__
wxCursor(const wxString& cursorName, long flags, int hotSpotX=0, int hotSpotY=0);
#endif
~wxCursor();
+
+ // wxGDIImage methods
+#ifdef __WXMSW__
+ long GetHandle();
+ void SetHandle(long handle);
+#endif
bool Ok();
+#ifdef __WXMSW__
+ int GetWidth();
+ int GetHeight();
+ int GetDepth();
+ void SetWidth(int w);
+ void SetHeight(int h);
+ void SetDepth(int d);
+ void SetSize(const wxSize& size);
+#endif
};
%name(wxStockCursor) %new wxCursor* wxPyStockCursor(int id);
//----------------------------------------------------------------------
+
+enum wxFontEncoding
+{
+ wxFONTENCODING_SYSTEM = -1, // system default
+ wxFONTENCODING_DEFAULT, // current default encoding
+
+ // ISO8859 standard defines a number of single-byte charsets
+ wxFONTENCODING_ISO8859_1, // West European (Latin1)
+ wxFONTENCODING_ISO8859_2, // Central and East European (Latin2)
+ wxFONTENCODING_ISO8859_3, // Esperanto (Latin3)
+ wxFONTENCODING_ISO8859_4, // Baltic languages (Estonian) (Latin4)
+ wxFONTENCODING_ISO8859_5, // Cyrillic
+ wxFONTENCODING_ISO8859_6, // Arabic
+ wxFONTENCODING_ISO8859_7, // Greek
+ wxFONTENCODING_ISO8859_8, // Hebrew
+ wxFONTENCODING_ISO8859_9, // Turkish (Latin5)
+ wxFONTENCODING_ISO8859_10, // Variation of Latin4 (Latin6)
+ wxFONTENCODING_ISO8859_11, // Thai
+ wxFONTENCODING_ISO8859_12, // doesn't exist currently, but put it
+ // here anyhow to make all ISO8859
+ // consecutive numbers
+ wxFONTENCODING_ISO8859_13, // Latin7
+ wxFONTENCODING_ISO8859_14, // Latin8
+ wxFONTENCODING_ISO8859_15, // Latin9 (a.k.a. Latin0, includes euro)
+
+ // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
+ wxFONTENCODING_KOI8, // we don't support any of KOI8 variants
+ wxFONTENCODING_ALTERNATIVE, // same as MS-DOS CP866
+ wxFONTENCODING_BULGARIAN, // used under Linux in Bulgaria
+
+ // what would we do without Microsoft? They have their own encodings
+ // for DOS
+ wxFONTENCODING_CP437, // original MS-DOS codepage
+ wxFONTENCODING_CP850, // CP437 merged with Latin1
+ wxFONTENCODING_CP852, // CP437 merged with Latin2
+ wxFONTENCODING_CP855, // another cyrillic encoding
+ wxFONTENCODING_CP866, // and another one
+ // and for Windows
+ wxFONTENCODING_CP1250, // WinLatin2
+ wxFONTENCODING_CP1251, // WinCyrillic
+ wxFONTENCODING_CP1252, // WinLatin1
+
+ wxFONTENCODING_MAX
+};
+
class wxFont {
public:
// I'll do it this way to use long-lived objects and not have to
// worry about when python may delete the object.
%addmethods {
wxFont( int pointSize, int family, int style, int weight,
- int underline=FALSE, char* faceName = "") {
+ int underline=FALSE, char* faceName = "",
+ wxFontEncoding encoding=wxFONTENCODING_DEFAULT) {
return wxTheFontList->FindOrCreateFont(pointSize, family, style, weight,
- underline, faceName);
+ underline, faceName, encoding);
}
// NO Destructor.
}
+ bool Ok();
wxString GetFaceName();
int GetFamily();
int GetStyle();
bool GetUnderlined();
int GetWeight();
+ wxFontEncoding GetEncoding();
void SetFaceName(const wxString& faceName);
void SetFamily(int family);
void SetPointSize(int pointSize);
void SetStyle(int style);
void SetUnderlined(bool underlined);
void SetWeight(int weight);
+ void SetEncoding(wxFontEncoding encoding);
+ wxString GetFamilyString();
+ wxString GetStyleString();
+ wxString GetWeightString();
};
+%inline %{
+ wxFontEncoding wxFont_GetDefaultEncoding() {
+ return wxFont::GetDefaultEncoding();
+ }
+
+ void wxFont_SetDefaultEncoding(wxFontEncoding encoding) {
+ wxFont::SetDefaultEncoding(encoding);
+ }
+%}
+
//----------------------------------------------------------------------
class wxColour {
return rv;
}
}
+ %pragma(python) addtoclass = "asTuple = Get"
+ %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())"
+ %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())"
+
};
%new wxColour* wxNamedColour(const wxString& colorName);
//----------------------------------------------------------------------
+#ifdef __WXMSW__
typedef unsigned long wxDash;
+#else
+typedef char wxDash;
+#endif
+
class wxPen {
public:
void SetStyle(int style);
void SetWidth(int width);
-#ifdef __WXMSW__
// **** This one needs to return a list of ints (wxDash)
int GetDashes(wxDash **dashes);
+ void SetDashes(int LCOUNT, wxDash* choices);
+
+#ifdef __WXMSW__
wxBitmap* GetStipple();
- void SetDashes(int LCOUNT, wxDash* LIST);
void SetStipple(wxBitmap& stipple);
#endif
};
// I'll do it this way to use long-lived objects and not have to
// worry about when python may delete the object.
%addmethods {
- wxBrush(wxColour* colour, int style=wxSOLID) {
+ wxBrush(const wxColour* colour, int style=wxSOLID) {
return wxTheBrushList->FindOrCreateBrush(*colour, style);
}
// NO Destructor.
}
+// wxBrush(const wxColour& colour, int style=wxSOLID);
+
wxColour& GetColour();
wxBitmap * GetStipple();
int GetStyle();
~wxDC();
void BeginDrawing();
- bool Blit(long xdest, long ydest, long width, long height,
- wxDC *source, long xsrc, long ysrc, long logical_func);
+// %name(BlitXY)
+ bool Blit(long xdest, long ydest,
+ long width, long height,
+ wxDC *source, long xsrc, long ysrc,
+ int logicalFunc = wxCOPY, int useMask = FALSE);
+// bool Blit(const wxPoint& destPt, const wxSize& sz,
+// wxDC *source, const wxPoint& srcPt,
+// int logicalFunc = wxCOPY, int useMask = FALSE);
+
void Clear();
void CrossHair(long x, long y);
void DestroyClippingRegion();
long DeviceToLogicalY(long y);
long DeviceToLogicalYRel(long y);
void DrawArc(long x1, long y1, long x2, long y2, long xc, long yc);
+ void DrawCircle(long x, long y, long radius);
void DrawEllipse(long x, long y, long width, long height);
void DrawEllipticArc(long x, long y, long width, long height, long start, long end);
void DrawIcon(const wxIcon& icon, long x, long y);
void DrawLine(long x1, long y1, long x2, long y2);
- void DrawLines(int LCOUNT, wxPoint* LIST, long xoffset=0, long yoffset=0);
- void DrawPolygon(int LCOUNT, wxPoint* LIST, long xoffset=0, long yoffset=0,
+ void DrawLines(int PCOUNT, wxPoint* points, long xoffset=0, long yoffset=0);
+ void DrawPolygon(int PCOUNT, wxPoint* points, long xoffset=0, long yoffset=0,
int fill_style=wxODDEVEN_RULE);
void DrawPoint(long x, long y);
void DrawRectangle(long x, long y, long width, long height);
+ void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle);
void DrawRoundedRectangle(long x, long y, long width, long height, long radius=20);
- void DrawSpline(int LCOUNT, wxPoint* LIST);
+ void DrawSpline(int PCOUNT, wxPoint* points);
void DrawText(const wxString& text, long x, long y);
void EndDoc();
void EndDrawing();
long *OUTPUT, long *OUTPUT);
wxFont& GetFont();
int GetLogicalFunction();
+ void GetLogicalScale(double *OUTPUT, double *OUTPUT);
int GetMapMode();
bool GetOptimization();
wxPen& GetPen();
return wc;
}
}
- void GetSize(int* OUTPUT, int* OUTPUT); //void GetSize(long* OUTPUT, long* OUTPUT);
+ %name(GetSizeTuple)void GetSize(int* OUTPUT, int* OUTPUT);
+ wxSize GetSize();
+ wxSize GetSizeMM();
wxColour& GetTextBackground();
- void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT,
- long *OUTPUT, long *OUTPUT);
+ void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT);
+ %name(GetFullTextExtent)void GetTextExtent(const wxString& string,
+ long *OUTPUT, long *OUTPUT, long *OUTPUT, long* OUTPUT,
+ const wxFont* font = NULL);
wxColour& GetTextForeground();
+ void GetUserScale(double *OUTPUT, double *OUTPUT);
long LogicalToDeviceX(long x);
long LogicalToDeviceXRel(long x);
long LogicalToDeviceY(long y);
void SetBrush(const wxBrush& brush);
void SetFont(const wxFont& font);
void SetLogicalFunction(int function);
+ void SetLogicalScale(double x, double y);
void SetMapMode(int mode);
void SetOptimization(bool optimize);
void SetPen(const wxPen& pen);
void StartPage();
- %addmethods {
- // This one is my own creation...
- void DrawBitmap(wxBitmap& bitmap, long x, long y, bool swapPalette=TRUE) {
- wxMemoryDC* memDC = new wxMemoryDC;
- memDC->SelectObject(bitmap);
- if (swapPalette)
- self->SetPalette(*bitmap.GetPalette());
- self->Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), memDC,
- 0, 0, self->GetLogicalFunction());
- memDC->SelectObject(wxNullBitmap);
- delete memDC;
- }
- }
+
+ void DrawBitmap(const wxBitmap& bitmap, long x, long y,
+ int useMask = FALSE);
+
+ bool CanDrawBitmap();
+ bool CanGetTextExtent();
+ int GetDepth();
+ wxSize GetPPI();
+
+ void GetLogicalOrigin(int *OUTPUT, int *OUTPUT);
+ void SetLogicalOrigin(int x, int y);
+ void GetDeviceOrigin(int *OUTPUT, int *OUTPUT);
+ void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
+
};
public:
wxScreenDC();
- bool StartDrawingOnTop(wxWindow* window);
- %name(StartDrawingOnTopRect) bool StartDrawingOnTop(wxRect* rect = NULL);
+ %name(StartDrawingOnTopWin) bool StartDrawingOnTop(wxWindow* window);
+ bool StartDrawingOnTop(wxRect* rect = NULL);
bool EndDrawingOnTop();
};
%readonly
+%{
+#if 0
+%}
extern wxFont *wxNORMAL_FONT;
extern wxFont *wxSMALL_FONT;
extern wxFont *wxITALIC_FONT;
extern wxFont *wxSWISS_FONT;
-extern wxPen *wxRED_PEN;
+extern wxPen *wxRED_PEN;
extern wxPen *wxCYAN_PEN;
extern wxPen *wxGREEN_PEN;
extern wxPen *wxBLACK_PEN;
extern wxFont wxNullFont;
extern wxColour wxNullColour;
+%readwrite
+%{
+#endif
+%}
+
//---------------------------------------------------------------------------
class wxPalette {
public:
- wxPalette(int LCOUNT, byte* LIST, byte* LIST, byte* LIST);
+ wxPalette(int LCOUNT, byte* choices, byte* choices, byte* choices);
~wxPalette();
int GetPixel(byte red, byte green, byte blue);
//---------------------------------------------------------------------------
+enum {
+ wxIMAGELIST_DRAW_NORMAL ,
+ wxIMAGELIST_DRAW_TRANSPARENT,
+ wxIMAGELIST_DRAW_SELECTED,
+ wxIMAGELIST_DRAW_FOCUSED,
+ wxIMAGE_LIST_NORMAL,
+ wxIMAGE_LIST_SMALL,
+ wxIMAGE_LIST_STATE
+};
+
+class wxImageList {
+public:
+ wxImageList(int width, int height, int mask=TRUE, int initialCount=1);
+ ~wxImageList();
+
+#ifdef __WXMSW__
+ int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap);
+ %name(AddWithColourMask)int Add(const wxBitmap& bitmap, const wxColour& maskColour);
+ %name(AddIcon)int Add(const wxIcon& icon);
+ bool Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap);
+ %name(ReplaceIcon)bool Replace(int index, const wxIcon& icon);
+#else
+ int Add(const wxBitmap& bitmap);
+ bool Replace(int index, const wxBitmap& bitmap);
+#endif
+
+ bool Draw(int index, wxDC& dc, int x, int x, int flags = wxIMAGELIST_DRAW_NORMAL,
+ const bool solidBackground = FALSE);
+
+ int GetImageCount();
+ bool Remove(int index);
+ bool RemoveAll();
+};
+
//---------------------------------------------------------------------------
-/////////////////////////////////////////////////////////////////////////////
-//
-// $Log$
-// Revision 1.12 1999/01/30 07:30:11 RD
-// Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
-//
-// Various cleanup, tweaks, minor additions, etc. to maintain
-// compatibility with the current wxWindows.
-//
-// Revision 1.11 1998/12/18 15:49:05 RR
-//
-// wxClipboard now serves the primary selection as well
-// wxPython fixes
-// warning mesages
-//
-// Revision 1.10 1998/12/17 18:05:50 RD
-//
-// wxPython 0.5.2
-// Minor fixes and SWIG code generation for RR's changes. MSW and GTK
-// versions are much closer now!
-//
-// Revision 1.9 1998/12/17 14:07:37 RR
-//
-// Removed minor differences between wxMSW and wxGTK
-//
-// Revision 1.8 1998/12/16 22:10:54 RD
-//
-// Tweaks needed to be able to build wxPython with wxGTK.
-//
-// Revision 1.7 1998/12/15 20:41:18 RD
-// Changed the import semantics from "from wxPython import *" to "from
-// wxPython.wx import *" This is for people who are worried about
-// namespace pollution, they can use "from wxPython import wx" and then
-// prefix all the wxPython identifiers with "wx."
-//
-// Added wxTaskbarIcon for wxMSW.
-//
-// Made the events work for wxGrid.
-//
-// Added wxConfig.
-//
-// Added wxMiniFrame for wxGTK, (untested.)
-//
-// Changed many of the args and return values that were pointers to gdi
-// objects to references to reflect changes in the wxWindows API.
-//
-// Other assorted fixes and additions.
-//
-// Revision 1.6 1998/11/25 08:45:24 RD
-//
-// Added wxPalette, wxRegion, wxRegionIterator, wxTaskbarIcon
-// Added events for wxGrid
-// Other various fixes and additions
-//
-// Revision 1.5 1998/10/20 06:43:57 RD
-// New wxTreeCtrl wrappers (untested)
-// some changes in helpers
-// etc.
-//
-// Revision 1.4 1998/10/02 06:40:38 RD
-//
-// Version 0.4 of wxPython for MSW.
-//
-// Revision 1.3 1998/08/18 19:48:16 RD
-// more wxGTK compatibility things.
-//
-// It builds now but there are serious runtime problems...
-//
-// Revision 1.2 1998/08/15 07:36:35 RD
-// - Moved the header in the .i files out of the code that gets put into
-// the .cpp files. It caused CVS conflicts because of the RCS ID being
-// different each time.
-//
-// - A few minor fixes.
-//
-// Revision 1.1 1998/08/09 08:25:50 RD
-// Initial version
-//
-//