There seems to be a bug in the version in Ubuntu Edgy (latest stable version). The compilation fails with an error for a missing file, /usr/share/pygtk/2.0/defs/gtk-extrafuncs.defs
Touching this file solves the problem, but then fails with more errors. /home/andrew/software/plplot/plplot/bindings/wxwidgets/wxPLplotstream.cpp: In constructor 'wxPLplotstream::wxPLplotstream(wxDC*, int, int, long int)': /home/andrew/software/plplot/plplot/bindings/wxwidgets/wxPLplotstream.cpp:47: error: invalid conversion from 'const char*' to 'char*' /home/andrew/software/plplot/plplot/bindings/wxwidgets/wxPLplotstream.cpp:47: error: initializing argument 2 of 'int plstream::SetOpt(char*, char*)' This is with pygtk 2.10.3 on Linux AMD64. Anyone else having problems? Andrew On Sun, Feb 04, 2007 at 11:21:46PM +0000, Werner Smekal wrote: > Update of /cvsroot/plplot/plplot/bindings/wxwidgets > In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16258/bindings/wxwidgets > > Added Files: > CMakeLists.txt wxPLplotstream.cpp wxPLplotstream.h > wxPLplotwindow.cpp wxPLplotwindow.h > Log Message: > Initial commit of wxwidgets bindings to plplot. This files provide an > interface to PLplot for wxwidgets applications, similar to the Gnome2 > bindings. Basically a inherited class of plstream (wxPLplotstream) and a > widget (wxPLplotWindow) are made available. The wxWidgets bindings are > enabled via -DENABLE_wxwidgets=ON. If the wxWidgets driver is disabled the > bindings are disabled as well, since the wxWidgets bindings depend on the > wxWidgets driver. > > --- NEW FILE: wxPLplotwindow.h --- > /* $Id: wxPLplotwindow.h,v 1.1 2007/02/04 23:21:44 smekal Exp $ > > Copyright (C) 2005 Werner Smekal > > This file is part of PLplot. > > PLplot is free software; you can redistribute it and/or modify > it under the terms of the GNU General Library Public License as published > by the Free Software Foundation; either version 2 of the License, or > (at your option) any later version. > > PLplot is distributed in the hope that it will be useful, > but WITHOUT ANY WARRANTY; without even the implied warranty of > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > GNU Library General Public License for more details. > > You should have received a copy of the GNU Library General Public License > along with PLplot; if not, write to the Free Software > Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > */ > > #if !defined( WXPLPLOTWINDOW_H__INCLUDED_ ) > #define WXPLPLOTWINDOW_H__INCLUDED_ > > #include "wx/window.h" > #include "wx/dcmemory.h" > #include "wxPLplotstream.h" > > > /*! A plot widget which takes care of double buffering and other stuff, but > does not > * provide an own plot API. You have to get a pointer to wxPLplotstream via > the > * GetStream() method to gain access to the PLplot API. > */ > class PLDLLIMPEXP wxPLplotwindow : public wxWindow > { > public: > wxPLplotwindow( wxWindow* parent, wxWindowID id=-1, const wxPoint& pos > = wxDefaultPosition, > const wxSize& size = wxDefaultSize, long style = 0, > long pl_style = wxPLPLOT_NONE ); //!< Constructor. > ~wxPLplotwindow( void ); //!< Deconstructor. > > void RenewPlot( void ); //!< Redo plot. > void SavePlot( const wxString& driver, const wxString& filename ); > //!< Save plot using a different driver. > wxPLplotstream* GetStream() { return m_stream; } //!< Get pointer to > wxPLplotstream of this widget. > > protected: > virtual void OnPaint( wxPaintEvent& event ); //!< Paint event. > virtual void OnErase( wxEraseEvent &WXUNUSED(event) ); //!< Erase > event. > > private: > // variables regarding double buffering > wxMemoryDC* MemPlotDC; //!< Pointer to wxMemoryDC, used for double > buffering > int MemPlotDC_width; //!< Saved width of MemoryDC, to find out if > size changed. > int MemPlotDC_height; //!< Saved height of MemoryDC, to find out if > size changed. > wxBitmap* MemPlotDCBitmap; //!< Pointer to bitmap, used for double > buffering. > > protected: > wxPLplotstream* m_stream; //!< Pointer to the wxPLplotstream > which belongs to this plot widget > > DECLARE_EVENT_TABLE() > }; > > > #endif // !defined( WXPLPLOTWINDOW_H__INCLUDED_ ) > > --- NEW FILE: wxPLplotwindow.cpp --- > /* $Id: wxPLplotwindow.cpp,v 1.1 2007/02/04 23:21:44 smekal Exp $ > > Copyright (C) 2005 Werner Smekal > > This file is part of PLplot. > > PLplot is free software; you can redistribute it and/or modify > it under the terms of the GNU General Library Public License as published > by the Free Software Foundation; either version 2 of the License, or > (at your option) any later version. > > PLplot is distributed in the hope that it will be useful, > but WITHOUT ANY WARRANTY; without even the implied warranty of > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > GNU Library General Public License for more details. > > You should have received a copy of the GNU Library General Public License > along with PLplot; if not, write to the Free Software > Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > */ > > #include "plplotP.h" > #include "wxPLplotwindow.h" > #include "wxPLplotstream.h" > #include "wx/window.h" > > > BEGIN_EVENT_TABLE( wxPLplotwindow, wxWindow ) > EVT_PAINT( wxPLplotwindow::OnPaint ) > EVT_ERASE_BACKGROUND( wxPLplotwindow::OnErase ) > END_EVENT_TABLE() > > > /*! Constructor allocates wxMemoryDC, a wxPLplotstream and initializes > parameters. > */ > wxPLplotwindow::wxPLplotwindow( wxWindow* parent, wxWindowID id, const > wxPoint& pos, > const wxSize& size, long style, long pl_style > ) : > wxWindow( parent, id, pos, size, style|wxFULL_REPAINT_ON_RESIZE ) > { > // create MemoryDC and set size - if size not set (-1, -1) than > // set size to (640,400) > MemPlotDC = new wxMemoryDC; > if( size.GetWidth()<0 || size.GetHeight()<0 ) { > MemPlotDC_width = 640; > MemPlotDC_height = 400; > } else { > MemPlotDC_width = size.GetWidth(); > MemPlotDC_height = size.GetHeight(); > } > > MemPlotDCBitmap = new wxBitmap( MemPlotDC_width, MemPlotDC_height, -1 ); > MemPlotDC->SelectObject( *MemPlotDCBitmap ); > > m_stream = new wxPLplotstream( (wxDC*)MemPlotDC, MemPlotDC_width, > MemPlotDC_height, pl_style ); > > // tell wxWidgets to leave the background painting to this control > SetBackgroundStyle( wxBG_STYLE_CUSTOM ); > } > > > /*! Deconstructor takes care that all is deleted in the correct order. > */ > wxPLplotwindow::~wxPLplotwindow( void ) > { > MemPlotDC->SelectObject( wxNullBitmap ); > > if( MemPlotDCBitmap ) > delete MemPlotDCBitmap; > > if( m_stream ) > delete m_stream; > > delete MemPlotDC; > } > > > /*! In the OnPaint Method we check if the Windows was resized (will be moved > to OnSize() sometimes > * later), we also implement our own double buffering here (since the PLplot > wxWidgets driver draws > * into a wxMemoryDC) > */ > void wxPLplotwindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) > { > int width, height; > GetSize( &width, &height ); > > // Check if we window was resized (or dc is invalid) > if( (m_stream == NULL) || (MemPlotDC_width!=width) || > (MemPlotDC_height!=height) ) > { > MemPlotDC->SelectObject( wxNullBitmap ); > > if( MemPlotDCBitmap ) > delete MemPlotDCBitmap; > MemPlotDCBitmap = new wxBitmap( width, height, -1 ); > MemPlotDC->SelectObject( *MemPlotDCBitmap ); > > m_stream->SetSize( width, height ); > m_stream->RenewPlot(); > > MemPlotDC_width = width; > MemPlotDC_height = height; > } > > wxPaintDC dc( this ); > dc.SetClippingRegion( GetUpdateRegion() ); > dc.Blit( 0, 0, width, height, MemPlotDC, 0, 0 ); > } > > > /*! Together with "SetBackgroundStyle( wxBG_STYLE_CUSTOM );" in the > constructor this method > * is responsible that the background is not erased in order to prevent > flickering. > */ > void wxPLplotwindow::OnErase( wxEraseEvent &WXUNUSED(event) ) > { > } > > > /*! Redo the whole plot. > */ > void wxPLplotwindow::RenewPlot( void ) > { > if( m_stream ) { > m_stream->RenewPlot(); > Refresh( true ); > } > } > > --- NEW FILE: CMakeLists.txt --- > # bindings/wxwidgets/CMakeLists.txt > ### Process this file with cmake to produce Makefile > ### > # Copyright (C) 2007 Werner Smekal > # > # This file is part of PLplot. > # > # PLplot is free software; you can redistribute it and/or modify > # it under the terms of the GNU Library General Public License as published > # by the Free Software Foundation; version 2 of the License. > # > # PLplot is distributed in the hope that it will be useful, > # but WITHOUT ANY WARRANTY; without even the implied warranty of > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > # GNU Library General Public License for more details. > # > # You should have received a copy of the GNU Library General Public License > # along with PLplot; if not, write to the Free Software > # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > > if(ENABLE_wxwidgets) > set(plplotwxwidgets${LIB_TAG}_LIB_SRCS > wxPLplotstream.cpp > wxPLplotwindow.cpp > ) > > set(plplotwxwidgets${LIB_TAG}_INSTALLED_HEADERS > wxPLplotstream.h > wxPLplotwindow.h > ) > > # Set the include path > include_directories( > ${CMAKE_SOURCE_DIR}/include > ${CMAKE_SOURCE_DIR}/bindings/c++ > ${CMAKE_BINARY_DIR} > ${CMAKE_BINARY_DIR}/include > ) > > # Create plplotwxwidgets[d] library > add_library(plplotwxwidgets${LIB_TAG} ${plplotwxwidgets${LIB_TAG}_LIB_SRCS}) > > if(WIN32 AND BUILD_SHARED_LIBS) > SET_SOURCE_FILES_PROPERTIES(${plplotwxwidgets${LIB_TAG}_LIB_SRCS} > PROPERTIES COMPILE_FLAGS "-DMAKINGPLDLL" ) > endif(WIN32 AND BUILD_SHARED_LIBS) > > INCLUDE_DIRECTORIES( ${wxWidgets_INCLUDE_DIRS} ) > ADD_DEFINITIONS( ${wxWidgets_DEFINITIONS} ) > > target_link_libraries(plplotwxwidgets${LIB_TAG} plplotcxx${LIB_TAG} > ${wxWidgets_LIBRARIES}) > > get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) > set_target_properties(plplotwxwidgets${LIB_TAG} > PROPERTIES > SOVERSION ${plplotwxwidgets_SOVERSION} > VERSION ${plplotwxwidgets_VERSION} > INSTALL_RPATH "${LIB_INSTALL_RPATH}" > INSTALL_NAME_DIR "${LIB_DIR}" > ) > > # Install library in lib/ > install(TARGETS plplotwxwidgets${LIB_TAG} > ARCHIVE DESTINATION ${LIB_DIR} > LIBRARY DESTINATION ${LIB_DIR} > RUNTIME DESTINATION ${BIN_DIR} > ) > > install(FILES > ${plplotwxwidgets${LIB_TAG}_INSTALLED_HEADERS} > DESTINATION ${INCLUDE_DIR} > ) > > # Configure pkg-config *.pc file corresponding to > libplplotwxwidgets${LIB_TAG} > if(PKGCONFIG_EXECUTABLE) > if(LIB_TAG) > set(PC_PRECISION "double") > else(LIB_TAG) > set(PC_PRECISION "single") > endif(LIB_TAG) > # Each list element must consist of a colon-separated string with the > # following fields which are parsed out in the foreach loop below and > # used to configure the corresponding pkg-config *.pc file. > # BINDING - ENABLE_${BINDING} keeps track of whether a > # binding has been enabled (ON) or not (OFF). > # Also, ${BINDING} used to determine PC_FILE_SUFFIX > # which helps to determine name of configured > # *.pc file. > # PC_SHORT_NAME - Used in *.pc NAME: field > # PC_LONG_NAME - Used in *.pc Description: field > # PC_LIBRARY_NAME - Used in *.pc Libs: field > # Also used to determine PC_LINK_FLAGS and > # PC_COMPILE_FLAGS used in *.pc Libs: and Cflags: > # fields. > set(PC_DATA "wxwidgets:wxWidgets:wxWidgets bindings, > :plplotwxwidgets${LIB_TAG}") > > string(REGEX REPLACE "^(.*):.*:.*:.*$" "\\1" BINDING ${PC_DATA}) > set(PC_FILE_SUFFIX "-${BINDING}") > set(PC_REQUIRES "plplotcxx${LIB_TAG}") > string(REGEX REPLACE "^.*:(.*):.*:.*$" "\\1" PC_SHORT_NAME ${PC_DATA}) > string(REGEX REPLACE "^.*:.*:(.*):.*$" "\\1" PC_LONG_NAME ${PC_DATA}) > string(REGEX REPLACE "^.*:.*:.*:(.*)$" "\\1" PC_LIBRARY_NAME ${PC_DATA}) > set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS}") > set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}") > set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}") > set(PC_CONFIGURED_FILE > ${CMAKE_BINARY_DIR}/pkgcfg/plplot${LIB_TAG}${PC_FILE_SUFFIX}.pc > ) > configure_file( > ${CMAKE_SOURCE_DIR}/pkgcfg/plplot-template.pc.cmake > ${PC_CONFIGURED_FILE} > @ONLY > ) > install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR}) > endif(PKGCONFIG_EXECUTABLE) > endif(ENABLE_wxwidgets) > > --- NEW FILE: wxPLplotstream.h --- > /* $Id: wxPLplotstream.h,v 1.1 2007/02/04 23:21:44 smekal Exp $ > > Copyright (C) 2005 Werner Smekal > > This file is part of PLplot. > > PLplot is free software; you can redistribute it and/or modify > it under the terms of the GNU General Library Public License as published > by the Free Software Foundation; either version 2 of the License, or > (at your option) any later version. > > PLplot is distributed in the hope that it will be useful, > but WITHOUT ANY WARRANTY; without even the implied warranty of > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > GNU Library General Public License for more details. > > You should have received a copy of the GNU Library General Public License > along with PLplot; if not, write to the Free Software > Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > */ > > #if !defined( WXPLPLOTSTREAM_H__INCLUDED_ ) > #define WXPLPLOTSTREAM_H__INCLUDED_ > > #include "plstream.h" > > // forward declarations > class wxImage; > class wxDC; > > /*! Style options for wxPLplotstream: > * wxPLPLOT_NONE: no option > * wxPLPLOT_FREETYPE: use freetype library instead of Hershey fonts > * wxPLPLOT_SMOOTHTEXT: antialiase font (if freetype library is used) > * wxPLPLOT_ANTIALIZED: antialize plot (if agg library is available) > */ > enum wxPLplotstreamstyle { > wxPLPLOT_NONE = 0, > wxPLPLOT_FREETYPE = 1, > wxPLPLOT_SMOOTHTEXT = 2, > wxPLPLOT_ANTIALIZED = 4 > }; > > /*! wxPLplotstream is inherited from plstream, which is the C++ interface > * to the plplot API. The documentation of this interface is described in > * the PLplot manual, not here. > */ > class PLDLLIMPEXP wxPLplotstream : public plstream > { > public: > wxPLplotstream( wxDC *dc, int width, int height, long style = wxPLPLOT_NONE > ); //!< Constructor. > void set_stream(); //!< Calls some code before every PLplot command. > void SetSize( int width, int height ); //!< Set new size of plot area. > void RenewPlot(); //!< Redo plot. > > private: > wxDC* m_dc; //!< Pointer to wxDC to plot into. > wxImage* m_image; //!< pointer to wxImage > int m_width; //!< Width of dc/plot area. > int m_height; //!< Height of dc/plot area. > long m_style; //!< style of this plot > }; > > > #endif // !defined( WXPLPLOTSTREAM_H__INCLUDED_ ) > > --- NEW FILE: wxPLplotstream.cpp --- > /* $Id: wxPLplotstream.cpp,v 1.1 2007/02/04 23:21:44 smekal Exp $ > > Copyright (C) 2005 Werner Smekal > > This file is part of PLplot. > > PLplot is free software; you can redistribute it and/or modify > it under the terms of the GNU General Library Public License as published > by the Free Software Foundation; either version 2 of the License, or > (at your option) any later version. > > PLplot is distributed in the hope that it will be useful, > but WITHOUT ANY WARRANTY; without even the implied warranty of > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > GNU Library General Public License for more details. > > You should have received a copy of the GNU Library General Public License > along with PLplot; if not, write to the Free Software > Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > */ > > #include "plplotP.h" > #include "wxPLplotstream.h" > #include "wx/image.h" > #include "wx/dcmemory.h" > > > /*! Constructor of wxPLplotstream class which is inherited from plstream. > * Here we set the driver (wxwidgets :), and tell plplot in which dc to > * plot to and the size of the canvas. We also check and set several > * device style options. > */ > wxPLplotstream::wxPLplotstream( wxDC *dc, int width, int height, long style ) > : > m_dc(dc), m_width(width), m_height(height), m_style(style) > { > ::plstream(); > > sdev( "wxwidgets" ); > spage( 0.0, 0.0, m_width, m_height, 0, 0 ); > > // use freetype? > wxString option=wxString::Format( > "text=%d,smooth=%d,antialized=%d", > m_style & wxPLPLOT_FREETYPE ? 1 : 0, > m_style & wxPLPLOT_SMOOTHTEXT ? 1 : 0, > m_style & wxPLPLOT_ANTIALIZED ? 1 : 0 ); > SetOpt( "-drvopt", (char*)option.mb_str(*wxConvCurrent) ); > > init(); > if( m_style & wxPLPLOT_ANTIALIZED ) { > m_image = new wxImage( m_width, m_height ); > cmd( PLESC_DEVINIT, (void*)m_image ); > } else > cmd( PLESC_DEVINIT, (void*)m_dc ); > } > > > /*! This is the overloaded set_stream() function, where we could have some > * code processed before every call of a plplot functions, since set_stream() > * is called before every plplot function. Not used in the moment. > */ > void wxPLplotstream::set_stream() > { > plstream::set_stream(); > } > > > /*! Call this method if the size of the dc changed (because of resizing) > * to set the new size. You need to call RenewPlot afterwards. > */ > void wxPLplotstream::SetSize( int width, int height ) > { > m_width=width; > m_height=height; > > if( m_style & wxPLPLOT_ANTIALIZED ) > m_image->Resize( wxSize(m_width, m_height), wxPoint(0, 0) ); > > wxSize size( m_width, m_height ); > cmd( PLESC_RESIZE, (void*)&size ); > } > > > /*! Clear the background and replot everything. TODO: actually this should > * not be necessary, but bop() is not working as it should? > */ > void wxPLplotstream::RenewPlot() > { > cmd( PLESC_CLEAR, NULL ); > replot(); > > if( m_style & wxPLPLOT_ANTIALIZED ) { > wxMemoryDC MemoryDC; > MemoryDC.SelectObject( wxBitmap(m_image, -1) ); > m_dc->Blit( 0, 0, m_width, m_height, &MemoryDC, 0, 0 ); > MemoryDC.SelectObject( wxNullBitmap ); > } > } > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Plplot-cvs mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/plplot-cvs > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel