summaryrefslogtreecommitdiff
path: root/grc
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-10-12 15:17:09 +0200
committerSebastian Koslowski <koslowski@kit.edu>2016-10-21 09:29:38 +0200
commitea3eaa5f930062fa57568c6132a5930b7399f5f7 (patch)
tree2225a7ad738151b365f06848b488515dcb0bc3a3 /grc
parent1624da7772f1ff57232e2f2024281547d483629c (diff)
grc: respect display scaling for block positions, canvas size and props dialog
Diffstat (limited to 'grc')
-rw-r--r--grc/gui/ActionHandler.py8
-rw-r--r--grc/gui/Block.py15
-rw-r--r--grc/gui/Constants.py2
-rw-r--r--grc/gui/FlowGraph.py2
-rw-r--r--grc/gui/PropsDialog.py5
-rw-r--r--grc/gui/Utils.py7
6 files changed, 24 insertions, 15 deletions
diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py
index f18fcea3e1..ec5ac7c574 100644
--- a/grc/gui/ActionHandler.py
+++ b/grc/gui/ActionHandler.py
@@ -23,7 +23,7 @@ import gtk
import os
import subprocess
-from . import Dialogs, Preferences, Actions, Executor, Constants
+from . import Dialogs, Preferences, Actions, Executor, Constants, Utils
from .FileDialogs import (OpenFlowGraphFileDialog, SaveFlowGraphFileDialog,
SaveConsoleFileDialog, SaveScreenShotDialog,
OpenQSSFileDialog)
@@ -688,8 +688,10 @@ class ActionHandler:
Actions.FLOW_GRAPH_SAVE.set_sensitive(not page.get_saved())
main.update()
try: #set the size of the flow graph area (if changed)
- new_size = (flow_graph.get_option('window_size') or
- self.platform.config.default_canvas_size)
+ new_size = Utils.scale(
+ flow_graph.get_option('window_size') or
+ self.platform.config.default_canvas_size
+ )
if flow_graph.get_size() != tuple(new_size):
flow_graph.set_size(*new_size)
except: pass
diff --git a/grc/gui/Block.py b/grc/gui/Block.py
index 55c8805fae..b90ea485ee 100644
--- a/grc/gui/Block.py
+++ b/grc/gui/Block.py
@@ -95,9 +95,8 @@ class Block(Element, _Block):
"""
proximity = Constants.BORDER_PROXIMITY_SENSITIVITY
try: #should evaluate to tuple
- coor = eval(self.get_param('_coordinate').get_value())
- x, y = map(int, coor)
- fgW,fgH = self.get_parent().get_size()
+ x, y = Utils.scale(eval(self.get_param('_coordinate').get_value()))
+ fgW, fgH = self.get_parent().get_size()
if x <= 0:
x = 0
elif x >= fgW - proximity:
@@ -124,7 +123,7 @@ class Block(Element, _Block):
Utils.align_to_grid(coor[0] + offset_x) - offset_x,
Utils.align_to_grid(coor[1] + offset_y) - offset_y
)
- self.get_param('_coordinate').set_value(str(coor))
+ self.get_param('_coordinate').set_value(str(Utils.scale(coor, reverse=True)))
def bound_move_delta(self, delta_coor):
"""
@@ -141,11 +140,11 @@ class Block(Element, _Block):
try:
fgW, fgH = self.get_parent().get_size()
- x, y = map(int, eval(self.get_param("_coordinate").get_value()))
+ x, y = Utils.scale(eval(self.get_param('_coordinate').get_value()))
if self.is_horizontal():
- sW, sH = self.W, self.H
+ sW, sH = self.W, self.H
else:
- sW, sH = self.H, self.W
+ sW, sH = self.H, self.W
if x + dX < 0:
dX = -x
@@ -154,7 +153,7 @@ class Block(Element, _Block):
if y + dY < 0:
dY = -y
elif dY + y + sH >= fgH:
- dY = fgH - y - sH
+ dY = fgH - y - sH
except:
pass
diff --git a/grc/gui/Constants.py b/grc/gui/Constants.py
index 022564cd77..f3a6df1802 100644
--- a/grc/gui/Constants.py
+++ b/grc/gui/Constants.py
@@ -96,6 +96,8 @@ SCROLL_DISTANCE = 15
# How close the mouse click can be to a line and register a connection select.
LINE_SELECT_SENSITIVITY = 5
+DPI_SCALING = gtk.gdk.screen_get_default().get_resolution() / 96.0
+
def update_font_size(font_size):
global PORT_SEPARATION, BLOCK_FONT, PORT_FONT, PARAM_FONT, FONT_SIZE
diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py
index f98aec41d5..5bcf018120 100644
--- a/grc/gui/FlowGraph.py
+++ b/grc/gui/FlowGraph.py
@@ -407,7 +407,7 @@ class FlowGraph(Element, _Flowgraph):
Draw the pixmap to the drawable window of this flow graph.
"""
- W,H = self.get_size()
+ W, H = self.get_size()
hide_disabled_blocks = Actions.TOGGLE_HIDE_DISABLED_BLOCKS.get_active()
hide_variables = Actions.TOGGLE_HIDE_VARIABLES.get_active()
diff --git a/grc/gui/PropsDialog.py b/grc/gui/PropsDialog.py
index 7c66a77a54..907eff7c68 100644
--- a/grc/gui/PropsDialog.py
+++ b/grc/gui/PropsDialog.py
@@ -23,7 +23,7 @@ import gtk
import Actions
from Dialogs import SimpleTextDisplay
-from Constants import MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT, FONT_SIZE
+from Constants import MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT, FONT_SIZE, DPI_SCALING
import Utils
import pango
@@ -72,7 +72,8 @@ class PropsDialog(gtk.Dialog):
gtk.STOCK_APPLY, gtk.RESPONSE_APPLY)
)
self.set_response_sensitive(gtk.RESPONSE_APPLY, False)
- self.set_size_request(MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT)
+ self.set_size_request(MIN_DIALOG_WIDTH +DPI_SCALING,
+ MIN_DIALOG_HEIGHT * DPI_SCALING)
self._block = block
vpaned = gtk.VPaned()
diff --git a/grc/gui/Utils.py b/grc/gui/Utils.py
index 51b9b19e9f..7d15d47142 100644
--- a/grc/gui/Utils.py
+++ b/grc/gui/Utils.py
@@ -24,7 +24,7 @@ import gobject
from Cheetah.Template import Template
-from Constants import POSSIBLE_ROTATIONS, CANVAS_GRID_SIZE
+from Constants import POSSIBLE_ROTATIONS, CANVAS_GRID_SIZE, DPI_SCALING
def rotate_pixmap(gc, src_pixmap, dst_pixmap, angle=gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE):
@@ -131,3 +131,8 @@ def align_to_grid(coor, mode=round):
except TypeError:
x = coor
return align(coor)
+
+
+def scale(coor, reverse=False):
+ factor = DPI_SCALING if not reverse else 1 / DPI_SCALING
+ return tuple(int(x * factor) for x in coor)