wxruby3 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/INSTALL.md +35 -29
- data/README.md +24 -15
- data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
- data/ext/wxruby3/include/wxruby-Validator.h +39 -0
- data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
- data/ext/wxruby3/swig/custom/director.swg +8 -0
- data/ext/wxruby3/swig/mark_free_impl.i +0 -33
- data/lib/wx/core/bitmap_combobox.rb +17 -21
- data/lib/wx/core/combobox.rb +13 -3
- data/lib/wx/core/controlwithitems.rb +40 -130
- data/lib/wx/core/enum.rb +17 -1
- data/lib/wx/core/event.rb +6 -1
- data/lib/wx/core/evthandler.rb +8 -2
- data/lib/wx/core/generic_validator.rb +312 -0
- data/lib/wx/core/listbox.rb +2 -2
- data/lib/wx/core/log.rb +1 -1
- data/lib/wx/core/owner_drawn_combobox.rb +45 -0
- data/lib/wx/core/size.rb +4 -0
- data/lib/wx/core/sizer.rb +1 -2
- data/lib/wx/core/standard_paths.rb +22 -0
- data/lib/wx/core/text_entry.rb +4 -1
- data/lib/wx/core/validator.rb +70 -5
- data/lib/wx/core/window.rb +3 -7
- data/lib/wx/doc/art_locator.rb +1 -0
- data/lib/wx/doc/comboctrl.rb +18 -0
- data/lib/wx/doc/controlwithitems.rb +16 -0
- data/lib/wx/doc/date_picker_ctrl.rb +23 -0
- data/lib/wx/doc/editable_listbox.rb +44 -0
- data/lib/wx/doc/enum.rb +15 -0
- data/lib/wx/doc/event.rb +12 -0
- data/lib/wx/doc/extra/12_client_data.md +89 -0
- data/lib/wx/doc/extra/13_validators.md +139 -0
- data/lib/wx/doc/gdi_common.rb +4 -0
- data/lib/wx/doc/generic_validator.rb +95 -0
- data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
- data/lib/wx/doc/num_validator.rb +387 -0
- data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
- data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
- data/lib/wx/doc/static_bitmap.rb +25 -0
- data/lib/wx/doc/text_validator.rb +10 -0
- data/lib/wx/doc/validator.rb +113 -0
- data/lib/wx/doc/window.rb +30 -0
- data/lib/wx/html/simple_html_listbox.rb +24 -91
- data/lib/wx/keyword_defs.rb +34 -2
- data/lib/wx/rbn/ribbon_gallery.rb +0 -21
- data/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/mingw.rb +12 -0
- data/rakelib/lib/core/include/client_data.inc +65 -0
- data/rakelib/lib/core/include/funcall.inc +1 -1
- data/rakelib/lib/core/package.rb +17 -2
- data/rakelib/lib/core/parameter.rb +1 -1
- data/rakelib/lib/core/spec_helper.rb +7 -1
- data/rakelib/lib/director/app.rb +18 -0
- data/rakelib/lib/director/app_traits.rb +3 -1
- data/rakelib/lib/director/bitmap_combobox.rb +2 -2
- data/rakelib/lib/director/combobox.rb +22 -0
- data/rakelib/lib/director/comboctrl.rb +1 -55
- data/rakelib/lib/director/ctrl_with_items.rb +88 -21
- data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
- data/rakelib/lib/director/editable_listbox.rb +30 -0
- data/rakelib/lib/director/event.rb +102 -12
- data/rakelib/lib/director/event_handler.rb +3 -2
- data/rakelib/lib/director/functions.rb +4 -2
- data/rakelib/lib/director/generic_dirctrl.rb +17 -0
- data/rakelib/lib/director/grid_cell_attr.rb +0 -2
- data/rakelib/lib/director/grid_cell_editor.rb +0 -2
- data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
- data/rakelib/lib/director/header_ctrl.rb +6 -1
- data/rakelib/lib/director/html_listbox.rb +96 -22
- data/rakelib/lib/director/num_validator.rb +495 -0
- data/rakelib/lib/director/numeric_property_validator.rb +131 -6
- data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
- data/rakelib/lib/director/pgproperty.rb +3 -29
- data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
- data/rakelib/lib/director/ribbon_gallery.rb +3 -5
- data/rakelib/lib/director/sizer.rb +15 -4
- data/rakelib/lib/director/sizer_item.rb +13 -0
- data/rakelib/lib/director/static_bitmap.rb +28 -0
- data/rakelib/lib/director/text_entry.rb +4 -0
- data/rakelib/lib/director/text_validator.rb +124 -13
- data/rakelib/lib/director/toggle_button.rb +1 -0
- data/rakelib/lib/director/top_level_window.rb +0 -2
- data/rakelib/lib/director/tree_ctrl.rb +35 -0
- data/rakelib/lib/director/utils.rb +16 -2
- data/rakelib/lib/director/validator.rb +196 -21
- data/rakelib/lib/director/window.rb +16 -2
- data/rakelib/lib/extractor/function.rb +2 -1
- data/rakelib/lib/generate/analyzer.rb +1 -1
- data/rakelib/lib/generate/doc.rb +10 -4
- data/rakelib/lib/specs/interfaces.rb +2 -0
- data/rakelib/lib/swig_runner.rb +55 -9
- data/rakelib/lib/typemap/client_data.rb +67 -0
- data/rakelib/lib/typemap/common.rb +3 -3
- data/rakelib/lib/typemap/datetime.rb +1 -1
- data/rakelib/lib/typemap/tree_itemid.rb +2 -2
- data/samples/aui/aui.rb +1237 -1233
- data/samples/calendar/calendar.rb +293 -289
- data/samples/controls/get_item_sample.rb +83 -79
- data/samples/controls/htlbox.rb +331 -327
- data/samples/dialogs/dialogs.rb +682 -694
- data/samples/dialogs/wizard.rb +52 -55
- data/samples/dragdrop/dragdrop.rb +146 -142
- data/samples/drawing/bitmap.rb +29 -26
- data/samples/drawing/bitmap_image.rb +84 -80
- data/samples/drawing/graphics_drawing.rb +209 -205
- data/samples/drawing/image_prt.rb +344 -340
- data/samples/drawing/maths_images.rb +18 -1
- data/samples/drawing/rmagic_bitmap_image.rb +88 -84
- data/samples/etc/caret.rb +306 -0
- data/samples/etc/miniframe.rb +65 -60
- data/samples/etc/sash.rb +109 -105
- data/samples/etc/scrollwin.rb +86 -80
- data/samples/etc/system_settings.rb +216 -209
- data/samples/event/activation.rb +72 -67
- data/samples/event/event.rb +160 -153
- data/samples/event/threaded.rb +8 -1
- data/samples/event/update_ui_event.rb +67 -60
- data/samples/grid/grid.rb +188 -181
- data/samples/grid/gridtablebase.rb +136 -129
- data/samples/html/html.rb +208 -204
- data/samples/mdi/mdi.rb +59 -54
- data/samples/minimal/minimal.rb +54 -51
- data/samples/minimal/nothing.rb +1 -0
- data/samples/printing/printing.rb +367 -377
- data/samples/printing/printing2.rb +203 -198
- data/samples/propgrid/propgrid.rb +2312 -2308
- data/samples/propgrid/propgrid_minimal.rb +57 -50
- data/samples/ribbon/ribbon.rb +780 -774
- data/samples/sampler/ext.rb +0 -33
- data/samples/sampler/sample.rb +4 -9
- data/samples/sampler.rb +1 -1
- data/samples/splash/splash.rb +118 -116
- data/samples/text/rich_textctrl.rb +207 -201
- data/samples/text/richtext.rb +1409 -1405
- data/samples/text/scintilla.rb +137 -128
- data/samples/text/textctrl.rb +89 -83
- data/samples/text/unicode.rb +175 -168
- data/samples/treectrl/treectrl.rb +1430 -1426
- data/samples/widgets/activityindicator.rb +95 -0
- data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
- data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
- data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/button.xpm +54 -0
- data/samples/widgets/art/widgets/checkbox.xpm +54 -0
- data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
- data/samples/widgets/art/widgets/choicebk.xpm +54 -0
- data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
- data/samples/widgets/art/widgets/combobox.xpm +54 -0
- data/samples/widgets/art/widgets/datepick.xpm +200 -0
- data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
- data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
- data/samples/widgets/art/widgets/filepicker.xpm +214 -0
- data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
- data/samples/widgets/art/widgets/gauge.xpm +54 -0
- data/samples/widgets/art/widgets/header.xpm +54 -0
- data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
- data/samples/widgets/art/widgets/listbook.xpm +54 -0
- data/samples/widgets/art/widgets/listbox.xpm +54 -0
- data/samples/widgets/art/widgets/native.xpm +81 -0
- data/samples/widgets/art/widgets/notebook.xpm +54 -0
- data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
- data/samples/widgets/art/widgets/radiobox.xpm +54 -0
- data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
- data/samples/widgets/art/widgets/slider.xpm +54 -0
- data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
- data/samples/widgets/art/widgets/statbmp.xpm +40 -0
- data/samples/widgets/art/widgets/statbox.xpm +54 -0
- data/samples/widgets/art/widgets/stattext.xpm +54 -0
- data/samples/widgets/art/widgets/text.xpm +54 -0
- data/samples/widgets/art/widgets/timepick.xpm +207 -0
- data/samples/widgets/art/widgets/toggle.xpm +54 -0
- data/samples/widgets/art/widgets/toucan.png +0 -0
- data/samples/widgets/bmpcombobox.rb +651 -0
- data/samples/widgets/button.rb +462 -0
- data/samples/widgets/checkbox.rb +211 -0
- data/samples/widgets/choice.rb +287 -0
- data/samples/widgets/clrpicker.rb +156 -0
- data/samples/widgets/combobox.rb +516 -0
- data/samples/widgets/datepick.rb +215 -0
- data/samples/widgets/dirctrl.rb +265 -0
- data/samples/widgets/dirpicker.rb +158 -0
- data/samples/widgets/editlbox.rb +122 -0
- data/samples/widgets/filectrl.rb +216 -0
- data/samples/widgets/filepicker.rb +214 -0
- data/samples/widgets/fontpicker.rb +135 -0
- data/samples/widgets/gauge.rb +311 -0
- data/samples/widgets/headerctrl.rb +236 -0
- data/samples/widgets/hyperlink.rb +203 -0
- data/samples/widgets/itemcontainer.rb +185 -0
- data/samples/widgets/listbox.rb +473 -0
- data/samples/widgets/notebook.rb +488 -0
- data/samples/widgets/odcombobox.rb +608 -0
- data/samples/widgets/radiobox.rb +328 -0
- data/samples/widgets/searchctrl.rb +159 -0
- data/samples/widgets/slider.rb +594 -0
- data/samples/widgets/spinbtn.rb +443 -0
- data/samples/widgets/statbmp.rb +130 -0
- data/samples/widgets/static.rb +436 -0
- data/samples/widgets/textctrl.rb +700 -0
- data/samples/widgets/timepick.rb +148 -0
- data/samples/widgets/tn_widgets.png +0 -0
- data/samples/widgets/toggle.rb +385 -0
- data/samples/widgets/widgets.rb +1233 -0
- data/samples/xrc/custom_xrc_sample.rb +47 -41
- data/samples/xrc/xrc_sample.rb +53 -47
- data/tests/test_event_handling.rb +52 -34
- data/tests/test_events.rb +7 -0
- data/tests/test_item_data.rb +24 -0
- data/tests/test_sizer.rb +44 -1
- data/tests/test_validators.rb +805 -0
- metadata +92 -138
- data/lib/wx/core/choice.rb +0 -14
- data/lib/wx/core/combo_ctrl.rb +0 -110
- data/rakelib/lib/typemap/grid_client_data.rb +0 -58
- data/samples/bigdemo/About.rbw +0 -39
- data/samples/bigdemo/ColorPanel.rbw +0 -23
- data/samples/bigdemo/GridSimple.rbw +0 -78
- data/samples/bigdemo/MDIDemo.rbw +0 -57
- data/samples/bigdemo/PopupMenu.rbw +0 -146
- data/samples/bigdemo/ShapedWindow.rbw +0 -128
- data/samples/bigdemo/Sizers.rbw +0 -541
- data/samples/bigdemo/bigdemo.rb +0 -817
- data/samples/bigdemo/demoTemplate.rbw +0 -33
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +0 -27
- data/samples/bigdemo/icons/copy.xpm +0 -25
- data/samples/bigdemo/icons/cut.xpm +0 -24
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +0 -27
- data/samples/bigdemo/icons/help.xpm +0 -25
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +0 -27
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +0 -44
- data/samples/bigdemo/icons/new.xpm +0 -24
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +0 -45
- data/samples/bigdemo/icons/open.xpm +0 -26
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +0 -38
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +0 -26
- data/samples/bigdemo/icons/print.xpm +0 -26
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +0 -27
- data/samples/bigdemo/icons/robert.xpm +0 -415
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +0 -25
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +0 -39
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +0 -42
- data/samples/bigdemo/icons/stattext.xpm +0 -24
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +0 -79
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +0 -27
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +0 -38
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +0 -38
- data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +0 -98
- data/samples/bigdemo/tips.txt +0 -7
- data/samples/bigdemo/utils.rb +0 -20
- data/samples/bigdemo/wxArtProvider.rbw +0 -282
- data/samples/bigdemo/wxBitmapButton.rbw +0 -65
- data/samples/bigdemo/wxButton.rbw +0 -64
- data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
- data/samples/bigdemo/wxCheckBox.rbw +0 -50
- data/samples/bigdemo/wxCheckListBox.rbw +0 -65
- data/samples/bigdemo/wxChoice.rbw +0 -47
- data/samples/bigdemo/wxChoicebook.rbw +0 -78
- data/samples/bigdemo/wxColourDialog.rbw +0 -33
- data/samples/bigdemo/wxComboBox.rbw +0 -77
- data/samples/bigdemo/wxCursor.rbw +0 -136
- data/samples/bigdemo/wxDialog.rbw +0 -74
- data/samples/bigdemo/wxDirDialog.rbw +0 -29
- data/samples/bigdemo/wxDragImage.rbw +0 -70
- data/samples/bigdemo/wxFileDialog.rbw +0 -37
- data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
- data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
- data/samples/bigdemo/wxFontDialog.rbw +0 -200
- data/samples/bigdemo/wxFrame.rbw +0 -53
- data/samples/bigdemo/wxGauge.rbw +0 -65
- data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
- data/samples/bigdemo/wxGrid.rbw +0 -66
- data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
- data/samples/bigdemo/wxListBox.rbw +0 -140
- data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
- data/samples/bigdemo/wxMDIWindows.rbw +0 -50
- data/samples/bigdemo/wxMenu.rbw +0 -247
- data/samples/bigdemo/wxMessageDialog.rbw +0 -27
- data/samples/bigdemo/wxMiniFrame.rbw +0 -70
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
- data/samples/bigdemo/wxNotebook.rbw +0 -136
- data/samples/bigdemo/wxProgressDialog.rbw +0 -43
- data/samples/bigdemo/wxRadioBox.rbw +0 -72
- data/samples/bigdemo/wxRadioButton.rbw +0 -125
- data/samples/bigdemo/wxSashWindow.rbw +0 -141
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
- data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
- data/samples/bigdemo/wxSlider.rbw +0 -42
- data/samples/bigdemo/wxSpinButton.rbw +0 -50
- data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
- data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
- data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
- data/samples/bigdemo/wxStaticText.rbw +0 -55
- data/samples/bigdemo/wxStatusBar.rbw +0 -126
- data/samples/bigdemo/wxTextCtrl.rbw +0 -149
- data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
- data/samples/bigdemo/wxToggleButton.rbw +0 -49
- data/samples/bigdemo/wxToolBar.rbw +0 -131
- data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
- data/samples/caret/caret.rb +0 -298
- data/samples/caret/mondrian.xpm +0 -44
- data/samples/controls/books.rb +0 -189
- data/samples/controls/choice.xpm +0 -27
- data/samples/controls/combo.xpm +0 -27
- data/samples/controls/controls.rb +0 -1099
- data/samples/controls/gauge.xpm +0 -27
- data/samples/controls/list.xpm +0 -27
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +0 -44
- data/samples/controls/radio.xpm +0 -27
- data/samples/controls/stattext.xpm +0 -24
- data/samples/controls/test2.bmp +0 -0
- data/samples/controls/text.xpm +0 -27
- data/samples/controls/tn_books.png +0 -0
- data/samples/controls/tn_controls.png +0 -0
- data/samples/etc/choice.rb +0 -87
- data/samples/etc/tn_choice.png +0 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +0 -44
- /data/samples/{caret → etc}/tn_caret.png +0 -0
|
@@ -11,227 +11,232 @@
|
|
|
11
11
|
|
|
12
12
|
require 'wx'
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# A printout class that is able to print simple text documents.
|
|
17
|
-
# Does not handle page numbers or titles, and it assumes that no
|
|
18
|
-
# lines are longer than what will fit within the page width. Those
|
|
19
|
-
# features are left as an exercise for the reader. ;-)
|
|
20
|
-
class TextDocPrintout < Wx::PRT::Printout
|
|
21
|
-
|
|
22
|
-
def initialize(text, title, margins)
|
|
23
|
-
super(title)
|
|
24
|
-
@lines = text.split("\n")
|
|
25
|
-
@margins = margins
|
|
26
|
-
@num_pages = 0
|
|
27
|
-
end
|
|
14
|
+
module Printing2
|
|
28
15
|
|
|
29
|
-
|
|
30
|
-
page <= @num_pages
|
|
31
|
-
end
|
|
16
|
+
FONTSIZE = 10
|
|
32
17
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
# A printout class that is able to print simple text documents.
|
|
19
|
+
# Does not handle page numbers or titles, and it assumes that no
|
|
20
|
+
# lines are longer than what will fit within the page width. Those
|
|
21
|
+
# features are left as an exercise for the reader. ;-)
|
|
22
|
+
class TextDocPrintout < Wx::PRT::Printout
|
|
36
23
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
# Now adjust if the real page size is reduced (such as when
|
|
45
|
-
# drawing on a scaled Wx::MemoryDC in the Print Preview.) If
|
|
46
|
-
# page width == DC width then nothing changes, otherwise we
|
|
47
|
-
# scale down for the DC.
|
|
48
|
-
pw, ph = get_page_size_pixels
|
|
49
|
-
dsz = dc.get_size
|
|
50
|
-
scale = logScale * (dsz.width.to_f / pw.to_f)
|
|
51
|
-
|
|
52
|
-
# Set the DC's scale.
|
|
53
|
-
dc.set_user_scale(scale, scale)
|
|
54
|
-
|
|
55
|
-
# Find the logical units per millimeter (for calculating the
|
|
56
|
-
# margins)
|
|
57
|
-
@log_units_mm = ppiPrinterX.to_f / (logScale*25.4)
|
|
58
|
-
end
|
|
24
|
+
def initialize(text, title, margins)
|
|
25
|
+
super(title)
|
|
26
|
+
@lines = text.split("\n")
|
|
27
|
+
@margins = margins
|
|
28
|
+
@num_pages = 0
|
|
29
|
+
end
|
|
59
30
|
|
|
31
|
+
def has_page(page)
|
|
32
|
+
page <= @num_pages
|
|
33
|
+
end
|
|
60
34
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
bottomRight, topLeft = @margins
|
|
65
|
-
dsz = dc.get_size
|
|
66
|
-
@x1 = topLeft.x * @log_units_mm
|
|
67
|
-
@y1 = topLeft.y * @log_units_mm
|
|
68
|
-
@x2 = dc.device_to_logical_x_rel(dsz.width) - bottomRight.x * @log_units_mm
|
|
69
|
-
@y2 = dc.device_to_logical_y_rel(dsz.height) - bottomRight.y * @log_units_mm
|
|
70
|
-
|
|
71
|
-
# use a 1mm buffer around the inside of the box, and a few
|
|
72
|
-
# pixels between each line
|
|
73
|
-
@pageHeight = @y2 - @y1 - 2*@log_units_mm
|
|
74
|
-
font = Wx::Font.new(FONTSIZE, Wx::FONTFAMILY_TELETYPE,
|
|
75
|
-
Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL)
|
|
76
|
-
dc.set_font(font)
|
|
77
|
-
@lineHeight = dc.char_height
|
|
78
|
-
@linesPerPage = @pageHeight.div @lineHeight
|
|
79
|
-
end
|
|
35
|
+
def get_page_info
|
|
36
|
+
[1, @num_pages, 1, @num_pages]
|
|
37
|
+
end
|
|
80
38
|
|
|
39
|
+
def calculate_scale(dc)
|
|
40
|
+
# Scale the DC such that the printout is roughly the same as
|
|
41
|
+
# the screen scaling.
|
|
42
|
+
ppiPrinterX, ppiPrinterY = get_ppi_printer
|
|
43
|
+
ppiScreenX, ppiScreenY = get_ppi_screen
|
|
44
|
+
logScale = ppiPrinterX.to_f / ppiScreenX.to_f
|
|
45
|
+
|
|
46
|
+
# Now adjust if the real page size is reduced (such as when
|
|
47
|
+
# drawing on a scaled Wx::MemoryDC in the Print Preview.) If
|
|
48
|
+
# page width == DC width then nothing changes, otherwise we
|
|
49
|
+
# scale down for the DC.
|
|
50
|
+
pw, ph = get_page_size_pixels
|
|
51
|
+
dsz = dc.get_size
|
|
52
|
+
scale = logScale * (dsz.width.to_f / pw.to_f)
|
|
53
|
+
|
|
54
|
+
# Set the DC's scale.
|
|
55
|
+
dc.set_user_scale(scale, scale)
|
|
56
|
+
|
|
57
|
+
# Find the logical units per millimeter (for calculating the
|
|
58
|
+
# margins)
|
|
59
|
+
@log_units_mm = ppiPrinterX.to_f / (logScale*25.4)
|
|
60
|
+
end
|
|
81
61
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
62
|
+
|
|
63
|
+
def calculate_layout(dc)
|
|
64
|
+
# Determine the position of the margins and the
|
|
65
|
+
# page/line height
|
|
66
|
+
bottomRight, topLeft = @margins
|
|
67
|
+
dsz = dc.get_size
|
|
68
|
+
@x1 = topLeft.x * @log_units_mm
|
|
69
|
+
@y1 = topLeft.y * @log_units_mm
|
|
70
|
+
@x2 = dc.device_to_logical_x_rel(dsz.width) - bottomRight.x * @log_units_mm
|
|
71
|
+
@y2 = dc.device_to_logical_y_rel(dsz.height) - bottomRight.y * @log_units_mm
|
|
72
|
+
|
|
73
|
+
# use a 1mm buffer around the inside of the box, and a few
|
|
74
|
+
# pixels between each line
|
|
75
|
+
@pageHeight = @y2 - @y1 - 2*@log_units_mm
|
|
76
|
+
font = Wx::Font.new(FONTSIZE, Wx::FONTFAMILY_TELETYPE,
|
|
77
|
+
Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL)
|
|
78
|
+
dc.set_font(font)
|
|
79
|
+
@lineHeight = dc.char_height
|
|
80
|
+
@linesPerPage = @pageHeight.div @lineHeight
|
|
81
|
+
end
|
|
90
82
|
|
|
91
83
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
dc.set_brush(Wx::TRANSPARENT_BRUSH)
|
|
100
|
-
r = Wx::Rect.new(Wx::Point.new(@x1.to_i, @y1.to_i), Wx::Point.new(@x2.to_i, @y2.to_i))
|
|
101
|
-
dc.draw_rectangle(r)
|
|
102
|
-
dc.set_clipping_region(r)
|
|
103
|
-
|
|
104
|
-
# Draw the text lines for this page
|
|
105
|
-
line = (page-1) * @linesPerPage
|
|
106
|
-
x = (@x1 + @log_units_mm).to_i
|
|
107
|
-
y = (@y1 + @log_units_mm).to_i
|
|
108
|
-
while line < (page * @linesPerPage)
|
|
109
|
-
dc.draw_text(@lines[line], x, y)
|
|
110
|
-
y += @lineHeight
|
|
111
|
-
line += 1
|
|
112
|
-
break if line >= @lines.size
|
|
84
|
+
def on_prepare_printing
|
|
85
|
+
# calculate the number of pages
|
|
86
|
+
dc = get_dc
|
|
87
|
+
calculate_scale(dc)
|
|
88
|
+
calculate_layout(dc)
|
|
89
|
+
@num_pages = @lines.size / @linesPerPage
|
|
90
|
+
@num_pages += 1 unless (@lines.size % @linesPerPage) == 0
|
|
113
91
|
end
|
|
114
|
-
true
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
92
|
|
|
118
|
-
class SamplePrintFrame < Wx::Frame
|
|
119
|
-
def initialize
|
|
120
|
-
super(nil, size: [640, 480], title: 'Print Framework Sample')
|
|
121
|
-
create_status_bar
|
|
122
|
-
|
|
123
|
-
# A text widget to display the doc and let it be edited
|
|
124
|
-
@tc = Wx::TextCtrl.new(self, -1, "",
|
|
125
|
-
style:Wx::TE_MULTILINE|Wx::TE_DONTWRAP)
|
|
126
|
-
@tc.set_font(Wx::Font.new(FONTSIZE, Wx::FONTFAMILY_TELETYPE,
|
|
127
|
-
Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL))
|
|
128
|
-
filename = File.join(File.dirname(__FILE__), 'sample-text.txt')
|
|
129
|
-
@tc.set_value(File.read(filename))
|
|
130
|
-
@tc.evt_set_focus { |evt| on_clear_selection(evt) }
|
|
131
|
-
@tc.call_after(:set_insertion_point, 0)
|
|
132
|
-
|
|
133
|
-
# Create the menu and menubar
|
|
134
|
-
menu = Wx::Menu.new
|
|
135
|
-
item = menu.append(-1, "Page Setup...\tF5",
|
|
136
|
-
"Set up page margins and etc.")
|
|
137
|
-
evt_menu(item, :on_page_setup)
|
|
138
|
-
item = menu.append(-1, "Print Preview...\tF6",
|
|
139
|
-
"View the printout on-screen")
|
|
140
|
-
evt_menu(item, :on_print_preview)
|
|
141
|
-
item = menu.append(-1, "Print...\tF7", "Print the document")
|
|
142
|
-
evt_menu(item, :on_print)
|
|
143
|
-
menu.append_separator
|
|
144
|
-
## item = menu.Append(-1, "Test other stuff...\tF9", "")
|
|
145
|
-
## self.Bind(Wx::EVT_MENU, self.OnPrintTest, item)
|
|
146
|
-
## menu.AppendSeparator()
|
|
147
|
-
|
|
148
|
-
item = menu.append(Wx::ID_ABOUT, "About", "About this application")
|
|
149
|
-
evt_menu(item, :on_about)
|
|
150
|
-
item = menu.append(Wx::ID_EXIT, "E&xit\tCtrl-Q", "Close this application")
|
|
151
|
-
evt_menu(item, :on_exit)
|
|
152
|
-
|
|
153
|
-
menubar = Wx::MenuBar.new
|
|
154
|
-
menubar.append(menu, "&File")
|
|
155
|
-
self.menu_bar = menubar
|
|
156
|
-
|
|
157
|
-
# initialize the print data and set some default values
|
|
158
|
-
@pdata = Wx::PrintData.new
|
|
159
|
-
@pdata.set_paper_id(Wx::PAPER_LETTER)
|
|
160
|
-
@pdata.set_orientation(Wx::PORTRAIT)
|
|
161
|
-
@margins = [Wx::Point.new(15,15), Wx::Point.new(15,15)]
|
|
162
|
-
end
|
|
163
93
|
|
|
164
|
-
|
|
165
|
-
|
|
94
|
+
def on_print_page(page)
|
|
95
|
+
dc = get_dc
|
|
96
|
+
calculate_scale(dc)
|
|
97
|
+
calculate_layout(dc)
|
|
98
|
+
|
|
99
|
+
# draw a page outline at the margin points
|
|
100
|
+
dc.set_pen(Wx::Pen.new(Wx::Colour.new("black"), 0))
|
|
101
|
+
dc.set_brush(Wx::TRANSPARENT_BRUSH)
|
|
102
|
+
r = Wx::Rect.new(Wx::Point.new(@x1.to_i, @y1.to_i), Wx::Point.new(@x2.to_i, @y2.to_i))
|
|
103
|
+
dc.draw_rectangle(r)
|
|
104
|
+
dc.set_clipping_region(r)
|
|
105
|
+
|
|
106
|
+
# Draw the text lines for this page
|
|
107
|
+
line = (page-1) * @linesPerPage
|
|
108
|
+
x = (@x1 + @log_units_mm).to_i
|
|
109
|
+
y = (@y1 + @log_units_mm).to_i
|
|
110
|
+
while line < (page * @linesPerPage)
|
|
111
|
+
dc.draw_text(@lines[line], x, y)
|
|
112
|
+
y += @lineHeight
|
|
113
|
+
line += 1
|
|
114
|
+
break if line >= @lines.size
|
|
115
|
+
end
|
|
116
|
+
true
|
|
117
|
+
end
|
|
166
118
|
end
|
|
167
119
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
Print
|
|
120
|
+
class SamplePrintFrame < Wx::Frame
|
|
121
|
+
def initialize
|
|
122
|
+
super(nil, size: [640, 480], title: 'Print Framework Sample')
|
|
123
|
+
self.icon = Wx.Icon(:sample, Wx::BITMAP_TYPE_XPM, art_path: File.join(__dir__, '..'))
|
|
124
|
+
create_status_bar
|
|
125
|
+
|
|
126
|
+
# A text widget to display the doc and let it be edited
|
|
127
|
+
@tc = Wx::TextCtrl.new(self, -1, "",
|
|
128
|
+
style:Wx::TE_MULTILINE|Wx::TE_DONTWRAP)
|
|
129
|
+
@tc.set_font(Wx::Font.new(FONTSIZE, Wx::FONTFAMILY_TELETYPE,
|
|
130
|
+
Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL))
|
|
131
|
+
filename = File.join(File.dirname(__FILE__), 'sample-text.txt')
|
|
132
|
+
@tc.set_value(File.read(filename))
|
|
133
|
+
@tc.evt_set_focus { |evt| on_clear_selection(evt) }
|
|
134
|
+
@tc.call_after(:set_insertion_point, 0)
|
|
135
|
+
|
|
136
|
+
# Create the menu and menubar
|
|
137
|
+
menu = Wx::Menu.new
|
|
138
|
+
item = menu.append(-1, "Page Setup...\tF5",
|
|
139
|
+
"Set up page margins and etc.")
|
|
140
|
+
evt_menu(item, :on_page_setup)
|
|
141
|
+
item = menu.append(-1, "Print Preview...\tF6",
|
|
142
|
+
"View the printout on-screen")
|
|
143
|
+
evt_menu(item, :on_print_preview)
|
|
144
|
+
item = menu.append(-1, "Print...\tF7", "Print the document")
|
|
145
|
+
evt_menu(item, :on_print)
|
|
146
|
+
menu.append_separator
|
|
147
|
+
## item = menu.Append(-1, "Test other stuff...\tF9", "")
|
|
148
|
+
## self.Bind(Wx::EVT_MENU, self.OnPrintTest, item)
|
|
149
|
+
## menu.AppendSeparator()
|
|
150
|
+
|
|
151
|
+
item = menu.append(Wx::ID_ABOUT, "About", "About this application")
|
|
152
|
+
evt_menu(item, :on_about)
|
|
153
|
+
item = menu.append(Wx::ID_EXIT, "E&xit\tCtrl-Q", "Close this application")
|
|
154
|
+
evt_menu(item, :on_exit)
|
|
155
|
+
|
|
156
|
+
menubar = Wx::MenuBar.new
|
|
157
|
+
menubar.append(menu, "&File")
|
|
158
|
+
self.menu_bar = menubar
|
|
159
|
+
|
|
160
|
+
# initialize the print data and set some default values
|
|
161
|
+
@pdata = Wx::PrintData.new
|
|
162
|
+
@pdata.set_paper_id(Wx::PAPER_LETTER)
|
|
163
|
+
@pdata.set_orientation(Wx::PORTRAIT)
|
|
164
|
+
@margins = [Wx::Point.new(15,15), Wx::Point.new(15,15)]
|
|
165
|
+
end
|
|
171
166
|
|
|
172
|
-
|
|
173
|
-
|
|
167
|
+
def on_exit(evt)
|
|
168
|
+
self.close
|
|
169
|
+
end
|
|
174
170
|
|
|
175
|
-
|
|
176
|
-
|
|
171
|
+
def on_about(evt)
|
|
172
|
+
msg = <<~__STR
|
|
173
|
+
Print framework sample application
|
|
174
|
+
|
|
175
|
+
Using wxRuby #{Wx::version()}
|
|
176
|
+
__STR
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
@tc.call_after(:set_insertion_point, @tc.insertion_point)
|
|
181
|
-
end
|
|
178
|
+
Wx::message_box(msg,'About')
|
|
179
|
+
end
|
|
182
180
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
data.set_default_min_margins(true)
|
|
188
|
-
data.set_margin_top_left(@margins.first)
|
|
189
|
-
data.set_margin_bottom_right(@margins.last)
|
|
190
|
-
|
|
191
|
-
Wx::PRT.PageSetupDialog(self, data) do |dlg|
|
|
192
|
-
data = dlg.get_page_setup_data if dlg.show_modal == Wx::ID_OK
|
|
193
|
-
@pdata = data.get_print_data
|
|
194
|
-
@pdata.set_paper_id(data.paper_id)
|
|
195
|
-
#print_("paperID %r, paperSize %r" % (self.pdata.GetPaperId(), self.pdata.GetPaperSize()))
|
|
196
|
-
@margins = [data.margin_top_left,
|
|
197
|
-
data.margin_bottom_right]
|
|
181
|
+
def on_clear_selection(evt)
|
|
182
|
+
evt.skip
|
|
183
|
+
@tc.call_after(:set_insertion_point, @tc.insertion_point)
|
|
198
184
|
end
|
|
199
|
-
end
|
|
200
185
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
186
|
+
def on_page_setup(evt)
|
|
187
|
+
data = Wx::PageSetupDialogData.new
|
|
188
|
+
data.set_print_data(@pdata)
|
|
189
|
+
|
|
190
|
+
data.set_default_min_margins(true)
|
|
191
|
+
data.set_margin_top_left(@margins.first)
|
|
192
|
+
data.set_margin_bottom_right(@margins.last)
|
|
193
|
+
|
|
194
|
+
Wx::PRT.PageSetupDialog(self, data) do |dlg|
|
|
195
|
+
data = dlg.get_page_setup_data if dlg.show_modal == Wx::ID_OK
|
|
196
|
+
@pdata = data.get_print_data
|
|
197
|
+
@pdata.set_paper_id(data.paper_id)
|
|
198
|
+
#print_("paperID %r, paperSize %r" % (self.pdata.GetPaperId(), self.pdata.GetPaperSize()))
|
|
199
|
+
@margins = [data.margin_top_left,
|
|
200
|
+
data.margin_bottom_right]
|
|
201
|
+
end
|
|
216
202
|
end
|
|
217
|
-
end
|
|
218
203
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
204
|
+
def on_print_preview(evt)
|
|
205
|
+
data = Wx::PrintDialogData.new(@pdata)
|
|
206
|
+
text = @tc.value
|
|
207
|
+
printout1 = TextDocPrintout.new(text, "title", @margins)
|
|
208
|
+
printout2 = TextDocPrintout.new(text, "title", @margins)
|
|
209
|
+
preview = Wx::PrintPreview.new(printout1, printout2, data)
|
|
210
|
+
unless preview
|
|
211
|
+
Wx::message_box("Unable to create PrintPreview!", "Error")
|
|
212
|
+
else
|
|
213
|
+
# create the preview frame such that it overlays the app frame
|
|
214
|
+
frame = Wx::PreviewFrame.new(preview, self, "Print Preview",
|
|
215
|
+
self.position,
|
|
216
|
+
self.size)
|
|
217
|
+
frame.init
|
|
218
|
+
frame.show
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def on_print(evt)
|
|
223
|
+
data = Wx::PrintDialogData.new(@pdata)
|
|
224
|
+
printer = Wx::Printer.new(data)
|
|
225
|
+
text = @tc.value
|
|
226
|
+
printout = TextDocPrintout.new(text, "title", @margins)
|
|
227
|
+
useSetupDialog = true
|
|
228
|
+
if !printer.print(self, printout, useSetupDialog) && Wx::Printer.get_last_error == Wx::PRT::PRINTER_ERROR
|
|
229
|
+
Wx::message_box(
|
|
230
|
+
"There was a problem printing.\n" +
|
|
231
|
+
"Perhaps your current printer is not set correctly?",
|
|
232
|
+
'Printing Error', Wx::OK)
|
|
233
|
+
else
|
|
234
|
+
data = printer.print_dialog_data
|
|
235
|
+
end
|
|
236
|
+
@pdata = data.print_data
|
|
232
237
|
end
|
|
233
|
-
@pdata = data.print_data
|
|
234
238
|
end
|
|
239
|
+
|
|
235
240
|
end
|
|
236
241
|
|
|
237
242
|
module Printing2Sample
|
|
@@ -245,7 +250,7 @@ module Printing2Sample
|
|
|
245
250
|
end
|
|
246
251
|
|
|
247
252
|
def self.activate
|
|
248
|
-
frame = SamplePrintFrame.new
|
|
253
|
+
frame = Printing2::SamplePrintFrame.new
|
|
249
254
|
frame.show
|
|
250
255
|
frame
|
|
251
256
|
end
|