def withWorksheetFile(webViewController, filename, server=None): if not server: server = ServerConfigurations.getDefault() wsc = WorksheetController(webViewController) wsc.server_configuration = server ws = wsc.notebook.import_worksheet(filename, wsc.notebook_username) SageProcessManager.setWorksheetProcessServer(ws, server) wsc.setWorksheet(ws) return wsc
def withNewWorksheet(webViewController, server=None): # server is a Sage server configuration that will determine the Sage process this # worksheet will use. if not server: server = ServerConfigurations.getDefault() wsc = WorksheetController(webViewController) wsc.server_configuration = server ws = guru_notebook.create_new_worksheet('Untitled', wsc.notebook_username) SageProcessManager.setWorksheetProcessServer(ws, server) wsc.setWorksheet(ws) return wsc
def restartSageProcess(worksheet): # The code to restart the Sage process in sagenb.notebook.worksheet.Worksheet makes assumptions # that may not hold for us. if ManagedWorksheets.has_key(worksheet): server_config = ManagedWorksheets[worksheet] else: # We're not managing this worksheet. server_config = ServerConfigurations.getDefault() #Turns out, the following is equivalent to restarting the process. setWorksheetProcessServer(worksheet, server_config)
def setWorksheetProcessServer(worksheet, server_config=None): # sagenb.notebook.worksheet.Worksheet was designed to get it's sage process # from its associated notebook, so we have to do some stuff that isn't # necessarily how one would normally design it if one were starting # from scratch. #We will need the worksheet to have it's _notebook property set. if (not hasattr(worksheet, "_notebook")) or (worksheet._notebook is None): worksheet._notebook = guru_notebook #If we aren't given a server config, use the default. if not server_config: server_config = ServerConfigurations.getDefault() # Note that some Sage interfaces do not require worksheet.initialize_sage(). # Seems to me initialize_sage() doesn't belong in Worksheet at all, but in # sagenb.interfaces.worksheet_process.WorksheetProcess, but I didn't write it. if server_config["type"]=="local": #For local servers, it's easy. worksheet = stopSageProcess(worksheet) worksheet._Worksheet__sage = getLocalProcess(server_config) worksheet.initialize_sage() elif server_config["type"]=="notebook server": worksheet = setNotebookProcessServer(worksheet, server_config) elif server_config["type"]=="cell server": pass elif server_config["type"]=="remote": pass else: #This should never execute. It just restarts sage using whatever the notebook gives it. worksheet.restart_sage() return worksheet
def newWorksheetFile(self, server=None): if not server: server = ServerConfigurations.getDefault() #Create a new worksheet. self.clear() self.worksheet_controller = WorksheetController.withNewWorksheet(self, server=server)
def openWorksheetFile(self, file_name, server=None): if not server: server = ServerConfigurations.getDefault() self.clear() self.worksheet_controller = WorksheetController.withWorksheetFile(self, file_name, server=server)