9 #ifndef MRPT_WX_SUBSYSTEM_H 10 #define MRPT_WX_SUBSYSTEM_H 15 #include <mrpt/config.h> 27 #if MRPT_HAS_WXWIDGETS 30 #include <wx/statbmp.h> 32 #include <wx/toolbar.h> 35 #include <wx/statusbr.h> 36 #include <wx/msgdlg.h> 37 #include <wx/artprov.h> 38 #include <wx/bitmap.h> 41 #include <wx/string.h> 42 #include <wx/msgdlg.h> 43 #include <wx/filedlg.h> 44 #include <wx/progdlg.h> 45 #include <wx/imaglist.h> 46 #include <wx/busyinfo.h> 48 #include <wx/textdlg.h> 49 #include <wx/dirdlg.h> 50 #include <wx/colordlg.h> 51 #include <wx/dcmemory.h> 56 #include <mrpt/otherlibs/mathplot/mathplot.h> 60 #include <wx/chartpanel.h> 61 #include <wx/bars/barplot.h> 63 #include <wx/axis/numberaxis.h> 64 #include <wx/axis/categoryaxis.h> 65 #include <wx/axis/dateaxis.h> 67 #include <wx/xy/xyhistorenderer.h> 68 #include <wx/xy/xydataset.h> 69 #include <wx/xy/xylinerenderer.h> 70 #include <wx/xy/xyplot.h> 71 #include <wx/xy/xysimpledataset.h> 73 #include <wx/xyz/xyzdataset.h> 74 #include <wx/xyz/bubbleplot.h> 76 #include <wx/category/categorydataset.h> 77 #include <wx/category/categorysimpledataset.h> 101 #if MRPT_HAS_WXWIDGETS 107 static void waitWxShutdownsIfNoWindows();
141 static int notifyWindowCreation();
146 static int notifyWindowDestruction();
158 void OnTimerProcessRequests(wxTimerEvent& event);
160 DECLARE_EVENT_TABLE()
178 static void wxMainThread();
187 sourcePlots ( NULL ),
188 sourceCameraSelectDialog(false),
273 static bool createOneInstanceMainThread();
276 static wxBitmap getMRPTDefaultIcon();
286 #if MRPT_HAS_WXWIDGETS 312 void OnPaint(wxPaintEvent &ev);
315 void OnChar(wxKeyEvent& ev);
336 void OnClose (wxCloseEvent& event);
340 void OnChar(wxKeyEvent& event);
346 DECLARE_EVENT_TABLE()
369 const size_t unique_index,
378 const double font_size,
380 const size_t unique_index,
381 const double font_spacing,
382 const double font_kerning,
383 const bool has_shadow,
389 void OnClose (wxCloseEvent& event);
392 void OnChar(wxKeyEvent& event);
398 DECLARE_EVENT_TABLE()
440 bool showName =
false);
454 void OnClose (wxCloseEvent& event);
458 void OnChar(wxKeyEvent& event);
462 DECLARE_EVENT_TABLE()
467 #define _U(x) wxString((x),wxConvUTF8) 468 #define _UU(x,y) wxString((x),y) An auxiliary global object used just to launch a final request to the wxSubsystem for shutdown: ...
void OnMenuAbout(wxCommandEvent &event)
This class provides simple critical sections functionality.
void OnClose(wxCloseEvent &event)
mrpt::gui::CDisplayWindow3D * source3D
Only one of source* can be non-NULL, indicating the class that generated the request.
void OnMenuSave(wxCommandEvent &event)
friend class gui::CMyGLCanvas_DisplayWindow3D
void OnResize(wxSizeEvent &event)
The data structure for each inter-thread request:
Create a GUI window and display plots with MATLAB-like interfaces and commands.
void AssignImage(wxBitmap *img)
Assigns this image. This object has the ownship of the image and will delete it when appropriate...
void GetBitmap(wxBitmap &bmp)
void OnMenuClose(wxCommandEvent &event)
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction...
The wx dialog for gui::CDisplayWindowPlots.
mrpt::synch::CSemaphore m_semWxMainThreadReady
This is signaled when wxMainThread is ready.
void OnMenuClose(wxCommandEvent &event)
virtual ~wxMRPTImageControl()
void OnMouseClick(wxMouseEvent &ev)
wxPoint m_last_mouse_point
In pixels.
virtual ~C3DWindowDialog()
CDisplayWindow3D * m_win3D
static volatile CWXMainFrame * oneInstance
C3DWindowDialog(CDisplayWindow3D *win3D, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindow3D]"), wxSize initialSize=wxDefaultSize)
wxPoint m_last_mouse_point
wxMRPTImageControl(wxWindow *parent, wxWindowID winID, int x, int y, int width, int height)
void OnResize(wxSizeEvent &event)
WxSubsystem::CWXMainFrame * m_mainFrame
int OPCODE
Valid codes are: For CDisplayWindow:
GLubyte GLubyte GLubyte GLubyte w
void OnChar(wxKeyEvent &event)
static std::queue< TRequestToWxMainThread * > * listPendingWxRequests
Do not access directly to this, use the thread-safe functions.
static const long ID_MENUITEM1
CWindowDialogPlots(CDisplayWindowPlots *winPlots, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindowPlots]"), wxSize initialSize=wxDefaultSize)
wxMRPTImageControl * m_image
CDisplayWindowPlots * m_winPlots
static const long ID_PLOT
void OnKeyDown(wxKeyEvent &event)
void OnMouseDown(wxMouseEvent &event)
void OnMenuClose(wxCommandEvent &event)
void OnMenuSelected(wxCommandEvent &ev)
A custom control to display the bitmap and avoid flicker.
mrpt::math::TPoint2D m_curCursorPos
In graph coords.
void OnChar(wxKeyEvent &ev)
TOpenGLFont
Existing fonts for 2D texts in mrpt::opengl methods.
static synch::CCriticalSection * cs_listPendingWxRequests
void addTextMessage(const double x_frac, const double y_frac, const std::string &text, const mrpt::utils::TColorf &color, const size_t unique_index, const mrpt::opengl::TOpenGLFont font)
TOpenGLFontStyle
Different style for vectorized font rendering.
This class creates a window as a graphical user interface (GUI) for displaying images to the user...
void plot(const mrpt::math::CVectorFloat &x, const mrpt::math::CVectorFloat &y, const std::string &lineFormat, const std::string &plotName)
Redirected from CDisplayWindowPlots::plot.
mrpt::math::CVectorFloat vector_y
The main frame of the wxWidgets application.
void OnPaint(wxPaintEvent &ev)
The wx dialog for gui::CDisplayWindow.
bool sourceCameraSelectDialog
Only one of source* can be non-NULL, indicating the class that generated the request.
void OnMouseMove(wxMouseEvent &event)
GLsizei const GLchar ** string
void image(void *theWxImage, const float &x0, const float &y0, const float &w, const float &h, const std::string &plotName)
Redirected from CDisplayWindowPlots::image.
void OnChar(wxKeyEvent &event)
void OnMouseMove(wxMouseEvent &event)
static void waitWxShutdownsIfNoWindows()
This method must be called in the destructor of the user class FROM THE MAIN THREAD, in order to wait for the shutdown of the wx thread if this was the last open window.
virtual ~CWindowDialogPlots()
static const long ID_MENU_PRINT
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
WxSubsystem::CWXMainFrame * m_mainFrame
void OnResize(wxSizeEvent &event)
This class implements the GUI thread required for the wxWidgets-based GUI.
void OnClose(wxCloseEvent &event)
void OnMenuAbout(wxCommandEvent &event)
void plotEllipse(const mrpt::math::CVectorFloat &x, const mrpt::math::CVectorFloat &y, const std::string &lineFormat, const std::string &plotName, bool showName=false)
Redirected from CDisplayWindowPlots::plotEllipse.
static const long ID_IMAGE_BITMAP
void OnMouseDown(wxMouseEvent &event)
CWindowDialog(CDisplayWindow *win2D, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindow]"), wxSize initialSize=wxDefaultSize)
A RGB color - floats in the range [0,1].
static CAuxWxSubsystemShutdowner global_wxsubsystem_shutdown
mrpt::synch::CCriticalSection m_img_cs
mrpt::gui::CDisplayWindowPlots * sourcePlots
Only one of source* can be non-NULL, indicating the class that generated the request.
mrpt::synch::CCriticalSection m_csWxMainThreadId
The critical section for accessing "m_wxMainThreadId".
void OnClose(wxCloseEvent &event)
std::map< long, long > m_ID2ID
wxIDs to user IDs for submenus.
void OnMenuPrint(wxCommandEvent &event)
static synch::CCriticalSection cs_windowCount
static volatile bool isConsoleApp
Will be set to true at runtime if it's not detected a running wxApp instance.
mrpt::gui::CDisplayWindow * source2D
Only one of source* can be non-NULL, indicating the class that generated the request.
void OnMouseMove(wxMouseEvent &ev)
void OnMenuAbout(wxCommandEvent &event)
GLenum GLsizei GLsizei height
void OnChar(wxKeyEvent &event)
std::string str
Parameters, depending on OPCODE.
WxSubsystem::CWXMainFrame * m_mainFrame
GLsizei GLsizei GLenum GLenum const GLvoid * data
mrpt::system::TThreadHandle m_wxMainThreadId
The thread ID of wxMainThread, or 0 if it is not running.
static const long ID_MENUITEM2
A semaphore for inter-thread synchronization.
void OnEraseBackground(wxEraseEvent &ev)
CMyGLCanvas_DisplayWindow3D * m_canvas
wxPoint m_last_mouse_click
A graphical user interface (GUI) for efficiently rendering 3D scenes in real-time.
bool m_firstSubmenu
to know whether to insert a separator the first time.