commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 01/05: grc: respect display scaling for blo


From: git
Subject: [Commit-gnuradio] [gnuradio] 01/05: grc: respect display scaling for block positions, canvas size and props dialog
Date: Sat, 12 Nov 2016 14:50:47 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch maint
in repository gnuradio.

commit 8ffadf88423290ad9b24a63a7d67ec36ccd5975b
Author: Sebastian Koslowski <address@hidden>
Date:   Wed Oct 12 15:17:09 2016 +0200

    grc: respect display scaling for block positions, canvas size and props 
dialog
---
 grc/gui/ActionHandler.py |  8 +++++---
 grc/gui/Block.py         | 15 +++++++--------
 grc/gui/Constants.py     |  3 +++
 grc/gui/FlowGraph.py     |  2 +-
 grc/gui/PropsDialog.py   |  4 +++-
 grc/gui/Utils.py         |  7 ++++++-
 6 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py
index f18fcea..ec5ac7c 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 b9fc12b..39c6993 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 6a7b54d..f77221e 100644
--- a/grc/gui/Constants.py
+++ b/grc/gui/Constants.py
@@ -96,6 +96,9 @@ SCROLL_DISTANCE = 15
 # How close the mouse click can be to a line and register a connection select.
 LINE_SELECT_SENSITIVITY = 5
 
+_SCREEN_RESOLUTION = gtk.gdk.screen_get_default().get_resolution()
+DPI_SCALING = _SCREEN_RESOLUTION / 96.0 if _SCREEN_RESOLUTION > 0 else 1.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 44a8ae2..e0cd7d1 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 0e7005d..cfea13e 100644
--- a/grc/gui/PropsDialog.py
+++ b/grc/gui/PropsDialog.py
@@ -72,7 +72,9 @@ 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(*Utils.scale(
+            (MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT)
+        ))
         self._block = block
 
         vpaned = gtk.VPaned()
diff --git a/grc/gui/Utils.py b/grc/gui/Utils.py
index 80dcb42..d85b846 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]