1212from diplomat .utils .colormaps import iter_colormap
1313from diplomat .utils .track_formats import to_diplomat_table , save_diplomat_table
1414from diplomat .wx_gui .id_swap_dialog import IdSwapDialog
15+ from diplomat .wx_gui .labeler_lib import SettingCollection
1516from diplomat .wx_gui .point_edit import PointEditor , PointViewNEdit , PoseLabeler
1617from diplomat .wx_gui .progress_dialog import FBProgressDialog
1718from diplomat .wx_gui .score_lib import ScoreEngine , ScoreEngineDisplayer
1819from diplomat .wx_gui .scroll_image_list import ScrollImageList
1920from diplomat .processing import Pose , ProgressBar
2021from diplomat .wx_gui .helpdialog import HelpDialog
22+ from diplomat .wx_gui .settings_dialog import SettingsDialog
2123from diplomat .wx_gui .video_player import VideoController
2224from wx .lib .scrolledpanel import ScrolledPanel
2325from collections import deque
@@ -435,6 +437,9 @@ def _build_toolbar(self):
435437 export_csv_bmp = icons .to_wx_bitmap (icons .SAVE_TRACKS_ICON , icons .SAVE_TRACKS_SIZE ,
436438 self .GetForegroundColour (), self .TOOLBAR_ICON_SIZE )
437439
440+ settings_bmp = icons .to_wx_bitmap (icons .SETTINGS_ICON , icons .SETTINGS_SIZE ,
441+ self .GetForegroundColour (), self .TOOLBAR_ICON_SIZE )
442+
438443 spin_ctrl = wx .SpinCtrl (self ._toolbar , min = 1 , max = 50 , initial = PointViewNEdit .DEF_FAST_MODE_SPEED_FRACTION )
439444 spin_ctrl .SetMaxSize (wx .Size (- 1 , self .TOOLBAR_ICON_SIZE [1 ]))
440445 spin_ctrl .Bind (wx .EVT_SPINCTRL , self ._on_spin )
@@ -474,8 +479,10 @@ def _build_toolbar(self):
474479 self ._toolbar .AddTool (self ._save )
475480 self ._toolbar .AddSeparator ()
476481
477- self ._turtle = self ._toolbar .CreateTool (wx .ID_ANY , "Edit CTRL Speed: " , turtle_bmp , turtle_bmp ,
478- shortHelp = "Modify the labeling speed when CTRL Key is pressed (fast labeling mode)." )
482+ self ._turtle = self ._toolbar .CreateTool (
483+ wx .ID_ANY , "Edit CTRL Speed: " , turtle_bmp , turtle_bmp ,
484+ shortHelp = "Modify the labeling speed when CTRL Key is pressed (fast labeling mode)."
485+ )
479486 self ._toolbar .AddTool (self ._turtle )
480487 self ._toolbar .EnableTool (self ._turtle .GetId (), False )
481488 self ._toolbar .AddControl (spin_ctrl )
@@ -489,6 +496,10 @@ def _build_toolbar(self):
489496 shortHelp = "Export current tracks to a csv file from the UI." )
490497 self ._toolbar .AddTool (self ._export_to_csv )
491498
499+ self ._visual_settings = self ._toolbar .CreateTool (wx .ID_ANY , "Visual Settings" , settings_bmp ,
500+ shortHelp = "Adjust some visual settings of the editor." )
501+ self ._toolbar .AddTool (self ._visual_settings )
502+
492503 self ._help = self ._toolbar .CreateTool (wx .ID_ANY , "Help" , help_bmp , shortHelp = "Display the help dialog." )
493504 self ._toolbar .AddTool (self ._help )
494505
@@ -506,6 +517,7 @@ def _build_toolbar(self):
506517 self ._turtle ,
507518 self ._export_btn ,
508519 self ._export_to_csv ,
520+ self ._visual_settings ,
509521 self ._help
510522 ]
511523 self ._bitmaps = [
@@ -519,6 +531,7 @@ def _build_toolbar(self):
519531 turtle_bmp ,
520532 export_bmp ,
521533 export_csv_bmp ,
534+ settings_bmp ,
522535 help_bmp
523536 ]
524537
@@ -697,9 +710,32 @@ def on_tool(self, evt: wx.CommandEvent):
697710 self ._move_to_poor_label (False )
698711 elif (evt .GetId () == self ._export_to_csv .GetId ()):
699712 self ._save_to_csv ()
713+ elif (evt .GetId () == self ._visual_settings .GetId ()):
714+ self ._change_visual_settings ()
700715 elif ((self ._identity_swapper is not None ) and (evt .GetId () == self ._swap_id .GetId ())):
701716 self ._display_id_swap_dialog ()
702717
718+ def _change_visual_settings (self ):
719+ from diplomat .wx_gui .labeler_lib import Slider , FloatSpin
720+ from diplomat .wx_gui .settings_dialog import DropDown
721+ from matplotlib import colormaps
722+ point_video_viewer = self .video_player .video_viewer
723+
724+ sorted_colormaps = sorted (colormaps )
725+
726+ with SettingsDialog (self , title = "Visual Settings" , settings = SettingCollection (
727+ colormap = DropDown ([point_video_viewer .get_colormap ()] + sorted_colormaps , ["CURRENT" ] + sorted_colormaps ),
728+ point_radius = FloatSpin (1 , 1000 , point_video_viewer .get_point_radius (), increment = 1 , digits = 0 ),
729+ point_alpha = FloatSpin (0 , 1 , point_video_viewer .get_point_alpha (), increment = 0.01 , digits = 2 ),
730+ plot_threshold = FloatSpin (0 , 1 , point_video_viewer .get_plot_threshold (), increment = 0.001 , digits = 3 ),
731+ line_thickness = Slider (1 , 10 , point_video_viewer .get_line_thickness ())
732+ )) as dlg :
733+ if (dlg .ShowModal () == wx .ID_OK ):
734+ for k , v in dlg .get_values ().items ():
735+ getattr (point_video_viewer , f"set_{ k } " )(v )
736+ self .Refresh ()
737+ self .Update ()
738+
703739 def _save_to_csv (self ):
704740 with wx .FileDialog (self , "Select FrameStore Save Location" ,
705741 wildcard = "CSV File (*.csv)" ,
0 commit comments