wrb 2.0.0
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 +7 -0
- data/README +28 -0
- data/Rakefile +66 -0
- data/bin/wrb +41 -0
- data/bin/wrb.bat +6 -0
- data/ext/rwin/aatree.c +192 -0
- data/ext/rwin/aatree.h +55 -0
- data/ext/rwin/extconf.rb +47 -0
- data/ext/rwin/rw_api.c +2058 -0
- data/ext/rwin/rw_devices.c +215 -0
- data/ext/rwin/rw_gdiplus.h +278 -0
- data/ext/rwin/rw_graphics.c +1583 -0
- data/ext/rwin/rw_resources.c +1988 -0
- data/ext/rwin/rw_ubfuncs.c +281 -0
- data/ext/rwin/rw_windows.c +1936 -0
- data/ext/rwin/rwin.c +451 -0
- data/ext/rwin/rwin.h +442 -0
- data/lib/rwin.rb +820 -0
- data/lib/wrb.rb +20 -0
- data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
- data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
- data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
- data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
- data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
- data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
- data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
- data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
- data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
- data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
- data/lib/wrb/base.rb +1294 -0
- data/lib/wrb/combocommon.rb +77 -0
- data/lib/wrb/commctrlconst.rb +139 -0
- data/lib/wrb/commdlg.rb +77 -0
- data/lib/wrb/components/animate.rb +114 -0
- data/lib/wrb/components/bitmap.rb +116 -0
- data/lib/wrb/components/button.rb +134 -0
- data/lib/wrb/components/canvas.rb +266 -0
- data/lib/wrb/components/checkbox.rb +118 -0
- data/lib/wrb/components/choosecolordlg.rb +87 -0
- data/lib/wrb/components/choosefontdlg.rb +142 -0
- data/lib/wrb/components/clipboard.rb +174 -0
- data/lib/wrb/components/combobox.rb +282 -0
- data/lib/wrb/components/comboboxex.rb +574 -0
- data/lib/wrb/components/cursor.rb +91 -0
- data/lib/wrb/components/datetimepicker.rb +197 -0
- data/lib/wrb/components/ddeclient.rb +180 -0
- data/lib/wrb/components/ddeserver.rb +131 -0
- data/lib/wrb/components/dialog.rb +228 -0
- data/lib/wrb/components/edit.rb +412 -0
- data/lib/wrb/components/font.rb +35 -0
- data/lib/wrb/components/form.rb +65 -0
- data/lib/wrb/components/groupbox.rb +122 -0
- data/lib/wrb/components/header.rb +479 -0
- data/lib/wrb/components/hotkeyctrl.rb +72 -0
- data/lib/wrb/components/icon.rb +109 -0
- data/lib/wrb/components/imagelist.rb +396 -0
- data/lib/wrb/components/inifile.rb +97 -0
- data/lib/wrb/components/listbox.rb +149 -0
- data/lib/wrb/components/listview.rb +1467 -0
- data/lib/wrb/components/menu.rb +592 -0
- data/lib/wrb/components/menubar.rb +84 -0
- data/lib/wrb/components/monthcalender.rb +164 -0
- data/lib/wrb/components/openfilenamedlg.rb +147 -0
- data/lib/wrb/components/pager.rb +199 -0
- data/lib/wrb/components/panel.rb +103 -0
- data/lib/wrb/components/picture.rb +55 -0
- data/lib/wrb/components/printdlg.rb +148 -0
- data/lib/wrb/components/printdlgex.rb +117 -0
- data/lib/wrb/components/printer.rb +97 -0
- data/lib/wrb/components/progressbar.rb +140 -0
- data/lib/wrb/components/radiobutton.rb +49 -0
- data/lib/wrb/components/rebar.rb +830 -0
- data/lib/wrb/components/registry.rb +408 -0
- data/lib/wrb/components/richedit.rb +1181 -0
- data/lib/wrb/components/savefilenamedlg.rb +27 -0
- data/lib/wrb/components/scintilla.rb +1298 -0
- data/lib/wrb/components/scrollbar.rb +239 -0
- data/lib/wrb/components/splitter.rb +494 -0
- data/lib/wrb/components/static.rb +198 -0
- data/lib/wrb/components/statusbar.rb +490 -0
- data/lib/wrb/components/tabctrl.rb +686 -0
- data/lib/wrb/components/timer.rb +117 -0
- data/lib/wrb/components/toolbar.rb +1107 -0
- data/lib/wrb/components/tooltip.rb +651 -0
- data/lib/wrb/components/trackbar.rb +298 -0
- data/lib/wrb/components/treeview.rb +845 -0
- data/lib/wrb/components/updown.rb +198 -0
- data/lib/wrb/ddeml.rb +241 -0
- data/lib/wrb/documents/animate.html +46 -0
- data/lib/wrb/documents/bitmap.html +69 -0
- data/lib/wrb/documents/button.html +78 -0
- data/lib/wrb/documents/canvas.html +137 -0
- data/lib/wrb/documents/checkbox.html +77 -0
- data/lib/wrb/documents/choosecolordlg.html +29 -0
- data/lib/wrb/documents/choosefontdlg.html +31 -0
- data/lib/wrb/documents/clipboard.html +31 -0
- data/lib/wrb/documents/combobox.html +117 -0
- data/lib/wrb/documents/comboboxex.html +139 -0
- data/lib/wrb/documents/control.html +53 -0
- data/lib/wrb/documents/cursor.html +45 -0
- data/lib/wrb/documents/datetimepicker.html +70 -0
- data/lib/wrb/documents/ddeclient.html +33 -0
- data/lib/wrb/documents/ddeserver.html +26 -0
- data/lib/wrb/documents/dialog.html +78 -0
- data/lib/wrb/documents/edit.html +169 -0
- data/lib/wrb/documents/empty.html +11 -0
- data/lib/wrb/documents/favicon.png +0 -0
- data/lib/wrb/documents/font.html +38 -0
- data/lib/wrb/documents/form.html +63 -0
- data/lib/wrb/documents/groupbox.html +57 -0
- data/lib/wrb/documents/header.html +85 -0
- data/lib/wrb/documents/hotkeyctrl.html +42 -0
- data/lib/wrb/documents/icon.html +45 -0
- data/lib/wrb/documents/imagelist.html +101 -0
- data/lib/wrb/documents/images/button.png +0 -0
- data/lib/wrb/documents/images/checkbox.png +0 -0
- data/lib/wrb/documents/images/combobox.png +0 -0
- data/lib/wrb/documents/images/comboboxex.png +0 -0
- data/lib/wrb/documents/images/datetimepicker.png +0 -0
- data/lib/wrb/documents/images/edit.png +0 -0
- data/lib/wrb/documents/images/groupbox.png +0 -0
- data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
- data/lib/wrb/documents/images/listbox.png +0 -0
- data/lib/wrb/documents/images/listview.png +0 -0
- data/lib/wrb/documents/images/menu.png +0 -0
- data/lib/wrb/documents/images/menubar.png +0 -0
- data/lib/wrb/documents/images/monthcalender.png +0 -0
- data/lib/wrb/documents/images/progressbar.png +0 -0
- data/lib/wrb/documents/images/radiobutton.png +0 -0
- data/lib/wrb/documents/images/rebar.png +0 -0
- data/lib/wrb/documents/images/richedit.png +0 -0
- data/lib/wrb/documents/images/splitter.png +0 -0
- data/lib/wrb/documents/images/static.png +0 -0
- data/lib/wrb/documents/images/statusbar.png +0 -0
- data/lib/wrb/documents/images/tabctrl.png +0 -0
- data/lib/wrb/documents/images/toolbar.png +0 -0
- data/lib/wrb/documents/images/tooltip.png +0 -0
- data/lib/wrb/documents/images/trackbar.png +0 -0
- data/lib/wrb/documents/images/treeview.png +0 -0
- data/lib/wrb/documents/images/updown.png +0 -0
- data/lib/wrb/documents/index.html +155 -0
- data/lib/wrb/documents/inifile.html +36 -0
- data/lib/wrb/documents/license.txt +22 -0
- data/lib/wrb/documents/listbox.html +96 -0
- data/lib/wrb/documents/listview.html +277 -0
- data/lib/wrb/documents/make_doc.rb +596 -0
- data/lib/wrb/documents/menu.html +144 -0
- data/lib/wrb/documents/menubar.html +54 -0
- data/lib/wrb/documents/monthcalender.html +48 -0
- data/lib/wrb/documents/openfilenamedlg.html +36 -0
- data/lib/wrb/documents/pager.html +63 -0
- data/lib/wrb/documents/panel.html +32 -0
- data/lib/wrb/documents/picture.html +48 -0
- data/lib/wrb/documents/printdlg.html +35 -0
- data/lib/wrb/documents/printdlgex.html +35 -0
- data/lib/wrb/documents/printer.html +40 -0
- data/lib/wrb/documents/progressbar.html +69 -0
- data/lib/wrb/documents/radiobutton.html +51 -0
- data/lib/wrb/documents/rebar.html +143 -0
- data/lib/wrb/documents/registry.html +36 -0
- data/lib/wrb/documents/richedit.html +232 -0
- data/lib/wrb/documents/samples/editimg.bmp +0 -0
- data/lib/wrb/documents/samples/editimg.iml +0 -0
- data/lib/wrb/documents/samples/fileimg.bmp +0 -0
- data/lib/wrb/documents/samples/fileimg.iml +0 -0
- data/lib/wrb/documents/samples/sample_button.rb +21 -0
- data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
- data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
- data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
- data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
- data/lib/wrb/documents/samples/sample_edit.rb +25 -0
- data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
- data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
- data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
- data/lib/wrb/documents/samples/sample_listview.rb +32 -0
- data/lib/wrb/documents/samples/sample_menu.rb +21 -0
- data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
- data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
- data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
- data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
- data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
- data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
- data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
- data/lib/wrb/documents/samples/sample_static.rb +15 -0
- data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
- data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
- data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
- data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
- data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
- data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
- data/lib/wrb/documents/samples/sample_updown.rb +18 -0
- data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
- data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
- data/lib/wrb/documents/samples/samplemg16.png +0 -0
- data/lib/wrb/documents/samples/samplemg32.png +0 -0
- data/lib/wrb/documents/samples/wrb.ico +0 -0
- data/lib/wrb/documents/savefilenamedlg.html +19 -0
- data/lib/wrb/documents/scrollbar.html +60 -0
- data/lib/wrb/documents/splitter.html +96 -0
- data/lib/wrb/documents/static.html +84 -0
- data/lib/wrb/documents/statusbar.html +110 -0
- data/lib/wrb/documents/tabctrl.html +151 -0
- data/lib/wrb/documents/timer.html +43 -0
- data/lib/wrb/documents/toolbar.html +181 -0
- data/lib/wrb/documents/tooltip.html +131 -0
- data/lib/wrb/documents/trackbar.html +107 -0
- data/lib/wrb/documents/treeview.html +210 -0
- data/lib/wrb/documents/updown.html +85 -0
- data/lib/wrb/documents/wincontrol.html +258 -0
- data/lib/wrb/documents/window.html +499 -0
- data/lib/wrb/documents/wrb.css +228 -0
- data/lib/wrb/gmem.rb +26 -0
- data/lib/wrb/imecommon.rb +59 -0
- data/lib/wrb/listcommon.rb +185 -0
- data/lib/wrb/lzss.rb +126 -0
- data/lib/wrb/scrollinfo.rb +142 -0
- data/lib/wrb/toplevelcommon.rb +634 -0
- metadata +315 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Panel is a window
|
|
2
|
+
require 'wrb'
|
|
3
|
+
|
|
4
|
+
module WR
|
|
5
|
+
|
|
6
|
+
# This control is a window container that can layout any controls on. (WRB original)
|
|
7
|
+
class Panel < WinControl
|
|
8
|
+
include ModParent
|
|
9
|
+
WinStyles = {
|
|
10
|
+
:disabled => WS_DISABLED,
|
|
11
|
+
:hscroll => WS_HSCROLL,
|
|
12
|
+
:vscroll => WS_VSCROLL,
|
|
13
|
+
:border => WS_BORDER,
|
|
14
|
+
:thickframe => WS_THICKFRAME
|
|
15
|
+
}
|
|
16
|
+
attr_reader :sendto
|
|
17
|
+
|
|
18
|
+
def initialize(*args)
|
|
19
|
+
super
|
|
20
|
+
@_classname = "RUBYWIN"
|
|
21
|
+
@_acceptable_events = {}.update(SubclassedHandlers)
|
|
22
|
+
register_event(WM_GETFONT, "__getfont__")
|
|
23
|
+
register_event(WM_SETFONT, "__setfont__", 'ii')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Sets so that this panel may send the messages to the specified window.
|
|
27
|
+
def sendto=(win)
|
|
28
|
+
if @controls
|
|
29
|
+
raise "Already exist controls." unless @controls.empty?
|
|
30
|
+
def @controls.sendto=(to)
|
|
31
|
+
@sendto = to
|
|
32
|
+
end
|
|
33
|
+
@controls.sendto = win
|
|
34
|
+
class << @controls
|
|
35
|
+
undef :sendto=
|
|
36
|
+
end
|
|
37
|
+
else
|
|
38
|
+
@controls = Controls.new(self, self, win)
|
|
39
|
+
end
|
|
40
|
+
@_sendto = win
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Retreives a window which would be received the messages from this panel.
|
|
44
|
+
def sendto()
|
|
45
|
+
@_sendto
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Adds a control to this panel.
|
|
49
|
+
def <<(*args)
|
|
50
|
+
controls << args
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
protected
|
|
54
|
+
def _apply_options(arg)
|
|
55
|
+
if st=WinStyles[arg]
|
|
56
|
+
@_style |= st
|
|
57
|
+
return nil
|
|
58
|
+
end
|
|
59
|
+
super
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
def __setfont__(hfont, redraw)
|
|
64
|
+
if !@_font
|
|
65
|
+
@_font = Font.wraphandle(hfont) if hfont!=0
|
|
66
|
+
elsif @_font._hfont != hfont
|
|
67
|
+
@_font.dispose
|
|
68
|
+
@_font = Font.wraphandle(hfont)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
def __getfont__()#; dpp @_font
|
|
72
|
+
CancelDefWindowProc(@_font && @_font.is_a?(Font) ? @_font._hfont : 0)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
#----- For testing. This will be removed soon. ------#
|
|
78
|
+
module WR
|
|
79
|
+
class MyForm < Form
|
|
80
|
+
def initialize()
|
|
81
|
+
self.font = ['Meiryo', -12]
|
|
82
|
+
self.inheritfont = true
|
|
83
|
+
_<< Button[:button1, "Button0", 10, 10, 100, 30]
|
|
84
|
+
# _panel1.events = :paint
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def created()
|
|
88
|
+
_<< Panel[:panel1, "", 100, 100, 200, 200, :thickframe, :font=>:parent, :inheritfont=>true]
|
|
89
|
+
_panel1.sendto = self
|
|
90
|
+
_panel1 << Button[:button1, "Button1", 10, 10, 100, 30, :margin=>[0,nil,0,nil]]
|
|
91
|
+
_panel1 << Button[:button1, "Button2", 10, 100, 100, 30, :margin=>[0,nil,0,nil]]
|
|
92
|
+
def _panel1.self_paint(cv)
|
|
93
|
+
cv.LineTo(*clientsize)
|
|
94
|
+
end
|
|
95
|
+
dpp _panel1.sendto
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def button1_clicked(*)
|
|
99
|
+
_panel1.visible ? _panel1.hide : _panel1.show
|
|
100
|
+
end
|
|
101
|
+
self.start
|
|
102
|
+
end
|
|
103
|
+
end if __FILE__ == $0
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'wrb'
|
|
2
|
+
|
|
3
|
+
module WR
|
|
4
|
+
|
|
5
|
+
# The very small subset of GDI+ functions, only for getting and saving sevral types of an image file.<br>
|
|
6
|
+
# This class is using the GDI+ Flat API functions written by C. So see `wrb/ext/rw_graphics.c' and `rw_gdiplus.h' for more information.
|
|
7
|
+
class Picture < RWin::Picture
|
|
8
|
+
|
|
9
|
+
=begin
|
|
10
|
+
following methods are defined at the super class.
|
|
11
|
+
:singleton_methods
|
|
12
|
+
self._load(str)
|
|
13
|
+
Loads from a string. Give a String as <i>str</i>.
|
|
14
|
+
self.fromfile(path)
|
|
15
|
+
Loads from an image file. Give a String as <i>path</i> to image file.<br>
|
|
16
|
+
Allowed types of image are bitmap, jpeg, png, and so on.
|
|
17
|
+
:instance_methods
|
|
18
|
+
_dump(encoder, resolution)
|
|
19
|
+
_himage()
|
|
20
|
+
Retrieves a handle of self.<br>
|
|
21
|
+
Returns 32/64 bits integer as it.
|
|
22
|
+
getproperty(index)
|
|
23
|
+
Retreives a property of specified index.
|
|
24
|
+
getpropertylist()
|
|
25
|
+
Retreives the property list of self.<br>
|
|
26
|
+
Retruens an array of integers and strings.
|
|
27
|
+
resolution()
|
|
28
|
+
Retreives the resolution of self.<br>
|
|
29
|
+
Returns an array of two floats as [<i>xres, yres</i>].
|
|
30
|
+
rotateflip(rotate_type)
|
|
31
|
+
Rotates and flips this image. Give an integer fore <i>rotate_type</i>.
|
|
32
|
+
saveto(path, encoder="image/png")
|
|
33
|
+
Saves to file as an image file with specified encodeing.<br>
|
|
34
|
+
Give a String as <i>path</i> to image file. And give a String for encoder.
|
|
35
|
+
size()
|
|
36
|
+
Retreives the image size of self.<br>
|
|
37
|
+
Retruns an array of two integers as [<i>width, height</i>].
|
|
38
|
+
thumbnail(w, h)
|
|
39
|
+
Retreves a small image from this image with specified size.<br>
|
|
40
|
+
Returns a RWin::Picture object.
|
|
41
|
+
to_bitmap()
|
|
42
|
+
Creates a new bitmap from self. Returns a RWin::Bitmap object.
|
|
43
|
+
to_icon()
|
|
44
|
+
Creates a new icon from self. Returns a RWin::Icon object.
|
|
45
|
+
|
|
46
|
+
=end
|
|
47
|
+
|
|
48
|
+
# Dumps self to a string for Marshal object with specified encoder and resolution.<br>
|
|
49
|
+
# Give a string as encoder such as "png" or "jpeg", and a float as resolution.
|
|
50
|
+
def _dump(encoder='image/png', resolution=nil)
|
|
51
|
+
encoder[0, 0] = 'image/' if encoder.split('/').size == 1
|
|
52
|
+
super(encoder, resolution)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require 'wrb/commdlg'
|
|
2
|
+
|
|
3
|
+
module WR
|
|
4
|
+
module RC
|
|
5
|
+
PD_ALLPAGES = 0x0
|
|
6
|
+
PD_SELECTION = 0x1
|
|
7
|
+
PD_PAGENUMS = 0x2
|
|
8
|
+
PD_NOSELECTION = 0x4
|
|
9
|
+
PD_NOPAGENUMS = 0x8
|
|
10
|
+
PD_COLLATE = 0x10
|
|
11
|
+
PD_PRINTTOFILE = 0x20
|
|
12
|
+
PD_PRINTSETUP = 0x40
|
|
13
|
+
PD_NOWARNING = 0x80
|
|
14
|
+
PD_RETURNDC = 0x100
|
|
15
|
+
PD_RETURNIC = 0x200
|
|
16
|
+
PD_RETURNDEFAULT = 0x400
|
|
17
|
+
PD_SHOWHELP = 0x800
|
|
18
|
+
PD_ENABLEPRINTHOOK = 0x1000
|
|
19
|
+
PD_ENABLESETUPHOOK = 0x2000
|
|
20
|
+
PD_ENABLEPRINTTEMPLATE = 0x4000
|
|
21
|
+
PD_ENABLESETUPTEMPLATE = 0x8000
|
|
22
|
+
PD_ENABLEPRINTTEMPLATEHANDLE = 0x10000
|
|
23
|
+
PD_ENABLESETUPTEMPLATEHANDLE = 0x20000
|
|
24
|
+
PD_USEDEVMODECOPIES = 0x40000
|
|
25
|
+
PD_USEDEVMODECOPIESANDCOLLATE = 0x40000
|
|
26
|
+
PD_DISABLEPRINTTOFILE = 0x80000
|
|
27
|
+
PD_HIDEPRINTTOFILE = 0x100000
|
|
28
|
+
PD_NONETWORKBUTTON = 0x200000
|
|
29
|
+
PD_CURRENTPAGE = 0x400000
|
|
30
|
+
PD_NOCURRENTPAGE = 0x800000
|
|
31
|
+
PD_EXCLUSIONFLAGS = 0x1000000
|
|
32
|
+
PD_USELARGETEMPLATE = 0x10000000
|
|
33
|
+
|
|
34
|
+
START_PAGE_GENERAL = 0xffffffff
|
|
35
|
+
|
|
36
|
+
PD_RESULT_CANCEL = 0
|
|
37
|
+
PD_RESULT_PRINT = 1
|
|
38
|
+
PD_RESULT_APPLY = 2
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# This dialog box enables the user to specify the properties of a particular print job.
|
|
42
|
+
class PrintDlg < CommonDialog
|
|
43
|
+
|
|
44
|
+
API.typealias 'HGLOBAL', 'Q'
|
|
45
|
+
API.typealias 'LPPRINTHOOKPROC', 'Q'
|
|
46
|
+
API.typealias 'LPSETUPHOOKPROC', 'Q'
|
|
47
|
+
|
|
48
|
+
PRINTDLG = API.defstruct true, "
|
|
49
|
+
DWORD lStructSize;
|
|
50
|
+
HWND hwndOwner;
|
|
51
|
+
HGLOBAL hDevMode;
|
|
52
|
+
HGLOBAL hDevNames;
|
|
53
|
+
HDC hDC;
|
|
54
|
+
DWORD Flags;
|
|
55
|
+
WORD nFromPage;
|
|
56
|
+
WORD nToPage;
|
|
57
|
+
WORD nMinPage;
|
|
58
|
+
WORD nMaxPage;
|
|
59
|
+
WORD nCopies;
|
|
60
|
+
HINSTANCE hInstance;
|
|
61
|
+
LPARAM lCustData;
|
|
62
|
+
LPPRINTHOOKPROC lpfnPrintHook;
|
|
63
|
+
LPSETUPHOOKPROC lpfnSetupHook;
|
|
64
|
+
LPCWSTR lpPrintTemplateName;
|
|
65
|
+
LPCWSTR lpSetupTemplateName;
|
|
66
|
+
HGLOBAL hPrintTemplate;
|
|
67
|
+
HGLOBAL hSetupTemplate;"
|
|
68
|
+
|
|
69
|
+
API.defun "PrintDlg(LPPRINTDLGEX lppd)"
|
|
70
|
+
|
|
71
|
+
attr_reader :_printdlg
|
|
72
|
+
|
|
73
|
+
def self.show(owner=nil, flags: nil, frompage: nil, topage: nil, minpage: nil, maxpage: nil, copies: nil)
|
|
74
|
+
pd = self.new
|
|
75
|
+
pd.flags = flags if flags
|
|
76
|
+
pd.frompage = frompage if frompage
|
|
77
|
+
pd.topage = topage if topage
|
|
78
|
+
pd.minpage = minpage if minpage
|
|
79
|
+
pd.maxpage = maxpage if maxpage
|
|
80
|
+
pd.copies = copies if copies
|
|
81
|
+
pd.show(owner)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def initialize()
|
|
85
|
+
@_printdlg = PRINTDLG[PRINTDLG::Size]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def flags()
|
|
89
|
+
@_printdlg.Flags
|
|
90
|
+
end
|
|
91
|
+
def flags=(f)
|
|
92
|
+
@_printdlg.Flags = f
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def frompage()
|
|
96
|
+
@_printdlg.nFromPage
|
|
97
|
+
end
|
|
98
|
+
def frompage=(n)
|
|
99
|
+
@_printdlg.nFromPage = n
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def topage()
|
|
103
|
+
@_printdlg.nToPage
|
|
104
|
+
end
|
|
105
|
+
def topage=(n)
|
|
106
|
+
@_printdlg.nToPage = n
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def minpage()
|
|
110
|
+
@_printdlg.nMinPage
|
|
111
|
+
end
|
|
112
|
+
def minpage=(n)
|
|
113
|
+
@_printdlg.nMinPage = n
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def maxpage()
|
|
117
|
+
@_printdlg.nMaxPage
|
|
118
|
+
end
|
|
119
|
+
def maxpage=(n)
|
|
120
|
+
@_printdlg.nMaxPage = n
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def copies()
|
|
124
|
+
@_printdlg.nCopies
|
|
125
|
+
end
|
|
126
|
+
def copies=(n)
|
|
127
|
+
@_printdlg.nCopies = n
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def show(owner=nil)
|
|
131
|
+
@_printdlg.hwndOwner = owner if owner
|
|
132
|
+
r = API.PrintDlg(@_printdlg)
|
|
133
|
+
return nil if r==0
|
|
134
|
+
if @_printdlg.Flags & PD_RETURNDC != 0
|
|
135
|
+
return @_printdlg.hdc
|
|
136
|
+
end
|
|
137
|
+
devmode = API::DEVMODE.new_from_pointer(API.GlobalLock(@_printdlg.hDevMode));
|
|
138
|
+
API.GlobalUnlock(@_printdlg.hDevMode);
|
|
139
|
+
devmode
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
module WR
|
|
145
|
+
dpp PrintDlg.show(flags: RC::PD_SELECTION, maxpage: 10)
|
|
146
|
+
# dpp PrintDlg.new.show()
|
|
147
|
+
end if $0==__FILE__
|
|
148
|
+
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
|
|
2
|
+
module WR
|
|
3
|
+
require_relative './printdlg' unless defined?(PrintDlg)
|
|
4
|
+
|
|
5
|
+
# Displays a Print property sheet that enables the user to specify the properties of a particular print job.
|
|
6
|
+
class PrintDlgEx < CommonDialog
|
|
7
|
+
|
|
8
|
+
PRINTPAGERANGE = API.defstruct "
|
|
9
|
+
DWORD nFromPage;
|
|
10
|
+
DWORD nToPage;"
|
|
11
|
+
|
|
12
|
+
API.typealias 'HPROPSHEETPAGE', 'Q'
|
|
13
|
+
API.typealias 'LPUNKNOWN', 'Q'
|
|
14
|
+
|
|
15
|
+
PRINTDLGEX = API.defstruct "
|
|
16
|
+
DWORD lStructSize;
|
|
17
|
+
HWND hwndOwner;
|
|
18
|
+
HGLOBAL hDevMode;
|
|
19
|
+
HGLOBAL hDevNames;
|
|
20
|
+
HDC hDC;
|
|
21
|
+
DWORD Flags;
|
|
22
|
+
DWORD Flags2;
|
|
23
|
+
DWORD ExclusionFlags;
|
|
24
|
+
DWORD nPageRanges;
|
|
25
|
+
DWORD nMaxPageRanges;
|
|
26
|
+
PRINTPAGERANGE *lpPageRanges;
|
|
27
|
+
DWORD nMinPage;
|
|
28
|
+
DWORD nMaxPage;
|
|
29
|
+
DWORD nCopies;
|
|
30
|
+
HINSTANCE hInstance;
|
|
31
|
+
LPCTSTR lpPrintTemplateName;
|
|
32
|
+
LPUNKNOWN lpCallback;
|
|
33
|
+
DWORD nPropertyPages;
|
|
34
|
+
HPROPSHEETPAGE *lphPropertyPages;
|
|
35
|
+
DWORD nStartPage;
|
|
36
|
+
DWORD dwResultAction;"
|
|
37
|
+
|
|
38
|
+
API.defun "PrintDlgEx(LPPRINTDLGEX lppd)"
|
|
39
|
+
|
|
40
|
+
attr_reader :_printdlg
|
|
41
|
+
|
|
42
|
+
def self.show(owner=nil, flags: nil, frompage: nil, topage: nil, minpage: nil, maxpage: nil, copies: nil)
|
|
43
|
+
pd = self.new
|
|
44
|
+
pd.flags = flags if flags
|
|
45
|
+
pd.frompage = frompage if frompage
|
|
46
|
+
pd.topage = topage if topage
|
|
47
|
+
pd.minpage = minpage if minpage
|
|
48
|
+
pd.maxpage = maxpage if maxpage
|
|
49
|
+
pd.copies = copies if copies
|
|
50
|
+
pd.show(owner)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def initialize()
|
|
54
|
+
@_printdlgex = PRINTDLGEX[PRINTDLGEX::Size]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def flags()
|
|
58
|
+
@_printdlgex.Flags
|
|
59
|
+
end
|
|
60
|
+
def flags=(f)
|
|
61
|
+
@_printdlgex.Flags = f
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def frompage()
|
|
65
|
+
@_printdlgex.nFromPage
|
|
66
|
+
end
|
|
67
|
+
def frompage=(n)
|
|
68
|
+
@_printdlgex.nFromPage = n
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def topage()
|
|
72
|
+
@_printdlgex.nToPage
|
|
73
|
+
end
|
|
74
|
+
def topage=(n)
|
|
75
|
+
@_printdlgex.nToPage = n
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def minpage()
|
|
79
|
+
@_printdlgex.nMinPage
|
|
80
|
+
end
|
|
81
|
+
def minpage=(n)
|
|
82
|
+
@_printdlgex.nMinPage = n
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def maxpage()
|
|
86
|
+
@_printdlgex.nMaxPage
|
|
87
|
+
end
|
|
88
|
+
def maxpage=(n)
|
|
89
|
+
@_printdlgex.nMaxPage = n
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def copies()
|
|
93
|
+
@_printdlgex.nCopies
|
|
94
|
+
end
|
|
95
|
+
def copies=(n)
|
|
96
|
+
@_printdlgex.nCopies = n
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def show(owner=nil)
|
|
100
|
+
@_printdlgex.hwndOwner = owner if owner
|
|
101
|
+
r = API.PrintDlgEx(@_printdlgex)
|
|
102
|
+
# return nil if r==0
|
|
103
|
+
# if @_printdlgex.Flags & PD_RETURNDC != 0
|
|
104
|
+
# return @_printdlgex.hdc
|
|
105
|
+
# end
|
|
106
|
+
# devmode = API::DEVMODE.new_from_pointer(API.GlobalLock(@_printdlgex.hDevMode));
|
|
107
|
+
# API.GlobalUnlock(@_printdlgex.hDevMode);
|
|
108
|
+
# devmode
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
module WR
|
|
114
|
+
dpp PrintDlg.show(flags: RC::PD_SELECTION, maxpage: 10)
|
|
115
|
+
dp "@%#x", PrintDlgEx.new.show()
|
|
116
|
+
end if $0==__FILE__
|
|
117
|
+
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
require 'wrb'
|
|
2
|
+
|
|
3
|
+
# wrapper of DEVMODE
|
|
4
|
+
module WR
|
|
5
|
+
# Provides an interface that allows an application to access the printer.
|
|
6
|
+
class Printer < RWin::Printer
|
|
7
|
+
|
|
8
|
+
=begin
|
|
9
|
+
Following methods are defined at the super class.
|
|
10
|
+
:singleton_methods
|
|
11
|
+
self.GetDefaultPrinter()
|
|
12
|
+
|
|
13
|
+
:instance_methods
|
|
14
|
+
_devmode()
|
|
15
|
+
_hdc()
|
|
16
|
+
close()
|
|
17
|
+
open()
|
|
18
|
+
print()
|
|
19
|
+
|
|
20
|
+
=end
|
|
21
|
+
|
|
22
|
+
def self.open(dev)
|
|
23
|
+
return nil unless dev
|
|
24
|
+
prt = self.new(dev)
|
|
25
|
+
prt.open
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def initialize(device)
|
|
29
|
+
super
|
|
30
|
+
@_devmode = self._devmode if self._hdc==0
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def devicename()
|
|
34
|
+
@_devmode.dmDeviceName.to_s
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def scale()
|
|
38
|
+
@_devmode.dmScale
|
|
39
|
+
end
|
|
40
|
+
def scale=(s)
|
|
41
|
+
@_devmode.dmScale = s
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def orientation()
|
|
45
|
+
@_devmode.dmOrientation
|
|
46
|
+
end
|
|
47
|
+
def orientation(o)
|
|
48
|
+
@_devmode.dmOrientation = o
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def papersize()
|
|
52
|
+
@_devmode.dmPaperSize
|
|
53
|
+
end
|
|
54
|
+
def papersize=(s)
|
|
55
|
+
@_devmode.dmPaperSize = s
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def paperlength()
|
|
59
|
+
@_devmode.dmPaperLength
|
|
60
|
+
end
|
|
61
|
+
def paperlength=(l)
|
|
62
|
+
@_devmode.dmPaperLength = l
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def paperwidth()
|
|
66
|
+
@_devmode.dmPaperWidth
|
|
67
|
+
end
|
|
68
|
+
def paperwidth=(w)
|
|
69
|
+
@_devmode.dmPaperWidth = w
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def copies()
|
|
73
|
+
@_devmode.dmCopies
|
|
74
|
+
end
|
|
75
|
+
def copies=(n)
|
|
76
|
+
@_devmode.dmCopies = n
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
module WR
|
|
83
|
+
# devmode = PrintDlg.show
|
|
84
|
+
# exit unless devmode
|
|
85
|
+
prt = Printer.open(PrintDlg.show)
|
|
86
|
+
dpp prt.papersize
|
|
87
|
+
prt.print("TestPage", RWin::Canvas){|cv|
|
|
88
|
+
cv.TextOut(100, 100, 'Page 1')
|
|
89
|
+
cv.SetPen(0x0000ff)
|
|
90
|
+
cv.LineTo(1000, 1000)
|
|
91
|
+
cv.TextOut(1000, 1000, 'HogeHoge123')
|
|
92
|
+
cv.NextPage
|
|
93
|
+
cv.TextOut(100, 100, 'Page 2')
|
|
94
|
+
cv.LineTo(100, 1000)
|
|
95
|
+
} if prt
|
|
96
|
+
|
|
97
|
+
end if $0==__FILE__
|