def refresh_button_state( self ): bake_layers = pmc.ls( typ = 'BakeLayer' ) one_selected = False if pmc.treeView( self.__layer_tree, q = True, si = True ) == None: pass elif len( pmc.treeView( self.__layer_tree, q = True, si = True ) ) == 1: one_selected = True sel_layer = pmc.treeView( self.__layer_tree, q = True, si = True )[ 0 ] connected_layers = [ ] if one_selected: selected_is_high = utils.is_high( sel_layer ) if selected_is_high: connected_layers = utils.get_connected_low_layers( sel_layer ) else: connected_layers = utils.get_connected_high_layers( sel_layer ) for layer in bake_layers: if one_selected == True: if selected_is_high == utils.is_high( layer ): pmc.treeView( self.__layer_tree, e = True, eb = ( layer, 2, False ), i = ( layer, 2, '' ) ) else: if utils.get_bake_layer( layer ) in connected_layers: image = bake_layer_tool.get_image( 'link_icon.png' ) else: image = bake_layer_tool.get_image( 'unlink_icon.png' ) pmc.treeView( self.__layer_tree, e = True, eb = ( layer, 2, True ), i = ( layer, 2, image ) ) else: pmc.treeView( self.__layer_tree, e = True, eb = ( layer, 2, False ), i = ( layer, 2, '' ) )
def button_type_change( self, layer, arg ): node = utils.get_bake_layer(layer) if utils.is_high( layer ): utils.set_low( layer ) else: utils.set_high( layer ) self.refresh( )
def button_connection_edit( self, layer, arg ): selected_layer = pmc.treeView( self.__layer_tree, q = True, si = True )[ 0 ] if utils.are_connected( layer, selected_layer ): utils.disconnect_layers( [ layer, selected_layer ] ) else: if utils.is_high( selected_layer ): utils.connect_layers( layer, selected_layer ) else: utils.connect_layers( selected_layer, layer ) self.refresh_button_state()
def connect_layers( self, evt ): """ Connect two layers event handler. """ high_layers = [ ] low_layers = [ ] for layer in self.get_selected_layers( ): if utils.is_high( layer ): high_layers.append( layer ) else: low_layers.append( layer ) if not len( low_layers ) == 1: pmc.error( 'Connecting Bake Layers requires one and only one low layer.' ) return False utils.connect_layers( low_layers[ 0 ], high_layers )
def refresh( self ): bake_layers = pmc.ls( typ = 'BakeLayer' ) for layer in bake_layers: pass # Build the new layout pmc.treeView( self.__layer_tree, e = True, removeAll = True ) for layer in bake_layers: # Create Button if utils.is_high( layer ): h_l_button = 'H' low = False rd_button = False else: h_l_button = 'L' low = True rd_button = bake_layer_tool.get_image( 'ray_dist.png' ) pmc.treeView( self.__layer_tree, e = True, addItem = ( layer.name( ), '' ) ) pmc.treeView( self.__layer_tree, e = True, bti = ( layer.name( ), 1, h_l_button ) ) pmc.treeView( self.__layer_tree, e = True, eb = ( layer, 3, low ), i = ( layer, 3, rd_button ) ) self.refresh_button_state()
def show_left_click_menu( self, menu, layer ): if layer == '': return False pmc.setParent( menu, menu = True ) if len( pmc.ls( sl = True ) ) < 1: selection = False else: selection = True is_high = utils.is_high( layer ) if len( self.get_selected_layers( ) ) < 2: mult_select = False else: mult_select = True menu.deleteAllItems( ) pmc.menuItem( label = layer + '...' ) if not is_high: enable = True else: enable = False pmc.menuItem( label = 'Bake this layer', enable = enable, command = pmc.Callback( self.do_bake_layer, layer ) ) pmc.menuItem( divider = True ) if is_high: enable = False else: enable = True pmc.menuItem( label = 'Set layer to High-poly', enable = enable, command = pmc.Callback( utils.set_high, layer ) ) if is_high: enable = True else: enable = False pmc.menuItem( label = 'Set layer to Low-poly', enable = enable, command = pmc.Callback( utils.set_low, layer ) ) pmc.menuItem( divider = True ) enable = mult_select pmc.menuItem( label = 'Connect Selected Layers', enable = enable, command = self.connect_layers ) pmc.menuItem( divider = True ) if not selection: enable = False else: enable = True pmc.menuItem( label = 'Add selected objects', enable = enable, command = pmc.Callback( utils.add_to_bake_layer, layer ) ) pmc.menuItem( label = 'Remove selected objects', enable = enable, command = pmc.Callback( utils.remove_from_bake_layer, layer ) ) pmc.menuItem( label = 'Select Objects', command = pmc.Callback( self.select_objects, layer ) ) pmc.menuItem( divider = True ) pmc.menuItem( label = 'Delete', command = pmc.Callback( self.delete_selected, layer ) ) return True
def build( self ): form = pmc.formLayout( ) pmc.setParent( form ) is_high = utils.is_high( self.layer ) body = pmc.columnLayout( rowSpacing = 4 ) self.name_field = pmc.textFieldGrp( columnWidth = [ 1, 70 ], label = 'Name', text = self.layer.name( ), editable = True ) self.high_low = pmc.radioButtonGrp( columnWidth = [ 1, 70 ], nrb = 2, l = 'Layer Type:', l1 = 'High-poly', l2 = 'Low-poly' ) self.ray_laybe = pmc.text ( l = 'Max ray Distance:', al = 'center', width = 350 ) float_row = pmc.rowColumnLayout( numberOfRows = 1 ) self.ray_dist_f = pmc.floatFieldGrp( columnWidth = [ 1, 70 ], nf = 1, l = 'Front', pre = 3 ) self.ray_dist_b = pmc.floatFieldGrp( columnWidth = [ 1, 70 ], nf = 1, l = 'Back', pre = 3 ) if is_high: self.high_low.setSelect( 1 ) else: self.high_low.setSelect( 2 ) self.ray_dist_b.setValue1( utils.get_back_ray_dist( self.layer ) ) self.ray_dist_f.setValue1( utils.get_front_ray_dist( self.layer ) ) button_form = pmc.formLayout( parent = form ) btn_save = pmc.button( label = 'Save', command = self.save_changes ) btn_cancel = pmc.button( label = 'Cancel', command = self.cancel_changes ) button_form.attachForm( btn_save, 'top', 0 ) button_form.attachForm( btn_save, 'left', 0 ) button_form.attachForm( btn_save, 'bottom', 0 ) button_form.attachPosition( btn_save, 'right', 2, 50 ) button_form.attachForm( btn_cancel, 'top', 0 ) button_form.attachPosition( btn_cancel, 'left', 2, 50 ) button_form.attachForm( btn_cancel, 'bottom', 0 ) button_form.attachForm( btn_cancel, 'right', 0 ) form.attachForm( body, 'top', 4 ) form.attachForm( body, 'left', 4 ) form.attachControl( body, 'bottom', 4, button_form ) form.attachForm( body, 'right', 4 ) form.attachNone( button_form, 'top' ) form.attachForm( button_form, 'left', 4 ) form.attachForm( button_form, 'bottom', 4) form.attachForm( button_form, 'right', 4 ) self.refresh( )