Toggle Light / Dark / Auto color theme
               
           
          
            Toggle table of contents sidebar
             
         
        
          Source code for gaphas.tool.placement 
from   __future__   import  annotations 
from   collections.abc   import  Callable 
from   gi.repository   import  Gtk 
from   gaphas.handlemove   import  HandleMove 
from   gaphas.item   import  Item 
from   gaphas.move   import  MoveType 
FactoryType  =  Callable [[],  Item ] 
class   PlacementState : 
    def   __init__ ( self ,  factory :  FactoryType ,  handle_index :  int ): 
        self . factory  =  factory 
        self . handle_index  =  handle_index 
        self . moving :  MoveType  |  None  =  None 
        self . start_x  =  0 
        self . start_y  =  0 
def   on_drag_begin ( gesture ,  start_x ,  start_y ,  placement_state ): 
    view  =  gesture . get_widget () 
    item  =  placement_state . factory () 
    x ,  y  =  view . get_matrix_v2i ( item ) . transform_point ( start_x ,  start_y ) 
    item . matrix . translate ( x ,  y ) 
    view . selection . unselect_all () 
    view . selection . focused_item  =  item 
    gesture . set_state ( Gtk . EventSequenceState . CLAIMED ) 
    handle  =  item . handles ()[ placement_state . handle_index ] 
    if  handle . movable : 
        placement_state . start_x  =  start_x 
        placement_state . start_y  =  start_y 
        placement_state . moving  =  HandleMove ( item ,  handle ,  view ) 
        placement_state . moving . start_move (( start_x ,  start_y )) 
def   on_drag_update ( gesture ,  offset_x ,  offset_y ,  placement_state ): 
    if  placement_state . moving : 
        placement_state . moving . move ( 
            ( placement_state . start_x  +  offset_x ,  placement_state . start_y  +  offset_y ) 
        ) 
def   on_drag_end ( gesture ,  offset_x ,  offset_y ,  placement_state ): 
    if  placement_state . moving : 
        placement_state . moving . stop_move ( 
            ( placement_state . start_x  +  offset_x ,  placement_state . start_y  +  offset_y ) 
        )