@@ -452,6 +452,15 @@ def dragLeaveEvent(self, event):
452452 event .ignore ()
453453
454454 def keyPressEvent (self , event ):
455+ """
456+ Key press event re-implemented to update the states for attributes:
457+ - ALT_state
458+ - CTRL_state
459+ - SHIFT_state
460+
461+ Args:
462+ event (QtGui.QKeyEvent): key event.
463+ """
455464 self .ALT_state = event .modifiers () == QtCore .Qt .AltModifier
456465 self .CTRL_state = event .modifiers () == QtCore .Qt .ControlModifier
457466 self .SHIFT_state = event .modifiers () == QtCore .Qt .ShiftModifier
@@ -464,6 +473,15 @@ def keyPressEvent(self, event):
464473 super (NodeViewer , self ).keyPressEvent (event )
465474
466475 def keyReleaseEvent (self , event ):
476+ """
477+ Key release event re-implemented to update the states for attributes:
478+ - ALT_state
479+ - CTRL_state
480+ - SHIFT_state
481+
482+ Args:
483+ event (QtGui.QKeyEvent): key event.
484+ """
467485 self .ALT_state = event .modifiers () == QtCore .Qt .AltModifier
468486 self .CTRL_state = event .modifiers () == QtCore .Qt .ControlModifier
469487 self .SHIFT_state = event .modifiers () == QtCore .Qt .ShiftModifier
@@ -709,7 +727,11 @@ def establish_connection(self, start_port, end_port):
709727 @staticmethod
710728 def acyclic_check (start_port , end_port ):
711729 """
712- validate the connection so it doesn't loop itself.
730+ Validate the node connections so it doesn't loop itself.
731+
732+ Args:
733+ start_port (PortItem): port item.
734+ end_port (PortItem): port item.
713735
714736 Returns:
715737 bool: True if port connection is valid.
@@ -761,10 +783,27 @@ def context_menus(self):
761783
762784 @staticmethod
763785 def question_dialog (text , title = 'Node Graph' ):
786+ """
787+ Prompt node viewer question dialog widget with "yes", "no" buttons.
788+
789+ Args:
790+ text (str): dialog text.
791+ title (str): dialog window title.
792+
793+ Returns:
794+ bool: true if user click yes.
795+ """
764796 return BaseDialog .question_dialog (text , title )
765797
766798 @staticmethod
767799 def message_dialog (text , title = 'Node Graph' ):
800+ """
801+ Prompt node viewer message dialog widget with "ok" button.
802+
803+ Args:
804+ text (str): dialog text.
805+ title (str): dialog window title.
806+ """
768807 BaseDialog .message_dialog (text , title )
769808
770809 def load_dialog (self , current_dir = None , ext = None ):
@@ -794,31 +833,56 @@ def save_dialog(self, current_dir=None, ext=None):
794833 return file_path
795834
796835 def all_pipes (self ):
797- pipes = []
836+ """
837+ Returns all pipe qgraphic items.
838+
839+ Returns:
840+ list[Pipe]: instances of pipe items.
841+ """
798842 excl = [self ._LIVE_PIPE , self ._SLICER_PIPE ]
799- for item in self .scene ().items ():
800- if isinstance (item , Pipe ) and item not in excl :
801- pipes .append (item )
802- return pipes
843+ return [i for i in self .scene ().items ()
844+ if isinstance (i , Pipe ) and i not in excl ]
803845
804846 def all_nodes (self ):
805- nodes = []
806- for item in self .scene ().items ():
807- if isinstance (item , AbstractNodeItem ):
808- nodes .append (item )
809- return nodes
847+ """
848+ Returns all node qgraphic items.
849+
850+ Returns:
851+ list[AbstractNodeItem]: instances of node items.
852+ """
853+ return [i for i in self .scene ().items ()
854+ if isinstance (i , AbstractNodeItem )]
810855
811856 def selected_nodes (self ):
812- nodes = [item for item in self .scene ().selectedItems () \
857+ """
858+ Returns selected node qgraphic items.
859+
860+ Returns:
861+ list[AbstractNodeItem]: instances of node items.
862+ """
863+ nodes = [item for item in self .scene ().selectedItems ()
813864 if isinstance (item , AbstractNodeItem )]
814865 return nodes
815866
816867 def selected_pipes (self ):
817- pipes = [item for item in self .scene ().selectedItems () \
868+ """
869+ Returns selected pipe qgraphic items.
870+
871+ Returns:
872+ list[Pipe]: pipe items.
873+ """
874+ pipes = [item for item in self .scene ().selectedItems ()
818875 if isinstance (item , Pipe )]
819876 return pipes
820877
821878 def selected_items (self ):
879+ """
880+ Return selected graphic items in the scene.
881+
882+ Returns:
883+ tuple(list[AbstractNodeItem], list[Pipe]):
884+ selected (node items, pipe items).
885+ """
822886 nodes = []
823887 pipes = []
824888 for item in self .scene ().selectedItems ():
@@ -829,13 +893,26 @@ def selected_items(self):
829893 return nodes , pipes
830894
831895 def add_node (self , node , pos = None ):
896+ """
897+ Add node item into the scene.
898+
899+ Args:
900+ node (AbstractNodeItem): node item instance.
901+ pos (tuple or list): node scene position.
902+ """
832903 pos = pos or (self ._previous_pos .x (), self ._previous_pos .y ())
833904 node .pre_init (self , pos )
834905 self .scene ().addItem (node )
835906 node .post_init (self , pos )
836907
837908 @staticmethod
838909 def remove_node (node ):
910+ """
911+ Remove node item from the scene.
912+
913+ Args:
914+ node (AbstractNodeItem): node item instance.
915+ """
839916 if isinstance (node , AbstractNodeItem ):
840917 node .delete ()
841918
@@ -888,25 +965,57 @@ def center_selection(self, nodes=None):
888965 self .centerOn (rect .center ().x (), rect .center ().y ())
889966
890967 def get_pipe_layout (self ):
968+ """
969+ Returns the pipe layout mode.
970+
971+ Returns:
972+ int: pipe layout mode.
973+ """
891974 return self ._pipe_layout
892975
893976 def set_pipe_layout (self , layout ):
977+ """
978+ Sets the pipe layout mode and redraw all pipe items in the scene.
979+
980+ Args:
981+ layout (int): pipe layout mode. (see the contants module)
982+ """
894983 self ._pipe_layout = layout
895984 for pipe in self .all_pipes ():
896985 pipe .draw_path (pipe .input_port , pipe .output_port )
897986
898987 def reset_zoom (self , cent = None ):
899- self ._scene_range = QtCore .QRectF (0 , 0 , self .size ().width (), self .size ().height ())
988+ """
989+ Reset the viewer zoom level.
990+
991+ Args:
992+ cent (QtCore.QPoint): specified center.
993+ """
994+ self ._scene_range = QtCore .QRectF (0 , 0 ,
995+ self .size ().width (),
996+ self .size ().height ())
900997 if cent :
901998 self ._scene_range .translate (cent - self ._scene_range .center ())
902999 self ._update_scene ()
9031000
9041001 def get_zoom (self ):
1002+ """
1003+ Returns the viewer zoom level.
1004+
1005+ Returns:
1006+ float: zoom level.
1007+ """
9051008 transform = self .transform ()
9061009 cur_scale = (transform .m11 (), transform .m22 ())
9071010 return float ('{:0.2f}' .format (cur_scale [0 ] - 1.0 ))
9081011
9091012 def set_zoom (self , value = 0.0 ):
1013+ """
1014+ Set the viewer zoom level.
1015+
1016+ Args:
1017+ value (float): zoom level
1018+ """
9101019 if value == 0.0 :
9111020 self .reset_zoom ()
9121021 return
0 commit comments