2 Copyright 2009 by Hans Baier
11 public class TestDisplay
: DisplayBase
{
12 public TestDisplay() {
13 set_size_request (width
, height
);
16 /* Mouse button got pressed over widget */
17 public override bool button_press_event (Gdk
.EventButton event
) {
18 stdout
.printf("Button %u pressed on (%f,%f)\n", event
.button
, event
.x
, event
.y
);
22 /* Mouse button got released */
23 public override bool button_release_event (Gdk
.EventButton event
) {
24 stdout
.printf("Button %u released over (%f,%f)\n", event
.button
, event
.x
, event
.y
);
28 /* Mouse pointer moved over widget */
29 public override bool motion_notify_event (Gdk
.EventMotion event
) {
30 stdout
.printf("Motion over (%f,%f)\n", event
.x
, event
.y
);
34 protected override bool draw_contents(Cairo
.Context cr
, Gdk
.EventExpose event
) {
35 string str
= "123| 45| 67890";
36 text(cr
, str
, 20, 20, 20);
37 Cairo
.TextExtents ext
= Cairo
.TextExtents();
38 cr
.text_extents (str
, ref ext
);
41 Color
.parse (text_color_default
, out line_color
);
42 set_source_color (cr
, line_color
, 0.5);
44 cr
.move_to (20, 20 + ext
.y_bearing
);
45 cr
.rel_line_to (0, ext
.height
);
48 cr
.move_to (20 + ext
.x_advance
+ ext
.x_bearing
, 20 + ext
.y_bearing
);
49 cr
.rel_line_to (0, ext
.height
);
53 cr
.rel_line_to (width
- 20, 0);
58 private bool orig_size
= true;
60 public void toggle_size() {
61 stdout
.printf("orig_size: %d\n", (int)orig_size
);
72 set_size_request (width
, height
);
75 static int main (string[] args
) {
78 var window
= new Gtk
.Window (Gtk
.WindowType
.TOPLEVEL
);
79 var vbox
= new
VBox(false, 2);
80 var resize_button
= new Button
.with_label("Resize");
81 var alignment
= new Gtk
.Alignment (0.5f
, 0.5f
, 0.5f
, 0.5f
);
82 TestDisplay display
= new
TestDisplay ();
84 alignment
.bottom_padding
= 10;
85 alignment
.top_padding
= 10;
86 alignment
.left_padding
= 10;
87 alignment
.right_padding
= 10;
88 alignment
.add (display
);
89 alignment
.set_size_request(display
.width
+ 20, display
.height
+ 20);
91 resize_button
.pressed
+= display
.toggle_size
;
92 resize_button
.set_size_request(100, 25);
95 vbox
.add (resize_button
);
98 window
.destroy
+= Gtk
.main_quit
;
105 } // namespace prolooks