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()
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()
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()
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()
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()
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()
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()
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()
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()
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