Пример #1
0
 def __load_layers_state(self):
     """ Get the layers state persisted to the 
     layermanager file in the presets directory.
     The selected layer and the active flag value 
     for each layer is stored, but NOT the value 
     of the locked flag, since this is part of the 
     data persisted with its owning level. """
     servers.get_layer_manager().loadlayers(self.__get_layers_path())
Пример #2
0
 def __load_layers_state(self):
     """ Get the layers state persisted to the 
     layermanager file in the presets directory.
     The selected layer and the active flag value 
     for each layer is stored, but NOT the value 
     of the locked flag, since this is part of the 
     data persisted with its owning level. """
     servers.get_layer_manager().loadlayers(
         self.__get_layers_path() 
         )
Пример #3
0
def layer_can_be_deleted(layer):
    """ Check that the layer can be deleted.
    Warn the user if it isn't and return false.
    Otherwise just return true. """
    # check the layer has not been locked
    layer_name = layer.getlayername()
    if layer.islocked():
        cjr.show_error_message(
            "You cannot delete the '%s' layer.\n\n" \
                "It is not possible to delete a locked layer." % layer_name
            )
        return False

    # check that there're at least two layers
    manager = servers.get_layer_manager()
    if manager.getnumlayers() <= 1:
        msg = "You cannot delete the '%s' layer.\n\n" \
                    "A level must always have at least one layer." % layer_name
        cjr.show_error_message(msg)
        return False

    # check if there's some entity not marked as deleted within the layer
    try:
        try:
            wx.BeginBusyCursor()
            e_server = servers.get_entity_object_server()
            entity = e_server.getfirstentityobject()
            report = []
            while entity is not None:
                if entity.hascomponent('ncEditor'):
                    if not entity.isdeleted():
                        entity_layer_id = entity.getlayerid()
                        if entity_layer_id >= 0:
                            entity_layer = manager.searchlayerbyid(
                                entity_layer_id)
                            if entity_layer.getlayername() == layer_name:
                                entity_class = entity.getentityclass().getname(
                                )
                                entity_name = ""
                                if entity.hascomponent('ncGameplay'):
                                    entity_name = entity.getname()
                                report.append((entity.getid(), entity_class,
                                               entity_name))
                entity = e_server.getnextentityobject()
        finally:
            wx.EndBusyCursor()
    except:
        # make sure any errors are not hidden
        raise

    # show a report about all the entities found in the layer, if any
    if len(report) > 0:
        caption = "Error deleting the '%s' layer" % layer_name
        msg = "Unable to delete the '%s' layer because it " \
                    "still contains the following entities" % layer_name
        log = (['Id', 'Class', 'Name'], report)
        usagelog.UsageLogDialog(app.get_top_window(), caption, msg, log)
        return False

    return True
Пример #4
0
 def save_layers_state(self):
     """ Save the layers state to file - see comment
     for the __load_layers_state method. """
     servers.get_layer_manager().savelayers(
         self.__get_layers_path() 
         )
Пример #5
0
 def __add_all_layer_ctrls(self):
     selected_layer_id = servers.get_layer_manager().getselectedlayerid()
     layer = servers.get_layer_manager().gethead()
     while layer is not None:
         layer_id = layer.getid()
Пример #6
0
 def get_layer(self):
     return servers.get_layer_manager().searchlayerbyid(
         self.get_layer_id()
         )
Пример #7
0
 def select(self):
     self.is_selected = True
     servers.get_layer_manager().selectlayer(
         self.get_layer_id()
         )
     self.update_colors()
Пример #8
0
def layer_can_be_deleted(layer):
    """ Check that the layer can be deleted.
    Warn the user if it isn't and return false.
    Otherwise just return true. """
    # check the layer has not been locked
    layer_name = layer.getlayername()
    if layer.islocked():
        cjr.show_error_message(
            "You cannot delete the '%s' layer.\n\n" \
                "It is not possible to delete a locked layer." % layer_name
            )
        return False

    # check that there're at least two layers
    manager = servers.get_layer_manager()
    if manager.getnumlayers() <= 1:
        msg = "You cannot delete the '%s' layer.\n\n" \
                    "A level must always have at least one layer." % layer_name
        cjr.show_error_message(msg)
        return False

    # check if there's some entity not marked as deleted within the layer
    try:
        try:
            wx.BeginBusyCursor()
            e_server = servers.get_entity_object_server()
            entity = e_server.getfirstentityobject()
            report = []
            while entity is not None:
                if entity.hascomponent('ncEditor'):
                    if not entity.isdeleted():
                        entity_layer_id = entity.getlayerid()
                        if entity_layer_id >= 0:
                            entity_layer = manager.searchlayerbyid(
                                                    entity_layer_id 
                                                    )
                            if entity_layer.getlayername() == layer_name:
                                entity_class = entity.getentityclass().getname()
                                entity_name = ""
                                if entity.hascomponent('ncGameplay'):
                                    entity_name = entity.getname()
                                report.append(
                                    (entity.getid(), entity_class, entity_name)
                                    )
                entity = e_server.getnextentityobject()
        finally:
            wx.EndBusyCursor()
    except:
        # make sure any errors are not hidden
        raise
    
    # show a report about all the entities found in the layer, if any
    if len( report ) > 0:
        caption = "Error deleting the '%s' layer" % layer_name
        msg = "Unable to delete the '%s' layer because it " \
                    "still contains the following entities" % layer_name
        log = ( ['Id', 'Class', 'Name'], report )
        usagelog.UsageLogDialog(
            app.get_top_window(), 
            caption, 
            msg, 
            log 
            )
        return False
    
    return True
Пример #9
0
 def save_layers_state(self):
     """ Save the layers state to file - see comment
     for the __load_layers_state method. """
     servers.get_layer_manager().savelayers(self.__get_layers_path())
Пример #10
0
 def __add_all_layer_ctrls(self):
     selected_layer_id = servers.get_layer_manager().getselectedlayerid()
     layer = servers.get_layer_manager().gethead()
     while layer is not None:
         layer_id = layer.getid()
Пример #11
0
 def get_layer(self):
     return servers.get_layer_manager().searchlayerbyid(self.get_layer_id())
Пример #12
0
 def select(self):
     self.is_selected = True
     servers.get_layer_manager().selectlayer(self.get_layer_id())
     self.update_colors()
Пример #13
0
 def __init__(self):
     self.layer_manager = servers.get_layer_manager()
     #initialize the dictionary with the default value
     self.layer_name_dictionary = {cfg.NO_LAYER_ID : "None"}