def OpenProgramFile(self, dummy): if self.isRunning: return openedFileName = dialogs.openDialog(_("Choose a file"), _("Program files (*.rur)|*.rur| All files (*.*)|*.*"), "", settings.USER_PROGS_DIR) if openedFileName != "": global code self.filename = openedFileName arg = self.status_bar.program_field, \ os.path.basename(self.filename) event_manager.SendCustomEvent(self, arg) code = open(self.filename, 'r').read() code = parser.FixLineEnding(code) self.ProgramEditor.SetText(code) no_error, mesg = parser.ParseProgram(code) settings.USER_PROGS_DIR = os.path.dirname(self.filename) if no_error: self.raw_code = code self.ProgramEditor.SetSavePoint() else: code = "" dialogs.messageDialog(mesg, _("Program will not be used."))
def OpenProgramFile(self, dummy): if self.isRunning: return openedFileName = dialogs.openDialog( _("Choose a file"), _("Program files (*.rur)|*.rur| All files (*.*)|*.*"), "", settings.USER_PROGS_DIR) if openedFileName != "": global code self.filename = openedFileName arg = self.status_bar.program_field, \ os.path.basename(self.filename) event_manager.SendCustomEvent(self, arg) code = open(self.filename, 'r').read() code = parser.FixLineEnding(code) self.ProgramEditor.SetText(code) no_error, mesg = parser.ParseProgram(code) settings.USER_PROGS_DIR = os.path.dirname(self.filename) if no_error: self.raw_code = code self.ProgramEditor.SetSavePoint() else: code = "" dialogs.messageDialog(mesg, _("Program will not be used."))
def BeepersToRobot(self, dummy): if self.user_program.isRunning: return self.user_program.clear_trace() try: dummy = self.backup_dict['robot'] except KeyError: msg = _("No robot in world to give beepers to.") dialogs.messageDialog(msg, 'error') return dialogs.RobotBeeperDialog(self, -1, _("Beepers!"))
def SaveProgramFile(self, dummy): if self.isRunning: return global code code = self.ProgramEditor.GetText() no_error, mesg = parser.ParseProgram(code) if no_error: savedFileName = savedFileName = dialogs.checkedSaveDialog( code, _("Save new program as"), _("Program files (*.rur)|*.rur| All files (*.*)|*.*"), self.filename, settings.USER_PROGS_DIR) self.filename = savedFileName arg = self.status_bar.program_field, \ os.path.basename(self.filename) event_manager.SendCustomEvent(self, arg) settings.USER_PROGS_DIR = os.path.dirname(self.filename) self.ProgramEditor.SetSavePoint() else: code = "" dialogs.messageDialog(mesg, _("Program will not be saved."))
def OnClose(self, event): if self.ProgramEditor.GetModify(): ret = dialogs.messageDialog(_(u'Save changes to %s?') % unicode(self.filename), _("About to close"), wx.YES | wx.NO | wx.CANCEL | wx.ICON_QUESTION | wx.STAY_ON_TOP) if ret == wx.ID_YES: if len(self.filename) > 0: try: f = open(self.filename, 'w') f.write(content) f.close() except IOError, e: messageDialog(unicode(e[1]), (u'IO Error'), wx.OK | wx.STAY_ON_TOP) else: self.SaveProgramFile(event) elif ret == wx.ID_NO: self.Destroy()
def OnClose(self, event): if self.ProgramEditor.GetModify(): ret = dialogs.messageDialog( _(u'Save changes to %s?') % unicode(self.filename), _("About to close"), wx.YES | wx.NO | wx.CANCEL | wx.ICON_QUESTION | wx.STAY_ON_TOP) if ret == wx.ID_YES: if len(self.filename) > 0: try: f = open(self.filename, 'w') f.write(content) f.close() except IOError, e: messageDialog(unicode(e[1]), (u'IO Error'), wx.OK | wx.STAY_ON_TOP) else: self.SaveProgramFile(event) elif ret == wx.ID_NO: self.Destroy()
def UpdateWorld(self): try: av = self.backup_dict['avenues'] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.")% _("avenues"), _("Invalid world file format")) return try: st = self.backup_dict['streets'] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.")% _("streets"), _("Invalid world file format")) return self.world.resetDimensions(av, st) try: if 'robot' in self.backup_dict: x, y, key, beep = self.backup_dict['robot'] arg = self.status_bar.beeper_field, beep event_manager.SendCustomEvent(self, arg) except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.")% _("robot"), _("Invalid world file format")) return # We might be reloading the world, to which robots may have been added # Remove all robots that have been added, if any; # recall that "named" robots are added through a user-defined program, # not in a world file. self.world.robot_dict = {} # Recreate the robot that was in the original file if 'robot' in self.backup_dict: self.world.addOneRobot(x, y, key, beep, name='robot') # world characteristics # note: we make shallow copies of rurApp.backup_dict as we # may need it if we call ResetWorld(). try: for corner in self.world.beepers_dict: del self.world.beepers_dict[corner] # empty, but keep reference for corner in self.backup_dict['beepers']: self.world.beepers_dict[corner] = self.backup_dict[ 'beepers'][corner] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.")% _("beepers"), _("Invalid world file format")) return # We need to keep one reference only to walls_list try: for col, row in self.world.walls_list: self.world.walls_list.remove((col, row)) # empty, but keep ref. for col, row in self.backup_dict['walls']: self.world.walls_list.append((col, row)) except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.")% _("walls"), _("Invalid world file format")) return # prepare to recreate the background images self.world.background_images_created = False self.world.AdjustWorldSize() self.world.InitTileSizes() self.WorldDisplay.InitialiseVariables() self.world.DoDrawing() # create a new bitmap image self.WorldDisplay.buffer = wx.EmptyBitmap(self.world.maxWidth, self.world.maxHeight) self.WorldDisplay.drawImage() self.WorldDisplay.Refresh() # added to fix refresh bug (issue #23)
def UpdateWorld(self): try: av = self.backup_dict['avenues'] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.") % _("avenues"), _("Invalid world file format")) return try: st = self.backup_dict['streets'] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.") % _("streets"), _("Invalid world file format")) return self.world.resetDimensions(av, st) try: if 'robot' in self.backup_dict: x, y, key, beep = self.backup_dict['robot'] arg = self.status_bar.beeper_field, beep event_manager.SendCustomEvent(self, arg) except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.") % _("robot"), _("Invalid world file format")) return # We might be reloading the world, to which robots may have been added # Remove all robots that have been added, if any; # recall that "named" robots are added through a user-defined program, # not in a world file. self.world.robot_dict = {} # Recreate the robot that was in the original file if 'robot' in self.backup_dict: self.world.addOneRobot(x, y, key, beep, name='robot') # world characteristics # note: we make shallow copies of rurApp.backup_dict as we # may need it if we call ResetWorld(). try: for corner in self.world.beepers_dict: del self.world.beepers_dict[ corner] # empty, but keep reference for corner in self.backup_dict['beepers']: self.world.beepers_dict[corner] = self.backup_dict['beepers'][ corner] except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.") % _("beepers"), _("Invalid world file format")) return # We need to keep one reference only to walls_list try: for col, row in self.world.walls_list: self.world.walls_list.remove( (col, row)) # empty, but keep ref. for col, row in self.backup_dict['walls']: self.world.walls_list.append((col, row)) except: dialogs.messageDialog( _("Problem with %s\nPlease recreate world file.") % _("walls"), _("Invalid world file format")) return # prepare to recreate the background images self.world.background_images_created = False self.world.AdjustWorldSize() self.world.InitTileSizes() self.WorldDisplay.InitialiseVariables() self.world.DoDrawing() # create a new bitmap image self.WorldDisplay.buffer = wx.EmptyBitmap(self.world.maxWidth, self.world.maxHeight) self.WorldDisplay.drawImage() self.WorldDisplay.Refresh() # added to fix refresh bug (issue #23)