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->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,16,16, -1, 1)
107 this->remote_control = remote_control;
110 RemoteGUI::~RemoteGUI()
114 void RemoteGUI::set_active(RemoteHandler *handler)
116 remote_control->handler = handler;
121 void RemoteGUI::set_inactive()
123 remote_control->handler = 0;
129 fill_color(int color)
132 draw_box(0, 0, get_w(), get_h());
136 void RemoteGUI::tile_windows(int config)
138 MWindow *mwindow = remote_control->mwindow_gui->mwindow;
139 if( config == mwindow->session->window_config ) return;
140 lock_window("RemoteGUI::tile_windows");
141 ungrab_keyboard(); hide_window();
142 mwindow->gui->lock_window("RemoteGUI::tile_windows 1");
143 int need_reload = mwindow->tile_windows(config);
144 mwindow->gui->unlock_window();
146 show_window(); raise_window(); grab_keyboard();
147 reposition_window(mwindow->session->mwindow_x,0);
152 mwindow->restart_status = 1;
157 int RemoteGUI::button_press_event()
159 remote_control->deactivate();
163 int RemoteGUI::keypress_event()
165 int key = get_keypress();
166 int result = remote_control->remote_key(key);
168 remote_control->deactivate();
175 RemoteHandler(RemoteGUI *gui, int color)
181 RemoteHandler::~RemoteHandler()