Date: | 2010-02-25 10:55:36 (14 years 1 month ago) |
---|---|
Author: | Mirko Lindner |
Commit: | 12b07510fb0d000992edf24eb6bf287326e6beb2 |
Message: | add motion event Signed-off-by: Mirko Lindner <mirko@sharism.cc> |
Files: |
src/main_window.cc (8 diffs) |
Change Details
src/main_window.cc | ||
---|---|---|
28 | 28 | #include "vido.hh" |
29 | 29 | #include <cxxtools/log.h> |
30 | 30 | |
31 | // extern "C" { | |
32 | // #include <directfb/directfb.h> | |
33 | // #include <gtk-2.0/gdk/gdkdisplay-directfb.h> | |
34 | // #include <gtk-2.0/gdk/gdkdirectfb.h> | |
35 | // } | |
36 | ||
31 | 37 | log_define("vido.main_window"); |
32 | 38 | |
33 | 39 | main_window::main_window() |
... | ... | |
39 | 45 | |
40 | 46 | void main_window::connect_all() |
41 | 47 | { |
42 | (*this).add_events( Gdk::BUTTON_PRESS_MASK ) ; | |
48 | // (*this).add_events( Gdk::BUTTON_PRESS_MASK ) ; | |
43 | 49 | log_debug("connecting all"); |
44 | 50 | // (*this).press_id = signal_key_press_event().connect(sigc::mem_fun(*this,&main_window::on_my_key_press_event)); |
45 | 51 | // (*this).release_id = signal_key_release_event().connect(sigc::mem_fun(*this,&main_window::on_my_key_release_event)); |
46 | 52 | // (*this).press_id = |
53 | ||
54 | (*this).add_events (Gdk::ALL_EVENTS_MASK); | |
55 | ||
47 | 56 | (*this).press_id = (*this).signal_key_press_event().connect_notify(sigc::mem_fun(*this,&main_window::on_notify_key_press_event)); |
48 | (*this).release_id = (*this).signal_key_press_event().connect_notify(sigc::mem_fun(*this,&main_window::on_notify_key_release_event)); | |
57 | (*this).release_id = (*this).signal_key_release_event().connect_notify(sigc::mem_fun(*this,&main_window::on_notify_key_release_event)); | |
58 | // (*this).motion_id = (*this).signal_event().connect_notify(sigc::mem_fun(*this,&main_window::on_notify_motion_notify_event)); | |
49 | 59 | log_debug((*this).press_id << " " << (*this).release_id); |
60 | log_debug("event mask " << (*this).get_events()); | |
50 | 61 | } |
51 | 62 | |
52 | 63 | void main_window::disconnect_all() |
... | ... | |
57 | 68 | log_debug((*this).press_id << " " << (*this).release_id); |
58 | 69 | } |
59 | 70 | |
71 | void main_window::on_notify_motion_notify_event ( GdkEvent *event) | |
72 | { | |
73 | // gdouble x, y; | |
74 | // gdouble pressure; | |
75 | // GdkModifierType state; | |
76 | // | |
77 | // if (event->is_hint) | |
78 | // gdk_input_window_get_pointer (event->window, event->deviceid, | |
79 | // &x, &y, &pressure, NULL, NULL, &state); | |
80 | // else | |
81 | // { | |
82 | // x = event->x; | |
83 | // y = event->y; | |
84 | // pressure = event->pressure; | |
85 | // state = event->state; | |
86 | // } | |
87 | // | |
88 | // if (state & GDK_BUTTON1_MASK && pixmap != NULL) | |
89 | // draw_brush (widget, event->source, x, y, pressure); | |
90 | // | |
91 | log_debug("event here " << event->type); | |
92 | // return TRUE; | |
93 | } | |
94 | ||
95 | ||
96 | void main_window::move_cursor(int direction){ | |
97 | ||
98 | int x=0, y=0, xadd=0, yadd=0; | |
99 | Glib::RefPtr<Gdk::Display> display; | |
100 | display = display->get_default(); | |
101 | Glib::RefPtr<Gdk::Screen> screen = display->get_default_screen(); | |
102 | // screen = display->get_default_screen(); | |
103 | log_debug("display: " << display); | |
104 | log_debug("screen: " << screen); | |
105 | /* check for up/down/left/right arrow key press */ | |
106 | log_debug("moving " << direction); | |
107 | switch (direction) | |
108 | { | |
109 | case 65361: | |
110 | xadd -= 5; | |
111 | break; | |
112 | case 65363: | |
113 | xadd += 5; | |
114 | break; | |
115 | case 65362: | |
116 | yadd -= 5; | |
117 | break; | |
118 | case 65364: | |
119 | yadd += 5; | |
120 | break; | |
121 | default: | |
122 | log_debug("unknown direction"); | |
123 | break; | |
124 | // return FALSE; /* propogate event */ | |
125 | } | |
126 | ||
127 | /* get default display and screen */ | |
128 | // display = Gdk::Display::get_default(); | |
129 | // screen =Gdk::Display::get_default_screen(); | |
130 | // screen = gdk_display_get_default_screen (display); | |
131 | ||
132 | /* get cursor position */ | |
133 | // GdkWindow* ; | |
134 | // IDirectFBWindow *gdk_directfb_window_lookup(gtk_widget_get_root_window(scrolled_window2)); | |
135 | // GdkDisplay gdk_display_open((const gchar) display->get_name()); | |
136 | Gdk::ModifierType mask; | |
137 | // display->get_pointer(x, y, mask); | |
138 | // log_debug("unknown direction 2"); | |
139 | ||
140 | /* set new cusor position */ | |
141 | // x += xadd; | |
142 | // y += yadd; | |
143 | // IDirectFB *directfb; | |
144 | // log_debug("unknown direction 3"); | |
145 | ||
146 | ||
147 | // GType _gdk_display = g_object_new (GDK_TYPE_DISPLAY_DFB, NULL); | |
148 | // display->directfb = directfb; | |
149 | ||
150 | // IDirectFBDisplayLayer *layer; | |
151 | // int ret = directfb->GetDisplayLayer (directfb, DLID_PRIMARY, &layer); | |
152 | // log_debug("unknown direction 4"); | |
153 | ||
154 | // int ret = directfb->GetDisplayLayer (directfb, DLID_PRIMARY, &layer); | |
155 | ||
156 | ||
157 | // DFBResult result; | |
158 | // log_debug("unknown direction 5"); | |
159 | // | |
160 | // result = layer->WarpCursor(layer, x, y); | |
161 | // log_debug("unknown direction 6"); | |
162 | ||
163 | // Gdk::ModifierType mask; | |
164 | display->get_pointer(x, y, mask); | |
165 | // log_debug("pointer x: " << x << "pointer y: " << display->pointer_hooks); | |
166 | ||
167 | // display->warp_pointer( screen, x, y); | |
168 | ||
169 | // Gdk::Event event(); | |
170 | ||
171 | // Gdk::Event event(gdk_event_new(GDK_MOTION_NOTIFY),true); | |
172 | // | |
173 | // // get_window_and_coordinates(event->button.window, event->button.x, event->button.y, event->button.x_root, event->button.y_root); | |
174 | // event.send_event = TRUE; | |
175 | // event.time = GDK_CURRENT_TIME; | |
176 | // event.axes = 0; | |
177 | // event.state = 0; | |
178 | // event.motion.x = x; | |
179 | // event.motion.y = y; | |
180 | // /* set new cusor position */ | |
181 | x += xadd; | |
182 | y += yadd; | |
183 | // event.motion.x_root = x; | |
184 | // event.motion.y_root = y; | |
185 | // // event->button.button = Button; | |
186 | // // event->button.device = gdk_device_get_core_pointer(); | |
187 | // | |
188 | // // g_object_ref(event->screen.window); | |
189 | // event.put(); | |
190 | // handle_pending_events(); | |
191 | // gdk_event_free(event); | |
192 | Glib::RefPtr<Gdk::Device> pointer = display->get_core_pointer(); | |
193 | log_debug("type cursor: " << pointer->get_source()); | |
194 | log_debug("pointer xadd: " << xadd << "pointer yadd: " << yadd ); | |
195 | if ((screen != 0) && (display!= 0)){ | |
196 | display->warp_pointer( screen, x, y); | |
197 | // this->signal_motion_notify_event(); | |
198 | // g_signal_emit (G_OBJECT(display->gobj()), GDK_MOTION_NOTIFY, NULL, x= x, y = y); | |
199 | ||
200 | } | |
201 | } | |
202 | ||
60 | 203 | bool main_window::actions(int key) |
61 | 204 | { |
62 | 205 | // log_debug("in actions" << (*this).press_id << " " << (*this).release_id); |
... | ... | |
68 | 211 | static int key_s = 115; |
69 | 212 | static int key_t = 116; |
70 | 213 | static int key_f1 = 65470; |
71 | static int left = 65361; | |
72 | static int top = 65362; | |
73 | static int right = 65363; | |
74 | static int bottom = 65364; | |
214 | static int key_left = 65361; | |
215 | static int key_up = 65362; | |
216 | static int key_right = 65363; | |
217 | static int key_down = 65364; | |
75 | 218 | |
76 | 219 | |
77 | 220 | // key commands only available if ctrl pressed |
... | ... | |
81 | 224 | if (key == key_q) |
82 | 225 | { |
83 | 226 | // log_debug("quit requested"); |
84 | quit(); | |
227 | (*this).quit(); | |
85 | 228 | } |
86 | 229 | else if(key == key_r) |
87 | 230 | { |
... | ... | |
100 | 243 | history_jump(1); |
101 | 244 | }else if(key == key_b){ |
102 | 245 | history_jump(-1); |
103 | }else{ | |
246 | } | |
247 | else{ | |
104 | 248 | (*this).connect_all(); |
105 | 249 | // log_debug("key pressed: " << key); |
106 | 250 | } |
... | ... | |
109 | 253 | if(key == key_f1){ |
110 | 254 | (*this).disconnect_all(); |
111 | 255 | show_help(); |
112 | } | |
256 | }else if(key == 65361){ | |
257 | log_debug("key is left"); | |
258 | (*this).move_cursor(key); | |
259 | }else if(key == key_right){ | |
260 | (*this).move_cursor(key); | |
261 | }else if(key == key_up){ | |
262 | (*this).move_cursor(key); | |
263 | }else if(key == key_down){ | |
264 | (*this).move_cursor(key); | |
265 | } | |
113 | 266 | } |
267 | ||
114 | 268 | return true; |
115 | 269 | |
116 | 270 | } |
... | ... | |
164 | 318 | |
165 | 319 | bool main_window::quit() |
166 | 320 | { |
167 | hide(); | |
321 | (*this).destroy_(); | |
168 | 322 | return false; |
169 | 323 | } |
Branches:
development
master