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, 16, 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->set_active(handler);
62 gui->set_color(handler->color);
63 gui->fill_color(handler->color);
66 active_lock->unlock();
70 int RemoteControl::deactivate()
73 active_lock->lock("RemoteControl::deactivate");
78 active_lock->unlock();
82 int RemoteControl::remote_key(int key)
84 if( !is_active() ) return 0;
85 return handler->remote_process_key(this, key);
88 void RemoteControl::set_color(int color)
90 gui->lock_window("RemoteControl::fill_color");
91 gui->set_color(color);
95 void RemoteControl::fill_color(int color)
97 gui->lock_window("RemoteControl::fill_color");
98 gui->fill_color(color);
102 RemoteGUI::RemoteGUI(BC_WindowBase *wdw, RemoteControl *remote_control)
103 : BC_Popup(wdw, remote_control->mwindow_gui->mwindow->session->mwindow_x,0,16,16, -1, 1)
105 this->remote_control = remote_control;
108 RemoteGUI::~RemoteGUI()
112 void RemoteGUI::set_active(RemoteHandler *handler)
114 remote_control->handler = handler;
119 void RemoteGUI::set_inactive()
121 remote_control->handler = 0;
127 fill_color(int color)
130 draw_box(0, 0, get_w(), get_h());
134 void RemoteGUI::tile_windows(int config)
136 MWindow *mwindow = remote_control->mwindow_gui->mwindow;
137 if( config == mwindow->session->window_config ) return;
138 lock_window("RemoteGUI::tile_windows");
139 ungrab_keyboard(); hide_window();
140 mwindow->gui->lock_window("RemoteGUI::tile_windows 1");
141 int need_reload = mwindow->tile_windows(config);
142 mwindow->gui->unlock_window();
144 show_window(); raise_window(); grab_keyboard();
145 reposition_window(mwindow->session->mwindow_x,0);
150 mwindow->restart_status = 1;
155 int RemoteGUI::button_press_event()
157 remote_control->deactivate();
161 int RemoteGUI::keypress_event()
163 int key = get_keypress();
164 int result = remote_control->remote_key(key);
166 remote_control->deactivate();
173 RemoteHandler(RemoteGUI *gui, int color)
179 RemoteHandler::~RemoteHandler()