示例#1
0
 def on_add_to_area(self, event):
     """Add selection to loading area"""
     # select an area and add current selection to it
     dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.OPEN,
                                    'area', 'Area', "/usr/areas")
     if dlg.ShowModal() == wx.ID_OK:
         # Check that's an existing area
         if not dlg.node_exists():
             msg = "There is no area called '%s'" % dlg.get_guiname()
             cjr.show_error_message(msg)
         else:
             # assign selected entities to the area
             app.get_object_state().addtoloadarea(str(dlg.get_guiname()))
     dlg.Destroy()
示例#2
0
 def on_delete_area(self, event):
     """Delete loading area"""
     # select an area and get a name
     dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.DELETE,
                                    'area', 'Area', "/usr/areas")
     ok_to_continue = dlg.ShowModal() == wx.ID_OK
     if ok_to_continue:
         msg = "Delete area '%s'?" % dlg.get_guiname()
         delete = cjr.warn_yes_no(self.get_frame(), msg)
         if delete == wx.ID_YES:
             # Delete the area from the level
             servers.get_loader_server().deleteloadarea(
                 str(dlg.get_guiname()))
     dlg.Destroy()
示例#3
0
 def on_open_area(self, event):
     """Open loading area"""
     # Ask for the area name
     if pynebula.exists(str("/usr/areas")):
         dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.OPEN,
                                        'area', 'Area', "/usr/areas")
         if dlg.ShowModal() == wx.ID_OK:
             # Check that's an existing area
             if not dlg.node_exists():
                 msg = "There is no area called '%s'" % dlg.get_guiname()
                 cjr.show_error_message(msg)
             else:
                 # open the area for edition
                 win = objdlg.create_window(wx.GetApp().GetTopWindow(),
                                            dlg.get_node().getfullname())
                 win.display()
         dlg.Destroy()
示例#4
0
    def on_delete_stream(self, event):
        """Delete geometry stream"""
        # Ask for the stream name
        if not pynebula.exists(str("/usr/streams")):
            app.get_state("geometrystream").loadstreamlibrary()

        dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.DELETE,
                                       'stream', 'Stream', "/usr/streams")
        ok_to_continue = dlg.ShowModal() == wx.ID_OK
        if ok_to_continue:
            msg = "Delete stream '%s'?" % dlg.get_guiname()
            delete = cjr.warn_yes_no(self.get_frame(), msg)
            if delete == wx.ID_YES:
                # Delete the stream
                app.get_state("geometrystream").deletestream(
                    str(dlg.get_guiname()))
        dlg.Destroy()
示例#5
0
    def on_open_stream(self, event):
        """Open geometry stream"""
        # Ask for the stream name
        if not pynebula.exists(str("/usr/streams")):
            app.get_state("geometrystream").loadstreamlibrary()

        dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.OPEN,
                                       'stream', 'Stream', "/usr/streams")
        if dlg.ShowModal() == wx.ID_OK:
            # Check that's an existing stream
            if not dlg.node_exists():
                msg = "There is no stream called '%s'" % dlg.get_guiname()
                cjr.show_error_message(msg)
            else:
                # open the stream for editing
                win = objdlg.create_window(wx.GetApp().GetTopWindow(),
                                           dlg.get_node().getfullname())
                win.display()
        dlg.Destroy()
示例#6
0
 def on_area_stats(self, event):
     """Get stats and budget for loading area"""
     # select an area and retrieve stats information for it
     dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.OPEN,
                                    'area', 'Area', "/usr/areas")
     if dlg.ShowModal() == wx.ID_OK:
         # Check that's an existing area
         if not dlg.node_exists():
             msg = "There is no area called '%s'" % dlg.get_guiname()
             cjr.show_error_message(msg)
         else:
             # show log of resources for the area
             dlg2 = waitdlg.WaitDialog(self.get_frame(),
                                       "Analyzing area ...")
             if not dlg.get_node().logdebugstats():
                 msg = "No stats available for this area, "\
                             "you need to load it first"
                 cjr.show_error_message(msg)
             dlg2.Destroy()
     dlg.Destroy()
示例#7
0
 def on_new_indoor_area(self, event):
     """Create new indoor loading area"""
     # Create a new indoor area
     dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.NEW,
                                    'area', 'Area', "/usr/areas")
     if dlg.ShowModal() == wx.ID_OK:
         # Check that's a new stream name
         if dlg.node_exists():
             msg = "There's already an area named"
             msg = msg + " '" + dlg.get_guiname() + "'.\n"
             msg = msg + "You should enter a new area name."
             cjr.show_error_message(msg)
         else:
             # create the new loading area
             obj = servers.get_loader_server().createloadarea(
                 "nindoorarea", str(dlg.get_guiname()))
             win = objdlg.create_window(wx.GetApp().GetTopWindow(),
                                        obj.getfullname())
             win.display()
     dlg.Destroy()
示例#8
0
    def on_remove_stream(self, event):
        """Remove geometry stream"""
        if not pynebula.exists(str("/usr/streams")):
            app.get_state("geometrystream").loadstreamlibrary()

        dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.OPEN,
                                       'stream', 'Stream', "/usr/streams")
        if dlg.ShowModal() == wx.ID_OK:
            # Check that's an existing stream
            if not dlg.node_exists():
                msg = "There is no stream called '%s'" % dlg.get_guiname()
                cjr.show_error_message(msg)
            else:
                # remove the stream
                dlg2 = waitdlg.WaitDialog(
                    self.get_frame(),
                    "Removing stream '%s' ..." % dlg.get_guiname())
                dlg.get_node().removestream()
                dlg2.Destroy()
        dlg.Destroy()
示例#9
0
    def on_create_stream(self, event):
        """Create geometry stream"""
        # Ask for the new stream name
        if not pynebula.exists(str("/usr/streams")):
            app.get_state("geometrystream").loadstreamlibrary()

        dlg = nodelibdlg.NodeLibDialog(self.get_frame(), nodelibdlg.NEW,
                                       'stream', 'Stream', "/usr/streams")
        if dlg.ShowModal() == wx.ID_OK:
            # Check that's a new stream name
            if dlg.node_exists():
                msg = "There's already a stream named"
                msg = msg + " '" + dlg.get_guiname() + "'.\n"
                msg = msg + "You should enter a new stream name."
                cjr.show_error_message(msg)
            else:
                # create the new stream
                obj = app.get_state("geometrystream").createstream(
                    str(dlg.get_guiname()))
                win = objdlg.create_window(wx.GetApp().GetTopWindow(),
                                           obj.getfullname())
                win.display()
        dlg.Destroy()
示例#10
0
 def __get_subtype_property(self, subtype, name, label):
     if "asset" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/assets") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "texture" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/textures") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "image" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/textures") + "\\"
         prop = pg.wxAdvImageFileProperty(name, label)
     elif "shader" == subtype:
         directory = servers.get_file_server().manglepath("wc:export/shader") + "\\"
         prop = pg.wxFileProperty(name, label, directory)
     elif "file" == subtype:
         directory = servers.get_file_server().manglepath("wc:")
         prop = pg.wxFileProperty(name, label, directory)
     elif "material" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '')
         dlg = nodelibdlg.NodeLibDialog( self, nodelibdlg.SELECT,
             'material', 'Material', "/usr/materials")
         prop.SetCallBackDialog(dlg)
     elif "directory" == subtype:
         directory = servers.get_file_server().manglepath("home:")
         prop = pg.wxDirProperty(name, label, directory)
     elif "entityobjectclass" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = objbrowserwindow.create_dialog(
                     self, 
                     True, 
                     "/sys/nobject/nentityobject"
                     )
         prop.SetCallBackDialog(dlg)
         prop = pg.wxStringProperty(name, label, '')
     elif "nroot" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = objbrowserwindow.create_dialog(
                     self, 
                     True, 
                     "/"
                     )
         prop.SetCallBackDialog(dlg)
     elif "entityclass" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = grimoire.create_dialog(self, True)
         prop.SetCallBackDialog(dlg)
     elif "entityobject" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = entitybrowser.create_dialog(self)
         prop.SetCallBackDialog(dlg)
     elif "musicsample" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_sample_selection(self)
         prop.SetCallBackDialog(dlg)
     elif "musicmood" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_mood_selection(self)
         prop.SetCallBackDialog(dlg)
     elif "musicstyle" == subtype:
         prop = pg.wxStringCallBackProperty(name, label, '' )
         dlg = musictabledlg.dialog_for_music_style_selection(self)
         prop.SetCallBackDialog(dlg)
     else:
         print "Bad subtype"
         prop = pg.wxStringProperty(name, label, '')
 
     return prop