3 #include "mainsession.h"
5 #include "mwindowgui.h"
7 #include "remotecontrol.h"
10 RemoteWindow::RemoteWindow(RemoteControl *remote_control)
11 : BC_Window(_(PROGRAM_NAME ": RemoteWindow"),
12 0, 0, xS(16), yS(16), -1, -1, 1, 0, 1)
14 this->remote_control = remote_control;
17 RemoteWindow::~RemoteWindow()
22 RemoteControl::RemoteControl(MWindowGUI *mwindow_gui)
25 this->mwindow_gui = mwindow_gui;
27 active_lock = new Mutex("RemoteControl::active_lock");
29 remote_window = new RemoteWindow(this);
31 remote_window->init_wait();
32 gui = new RemoteGUI(remote_window, this);
35 void RemoteControl::run()
37 remote_window->run_window();
40 RemoteControl::~RemoteControl()
42 if( Thread::running() ) {
43 remote_window->close(1);
53 int RemoteControl::activate(RemoteHandler *handler)
56 active_lock->lock("RemoteControl::activate");
58 if( !handler ) handler = !mwindow_gui->record->running() ?
59 (RemoteHandler *)mwindow_gui->cwindow_remote_handler :
60 (RemoteHandler *)mwindow_gui->record_remote_handler ;
61 gui->lock_window("RemoteControl::activate");
62 gui->set_active(handler);
63 gui->set_color(handler->color);
64 gui->fill_color(handler->color);
68 active_lock->unlock();
72 int RemoteControl::deactivate()
75 active_lock->lock("RemoteControl::deactivate");
80 active_lock->unlock();
84 int RemoteControl::remote_key(int key)
86 if( !is_active() ) return 0;
87 return handler->remote_process_key(this, key);
90 void RemoteControl::set_color(int color)
92 gui->lock_window("RemoteControl::fill_color");
93 gui->set_color(color);
97 void RemoteControl::fill_color(int color)
99 gui->lock_window("RemoteControl::fill_color");
100 gui->fill_color(color);
101 gui->unlock_window();
104 RemoteGUI::RemoteGUI(BC_WindowBase *wdw, RemoteControl *remote_control)
105 : BC_Popup(wdw, remote_control->mwindow_gui->mwindow->session->mwindow_x,0,
106 xS(16),yS(16), -1, 1)
108 this->remote_control = remote_control;
111 RemoteGUI::~RemoteGUI()
115 void RemoteGUI::set_active(RemoteHandler *handler)
117 remote_control->handler = handler;
122 void RemoteGUI::set_inactive()
124 remote_control->handler = 0;
130 fill_color(int color)
133 draw_box(0, 0, get_w(), get_h());
137 void RemoteGUI::tile_windows(int config)
139 MWindow *mwindow = remote_control->mwindow_gui->mwindow;
140 if( config == mwindow->session->window_config ) return;
141 lock_window("RemoteGUI::tile_windows");
142 ungrab_keyboard(); hide_window();
143 mwindow->gui->lock_window("RemoteGUI::tile_windows 1");
144 int need_reload = mwindow->tile_windows(config);
145 mwindow->gui->unlock_window();
147 show_window(); raise_window(); grab_keyboard();
148 reposition_window(mwindow->session->mwindow_x,0);
153 mwindow->restart_status = 1;
158 int RemoteGUI::button_press_event()
160 remote_control->deactivate();
164 int RemoteGUI::keypress_event()
166 int key = get_keypress();
167 int result = remote_control->remote_key(key);
169 remote_control->deactivate();
176 RemoteHandler(RemoteGUI *gui, int color)
182 RemoteHandler::~RemoteHandler()