11# objectViewer add-on for NVDA
22# This file is covered by the GNU General Public License.
33# See the file COPYING.txt for more details.
4- # Copyright (C) 2024 hwf1324 <1398969445@qq.com>
4+ # Copyright (C) 2024-2025 hwf1324 <1398969445@qq.com>
55
66import sys
77
1515from .objectTree import NVDAObjectTree
1616
1717
18- class ObjectViewerFrame (wx .Frame ):
19- def __init__ (
20- self ,
21- parent ,
22- namespace
23- ):
18+ class ObjectViewerFrame (DpiScalingHelperMixinWithoutInit , wx .Frame ):
19+ def __init__ (self , parent , namespace ):
2420 super ().__init__ (
2521 parent ,
2622 wx .ID_ANY ,
2723 # Translators: The title of the Object Viewer frame.
2824 _ ("Object Viewer" ),
29- size = (850 , 700 ),
3025 style = wx .DEFAULT_FRAME_STYLE | wx .STAY_ON_TOP ,
3126 )
3227
@@ -64,27 +59,31 @@ def __init__(
6459 splitterSizer .Add (self .treeContentsSizer , proportion = 1 , flag = wx .EXPAND )
6560 splitterSizer .Add (self .propertieContentsSizer .sizer , proportion = 1 , flag = wx .EXPAND )
6661 self .panelContentsSizer .Add (splitterSizer , proportion = 1 , flag = wx .EXPAND )
67- self .panelContentsSizer .Add (self .crust , flag = wx .EXPAND )
62+ self .panelContentsSizer .Add (self .crust , proportion = 1 , flag = wx .EXPAND )
6863
6964 self .Bind (wx .EVT_TREE_SEL_CHANGED , self .onSelectionChanged , self .objectTree )
7065
7166 self .makeMenuBar ()
7267
73- self .CenterOnScreen ()
68+ # setting the size must be done after the parent is constructed.
69+ self .SetMinSize (self .scaleSize (self .MIN_SIZE ))
70+ self .SetSize (self .scaleSize (self .INITIAL_SIZE ))
71+ # the size has changed, so recenter on the screen
72+ self .CentreOnScreen ()
73+
74+ INITIAL_SIZE = (800 , 480 )
75+ MIN_SIZE = (470 , 240 )
7476
7577 def createCrust (self , namespace ):
7678 import buildVersion
79+
7780 introText = _ (
7881 f"Python { sys .version .split ()[0 ]} on { sys .platform } , NVDA { buildVersion .version } \n "
7982 "NOTE: The 'obj' variable refers to the NVDA object selected in the tree."
8083 )
8184
8285 crust = wx .py .crust .Crust (
83- self .panel ,
84- size = (- 1 , 200 ),
85- locals = namespace ,
86- intro = introText ,
87- showInterpIntro = False
86+ self .panel , size = (- 1 , 200 ), locals = namespace , intro = introText , showInterpIntro = False
8887 )
8988 crust .shell .SetBufferedDraw (False )
9089 crust .filling .text .SetBufferedDraw (False )
@@ -96,13 +95,11 @@ def makeMenuBar(self):
9695 treeMenu : wx .Menu = wx .Menu ()
9796 menu_addTreeNotesMode : wx .Menu = wx .Menu ()
9897 self .addTreeNotesChildrenMode : wx .MenuItem = menu_addTreeNotesMode .AppendRadioItem (
99- wx .ID_ANY ,
100- _ ("children" )
98+ wx .ID_ANY , _ ("children" )
10199 )
102100 self .addTreeNotesChildrenMode .Check (config .conf ["objectViewer" ]["addTreeNotesMode" ] == "children" )
103101 self .addTreeNotesIteratorMode : wx .MenuItem = menu_addTreeNotesMode .AppendRadioItem (
104- wx .ID_ANY ,
105- _ ("iterator" )
102+ wx .ID_ANY , _ ("iterator" )
106103 )
107104 self .addTreeNotesIteratorMode .Check (config .conf ["objectViewer" ]["addTreeNotesMode" ] == "iterator" )
108105 self .Bind (wx .EVT_MENU , self .onToggleAddTreeNotesMode , self .addTreeNotesChildrenMode )
0 commit comments