From: Constantin Date: Tue, 16 Oct 2012 21:34:37 +0000 (+0200) Subject: Merge branch 'master' of ralfj.de:dsl X-Git-Url: https://git.ralfj.de/lilass.git/commitdiff_plain/33988e416bd971003f213d2bd04fc95104642ef8?hp=1b0001147e5d8209a2a2a209edaa93264a143473 Merge branch 'master' of ralfj.de:dsl --- diff --git a/gui.py b/gui.py index a0fb3bb..25f71c2 100644 --- a/gui.py +++ b/gui.py @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# This file bstracts GUI stuff away, so that the actual dsl.py does not have to deal with it +# This file abstracts GUI stuff away, so that the actual dsl.py does not have to deal with it import sys from PyQt4 import QtGui from qt_dialogue import PositionSelection diff --git a/zenity_dialogue.py b/zenity_dialogue.py new file mode 100644 index 0000000..8cba4d9 --- /dev/null +++ b/zenity_dialogue.py @@ -0,0 +1,43 @@ +# DSL - easy Display Setup for Laptops +# Copyright (C) 2012 Ralf Jung +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program (gpl.txt); if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +import subprocess +from dsl import RelativeScreenPosition, ScreenSetup, res2user + +def userChoose (title, choices, returns): + assert len(choices) == len(returns) + p = subprocess.Popen(["zenity", "--list", "--text="+title, "--column="]+choices, stdout=subprocess.PIPE) + switch = zip (choices,returns) + for line in p.stdout: + return switch.get(line, None) + +def run (internalResolutions, externalResolutions): + relpos = userChoose ("Position of external screen", ["Left of internal screen", "Right of internal screen", "Use external screen only"], [RelativeScreenPosition.LEFT, RelativeScreenPosition.RIGHT, RelativeScreenPosition.EXTERNAL_ONLY]) + if relpos == None: + return None + intres = internalResolutions[0] + if relpos != RelativeScreenPosition.EXTERNAL_ONLY: + intres = userChoose ("internal display resolution", map(res2user,internalResolutions), internalResolutions) + if intres == None: + return None + extres = userChoose ("external display resolution", map(res2user,externalResolutions), externalResolutions) + if extres == None: + return None + extprim = userChoose ("Which display should be the primary display?", ["internal display", "external display"], [False, True]) + if extprim == None: + return None + return ScreenSetup(relpos,intres,extres,extprim)