Ticket #124: multi-monitor.patch
| File multi-monitor.patch, 18.0 KB (added by pyriku, 22 months ago) |
|---|
-
data/prefs.glade
From d6a0b2707bfc7996d1e4d7696a2aed58decd3fb1 Mon Sep 17 00:00:00 2001 From: Pablo Recio Quijano <rikutheronin@gmail.com> Date: Sun, 8 Aug 2010 11:41:33 +0200 Subject: [PATCH 1/3] Added combobox in the prefs window. Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com> --- data/prefs.glade | 172 ++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 115 insertions(+), 57 deletions(-) diff --git a/data/prefs.glade b/data/prefs.glade index d7b2441..1c91f33 100644
a b 276 276 </packing> 277 277 </child> 278 278 <child> 279 <widget class="Gtk Frame" id="frame4">279 <widget class="GtkHBox" id="hbox5"> 280 280 <property name="visible">True</property> 281 <property name="label_xalign">0</property>282 <property name="shadow_type">none</property>283 281 <child> 284 <widget class="Gtk Alignment" id="alignment4">282 <widget class="GtkFrame" id="frame4"> 285 283 <property name="visible">True</property> 286 <property name="left_padding">12</property> 284 <property name="label_xalign">0</property> 285 <property name="shadow_type">none</property> 287 286 <child> 288 <widget class="Gtk VBox" id="vbox11">287 <widget class="GtkAlignment" id="alignment4"> 289 288 <property name="visible">True</property> 290 <property name="spacing">6</property> 291 <property name="homogeneous">True</property> 292 <child> 293 <widget class="GtkCheckButton" id="window_ontop"> 294 <property name="label" translatable="yes">Stay on top</property> 295 <property name="visible">True</property> 296 <property name="can_focus">False</property> 297 <property name="receives_default">False</property> 298 <property name="use_underline">True</property> 299 <property name="focus_on_click">False</property> 300 <property name="active">True</property> 301 <property name="draw_indicator">True</property> 302 <signal name="toggled" handler="on_window_ontop_toggled"/> 303 </widget> 304 <packing> 305 <property name="expand">False</property> 306 <property name="position">0</property> 307 </packing> 308 </child> 309 <child> 310 <widget class="GtkCheckButton" id="window_losefocus"> 311 <property name="label" translatable="yes">Hide on lose focus</property> 312 <property name="visible">True</property> 313 <property name="can_focus">True</property> 314 <property name="receives_default">False</property> 315 <property name="use_underline">True</property> 316 <property name="active">True</property> 317 <property name="draw_indicator">True</property> 318 <signal name="toggled" handler="on_window_losefocus_toggled"/> 319 </widget> 320 <packing> 321 <property name="expand">False</property> 322 <property name="fill">False</property> 323 <property name="position">1</property> 324 </packing> 325 </child> 289 <property name="left_padding">12</property> 326 290 <child> 327 <widget class="GtkCheckButton" id="window_tabbar"> 328 <property name="label" translatable="yes">Show tab bar</property> 291 <widget class="GtkVBox" id="vbox11"> 329 292 <property name="visible">True</property> 330 <property name="can_focus">True</property> 331 <property name="receives_default">False</property> 332 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 333 <property name="draw_indicator">True</property> 334 <signal name="toggled" handler="on_window_tabbar_toggled"/> 293 <property name="spacing">6</property> 294 <property name="homogeneous">True</property> 295 <child> 296 <widget class="GtkCheckButton" id="window_ontop"> 297 <property name="label" translatable="yes">Stay on top</property> 298 <property name="visible">True</property> 299 <property name="can_focus">True</property> 300 <property name="receives_default">False</property> 301 <property name="use_underline">True</property> 302 <property name="focus_on_click">False</property> 303 <property name="active">True</property> 304 <property name="draw_indicator">True</property> 305 <signal name="toggled" handler="on_window_ontop_toggled"/> 306 </widget> 307 <packing> 308 <property name="expand">False</property> 309 <property name="position">0</property> 310 </packing> 311 </child> 312 <child> 313 <widget class="GtkCheckButton" id="window_losefocus"> 314 <property name="label" translatable="yes">Hide on lose focus</property> 315 <property name="visible">True</property> 316 <property name="can_focus">True</property> 317 <property name="receives_default">False</property> 318 <property name="use_underline">True</property> 319 <property name="active">True</property> 320 <property name="draw_indicator">True</property> 321 <signal name="toggled" handler="on_window_losefocus_toggled"/> 322 </widget> 323 <packing> 324 <property name="expand">False</property> 325 <property name="fill">False</property> 326 <property name="position">1</property> 327 </packing> 328 </child> 329 <child> 330 <widget class="GtkCheckButton" id="window_tabbar"> 331 <property name="label" translatable="yes">Show tab bar</property> 332 <property name="visible">True</property> 333 <property name="can_focus">True</property> 334 <property name="receives_default">False</property> 335 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 336 <property name="draw_indicator">True</property> 337 <signal name="toggled" handler="on_window_tabbar_toggled"/> 338 </widget> 339 <packing> 340 <property name="position">2</property> 341 </packing> 342 </child> 335 343 </widget> 336 <packing>337 <property name="position">2</property>338 </packing>339 344 </child> 340 345 </widget> 341 346 </child> 347 <child> 348 <widget class="GtkLabel" id="label20"> 349 <property name="visible">True</property> 350 <property name="ypad">6</property> 351 <property name="label" translatable="yes"><b>Main Window</b></property> 352 <property name="use_markup">True</property> 353 </widget> 354 <packing> 355 <property name="type">label_item</property> 356 </packing> 357 </child> 342 358 </widget> 359 <packing> 360 <property name="position">0</property> 361 </packing> 343 362 </child> 344 363 <child> 345 <widget class="Gtk Label" id="label20">364 <widget class="GtkFrame" id="frame1"> 346 365 <property name="visible">True</property> 347 <property name="ypad">6</property> 348 <property name="label" translatable="yes"><b>Main Window</b></property> 349 <property name="use_markup">True</property> 366 <property name="label_xalign">0</property> 367 <property name="shadow_type">none</property> 368 <child> 369 <widget class="GtkAlignment" id="alignment2"> 370 <property name="visible">True</property> 371 <property name="left_padding">12</property> 372 <child> 373 <widget class="GtkVBox" id="vbox10"> 374 <property name="visible">True</property> 375 <child> 376 <placeholder/> 377 </child> 378 <child> 379 <widget class="GtkComboBox" id="monitorinput"> 380 <property name="visible">True</property> 381 <property name="items" translatable="yes"></property> 382 <signal name="changed" handler="on_monitorinput_changed"/> 383 </widget> 384 <packing> 385 <property name="expand">False</property> 386 <property name="position">1</property> 387 </packing> 388 </child> 389 <child> 390 <placeholder/> 391 </child> 392 </widget> 393 </child> 394 </widget> 395 </child> 396 <child> 397 <widget class="GtkLabel" id="label2"> 398 <property name="visible">True</property> 399 <property name="label" translatable="yes"><b>Display</b></property> 400 <property name="use_markup">True</property> 401 </widget> 402 <packing> 403 <property name="type">label_item</property> 404 </packing> 405 </child> 350 406 </widget> 351 407 <packing> 352 <property name=" type">label_item</property>408 <property name="position">1</property> 353 409 </packing> 354 410 </child> 355 411 </widget> 356 412 <packing> 413 <property name="expand">False</property> 414 <property name="fill">False</property> 357 415 <property name="position">2</property> 358 416 </packing> 359 417 </child> -
src/prefs.py
-- 1.7.0.4 From df41c23367b30fc307e61dd5add4c64045e1cb32 Mon Sep 17 00:00:00 2001 From: Pablo Recio Quijano <rikutheronin@gmail.com> Date: Sun, 8 Aug 2010 11:43:38 +0200 Subject: [PATCH 2/3] Added handling of the checkbox to select multiple displays Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com> --- src/prefs.py | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/src/prefs.py b/src/prefs.py index b0a69bf..c2d2186 100644
a b 194 194 val = int(spin.get_value()) 195 195 self.client.set_int(KEY('/general/history_size'), val) 196 196 197 def on_monitorinput_changed(self, monitor): 198 """Changes the monitor 199 """ 200 val = monitor.get_active() 201 self.client.set_int(KEY('/general/monitor'), val) 202 197 203 def on_scroll_output_toggled(self, chk): 198 204 """Changes the activity of scroll_output in gconf 199 205 """ … … 309 315 column.set_property('expand', False) 310 316 treeview.append_column(column) 311 317 318 screen = self.get_widget('config-window').get_screen() 319 self.monitorinput = self.get_widget('monitorinput') 320 num_monitors = screen.get_n_monitors() 321 for i in range(num_monitors): 322 self.monitorinput.append_text('%s' % i) 323 312 324 self.populate_shell_combo() 313 325 self.populate_keys_tree() 314 326 self.load_configs() … … 476 488 value = self.client.get_bool(KEY('/general/window_tabbar')) 477 489 self.get_widget('window_tabbar').set_active(value) 478 490 491 # monitor 492 combo = self.get_widget('monitorinput') 493 value = float(self.client.get_int(KEY('/general/monitor'))) 494 for i in combo.get_model(): 495 if i[0] == str(int(value)): 496 combo.set_active_iter(i.iter) 497 479 498 # scrollbar 480 499 value = self.client.get_bool(KEY('/general/use_scrollbar')) 481 500 self.get_widget('use_scrollbar').set_active(value) -
src/guake.py
-- 1.7.0.4 From 0f1d52fa37bbafa3edcacea6480dc73bf3238a12 Mon Sep 17 00:00:00 2001 From: Pablo Recio Quijano <rikutheronin@gmail.com> Date: Sun, 8 Aug 2010 11:44:17 +0200 Subject: [PATCH 3/3] Implemented the behaviour of multimonitor. Signed-off-by: Pablo Recio Quijano <rikutheronin@gmail.com> --- src/guake.py | 14 +++++--------- 1 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/guake.py b/src/guake.py index 6214fb2..9321108 100644
a b 776 776 """ 777 777 # setting window in all desktops 778 778 self.get_widget('window-root').stick() 779 monitor = self.client.get_int(KEY('/general/monitor')) 779 780 780 781 # add tab must be called before window.show to avoid a 781 782 # blank screen before adding the tab. … … 812 813 is the window_height property, width is window_width and the 813 814 horizontal alignment is given by window_alignment. 814 815 """ 816 monitor = self.client.get_int(KEY('/general/monitor')) 815 817 screen = self.window.get_screen() 818 if monitor >= screen.get_n_monitors(): #if we disconnect some monitor 819 monitor = 0 816 820 height = self.client.get_int(KEY('/general/window_height')) 817 821 width = 100 818 822 halignment = self.client.get_int(KEY('/general/window_halignment')) … … 820 824 # get the rectangle just from the first/default monitor in the 821 825 # future we might create a field to select which monitor you 822 826 # wanna use 823 window_rect = screen.get_monitor_geometry( 0)827 window_rect = screen.get_monitor_geometry(monitor) 824 828 total_width = window_rect.width 825 829 window_rect.height = window_rect.height * height / 100 826 830 window_rect.width = window_rect.width * width / 100 827 831 828 if width < total_width:829 if halignment == ALIGN_CENTER:830 window_rect.x = (total_width - window_rect.width) / 2831 elif halignment == ALIGN_LEFT:832 window_rect.x = 0833 elif halignment == ALIGN_RIGHT:834 window_rect.x = total_width - window_rect.width835 window_rect.y = 0836 832 return window_rect 837 833 838 834 def get_running_fg_processes(self):