From c7a56e2707c9957b1497d412b518c33ad270070f Mon Sep 17 00:00:00 2001
From: urys <irychtar@gmail.com>
Date: Thu, 25 Mar 2010 18:34:41 +0100
Subject: [PATCH 3/3] 2010-03-25 added ability to slide from bottom or top

---
 data/guake.schemas      |   13 +++++++++++++
 src/guake.py            |    9 ++++++++-
 src/guake_globals.py.in |    3 ++-
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/data/guake.schemas b/data/guake.schemas
index da82d34..f8f811b 100644
--- a/data/guake.schemas
+++ b/data/guake.schemas
@@ -144,6 +144,19 @@
 	    </locale>
 	</schema>
 
+       	<schema>
+	    <key>/schemas/apps/guake/general/window_valignment</key>
+	    <applyto>/apps/guake/general/window_valignment</applyto>
+	    <owner>guake</owner>
+	    <type>int</type>
+	    <default>0</default>
+	    <locale name="C">
+	    <short>Window vertical alignment.</short>
+	    <long>Place Guake at:
+	          0: top, 1: bottom</long>
+	    </locale>
+	</schema>
+
         <schema>
             <key>/schemas/apps/guake/general/use_scrollbar</key>
             <applyto>/apps/guake/general/use_scrollbar</applyto>
diff --git a/src/guake.py b/src/guake.py
index 08ade24..68c7f63 100644
--- a/src/guake.py
+++ b/src/guake.py
@@ -44,7 +44,7 @@ from dbusiface import DbusManager, DBUS_NAME, DBUS_PATH
 from common import test_gconf, pixmapfile, gladefile, ShowableError, _
 from guake_globals import NAME, VERSION, LOCALE_DIR, KEY, GCONF_PATH, \
     TERMINAL_MATCH_EXPRS, TERMINAL_MATCH_TAGS, \
-    ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER
+    ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ALIGN_TOP, ALIGN_BOTTOM
 
 pynotify.init('Guake!')
 
@@ -788,12 +788,14 @@ class Guake(SimpleGladeApp):
         height = self.client.get_int(KEY('/general/window_height'))
         width = 100
         halignment = self.client.get_int(KEY('/general/window_halignment'))
+        valignment = self.client.get_int(KEY('/general/window_valignment'))
 
         # get the rectangle just from the first/default monitor in the
         # future we might create a field to select which monitor you
         # wanna use
         window_rect = screen.get_monitor_geometry(0)
         total_width = window_rect.width
+        total_height = window_rect.height
         window_rect.height = window_rect.height * height / 100
         window_rect.width = window_rect.width * width / 100
 
@@ -804,7 +806,12 @@ class Guake(SimpleGladeApp):
                 window_rect.x = 0
             elif halignment == ALIGN_RIGHT:
                 window_rect.x = total_width - window_rect.width
+
         window_rect.y = 0
+        if height < total_height:
+            if valignment == ALIGN_BOTTOM:
+                window_rect.y = (total_height - window_rect.height)
+
         return window_rect
 
     def get_running_fg_processes(self):
diff --git a/src/guake_globals.py.in b/src/guake_globals.py.in
index 002e55a..efcd504 100644
--- a/src/guake_globals.py.in
+++ b/src/guake_globals.py.in
@@ -22,7 +22,7 @@ Boston, MA 02111-1307, USA.
 __all__ = [
     'NAME', 'VERSION', 'IMAGE_DIR', 'GLADE_DIR', 'LOCALE_DIR',
     'GCONF_PATH', 'KEY', 'TERMINAL_MATCH_EXPRS', 'TERMINAL_MATCH_TAGS',
-    'ALIGN_CENTER', 'ALIGN_RIGHT', 'ALIGN_LEFT',
+    'ALIGN_CENTER', 'ALIGN_RIGHT', 'ALIGN_LEFT', 'ALIGN_TOP', 'ALIGN_BOTTOM'
     ]
 
 NAME = 'guake'
@@ -56,3 +56,4 @@ TERMINAL_MATCH_EXPRS = [
 
 TERMINAL_MATCH_TAGS = 'schema', 'http', 'email'
 ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT = range(3)
+ALIGN_TOP, ALIGN_BOTTOM = range(2)
-- 
1.6.6

