Pastey A Graph Dialog Demo
- Posted by ghaberek (admin) Dec 19, 2014
-- test2.ex -------------------------------------------------------------------- include wxeu/wxeud.e include graph.ew constant NULL = 0, wxID_ANY = -1, wxID_TIMER1 = new_id(), $ constant myFrame = create( wxFrame, {NULL, wxID_ANY, "", -1, -1, 400, 300} ), myPanel = create( wxPanel, {myFrame} ), myTimer = create( wxTimer, {myFrame, wxID_TIMER1} ), myButton = create( wxButton, {myPanel, wxID_ANY, "GRAPH", 10, 10, 90, 30} ), $ procedure myButton_OnClick( atom this, atom event_type, atom id, atom event ) sequence message = "" integer result = show_graph( myFrame, {} ) if result = wxOK then message = "User clicked the OK button" else message = "User closed the window" end if message_box( message, "", wxICON_INFORMATION ) end procedure set_event_handler( myButton, -1, wxEVT_COMMAND_BUTTON_CLICKED, routine_id("myButton_OnClick") ) wxMain( myFrame ) -- graph.ew -------------------------------------------------------------------- include wxeu/wxeud.e atom myDialog, myBuffer, myButton constant BLACK = create( wxColour, {"BLACK"} ) constant GREEN = create( wxColour, {"GREEN"} ) constant WHITE = create( wxColour, {"WHITE"} ) procedure draw_values( atom bmp, sequence values ) atom dc = create( wxMemoryDC, {bmp} ) -- begin drawing here atom pen = create( wxPen, {GREEN,1,wxSOLID} ) atom brush = create( wxBrush, {WHITE,wxSOLID} ) sequence size = get_dc_size( dc ) set_pen( dc, pen ) set_back_brush( dc, brush ) set_text_color( dc, BLACK ) -- fill the DC with a rectangle draw_rectangle( dc, 0, 0, size[1], size[2] ) -- draw some text wx_puts( {bmp,10,size[2]-24,dc}, "Graph" ) -- cleanup our objects delete_instance( brush ) delete_instance( pen ) -- end drawing here delete_instance( dc ) end procedure procedure myDialog_OnPaint( atom this, atom event_type, atom id, atom event ) atom dc = create( wxPaintDC, {this} ) begin_drawing( dc ) -- begin drawing here -- draw the buffer to the screen draw_bitmap( dc, myBuffer, 10, 10, wxFalse ) -- end drawing here end_drawing( dc ) delete_instance( dc ) end procedure procedure myButton_OnClick( atom this, atom event_type, atom id, atom event ) -- OK button was clicked end_modal( myDialog, wxOK ) end procedure public function show_graph( atom parent, sequence values ) -- get the current location of the parent sequence rect = get_rect( parent ) -- create the dialog, slightly offset from the parent window myDialog = create( wxDialog, {parent, -1, "Graph", rect[1]+20, rect[2]+20, 400, 300} ), set_event_handler( myDialog, -1, wxEVT_PAINT, routine_id("myDialog_OnPaint") ) -- create the bitmap sequence size = get_client_size( myDialog ) myBuffer = create( wxBitmap, {BM_IN_MEMORY, size[1]-20, size[2]-60} ) -- create the "OK" button myButton = create( wxButton, {myDialog, -1, "OK", size[1]-100, size[2]-40, 90, 30} ) set_event_handler( myButton, -1, wxEVT_COMMAND_BUTTON_CLICKED, routine_id("myButton_OnClick") ) -- draw the values to the buffer draw_values( myBuffer, values ) -- show the dialog integer result = show_modal( myDialog ) -- destroy the dialog destroy( myDialog ) return result end function


