class ProjectsView(tk.Frame): def __init__(self, parent, windows, **args): tk.Frame.__init__(self, parent, bg='white', **args) self.windows = windows self.manager = windows.manager self.root = windows.root #tkFont.Font(size=12, family='verdana', weight='bold') bigSize = pwgui.cfgFontSize + 2 smallSize = pwgui.cfgFontSize - 2 fontName = pwgui.cfgFontName self.projNameFont = tkFont.Font(size=bigSize, family=fontName, weight='bold') self.projDateFont = tkFont.Font(size=smallSize, family=fontName) self.projDelFont = tkFont.Font(size=smallSize, family=fontName, weight='bold') self.manager = Manager() btn = HotButton(self, text=Message.LABEL_CREATE_PROJECT, font=self.projNameFont, command=self._onCreateProject) btn.grid(row=0, column=0, sticky='nw', padx=10, pady=10) self.columnconfigure(0, weight=1) self.rowconfigure(1, weight=1) text = TaggedText(self, width=40, height=15, bd=0, bg='white') text.grid(row=1, column=0, sticky='news') self.createProjectList(text) text.setReadOnly(True) self.text = text def createProjectList(self, text): """Load the list of projects""" r = 0 text.setReadOnly(False) text.clear() parent = tk.Frame(text, bg='white') parent.columnconfigure(0, weight=1) colors = ['white', '#EAEBFF'] for i, p in enumerate(self.manager.listProjects()): try: project = self.manager.loadProject(p.getName(), chdir=False) # Add creation time to project info p.cTime = project.getCreationTime() frame = self.createProjectLabel(parent, p, color=colors[i % 2]) frame.grid(row=r, column=0, padx=10, pady=5, sticky='new') r += 1 except Exception, ex: print "ERROR loading project: %s" % p.getName() print ex text.window_create(tk.INSERT, window=parent) text.bindWidget(parent) text.setReadOnly(True)
class ProjectsView(tk.Frame): def __init__(self, parent, windows, **args): tk.Frame.__init__(self, parent, bg='white', **args) self.windows = windows self.manager = windows.manager self.root = windows.root #tkFont.Font(size=12, family='verdana', weight='bold') bigSize = pwgui.cfgFontSize + 2 smallSize = pwgui.cfgFontSize - 2 fontName = pwgui.cfgFontName self.projNameFont = tkFont.Font(size=bigSize, family=fontName, weight='bold') self.projDateFont = tkFont.Font(size=smallSize, family=fontName) self.projDelFont = tkFont.Font(size=smallSize, family=fontName, weight='bold') self.manager = Manager() btn = HotButton(self, text=Message.LABEL_CREATE_PROJECT, font=self.projNameFont, command=self._onCreateProject) btn.grid(row=0, column=0, sticky='nw', padx=10, pady=10) self.columnconfigure(0, weight=1) self.rowconfigure(1, weight=1) text = TaggedText(self, width=40, height=15, bd=0, bg='white') text.grid(row=1, column=0, sticky='news') self.createProjectList(text) text.setReadOnly(True) self.text = text def createProjectList(self, text): """Load the list of projects""" r = 0 text.setReadOnly(False) text.clear() parent = tk.Frame(text, bg='white') parent.columnconfigure(0, weight=1) colors = ['white', '#EAEBFF'] for i, p in enumerate(self.manager.listProjects()): try: project = self.manager.loadProject(p.getName(), chdir=False) # Add creation time to project info p.cTime = project.getCreationTime() frame = self.createProjectLabel(parent, p, color=colors[i%2]) frame.grid(row=r, column=0, padx=10, pady=5, sticky='new') r += 1 except Exception, ex: print "ERROR loading project: %s" % p.getName() print ex text.window_create(tk.INSERT, window=parent) text.bindWidget(parent) text.setReadOnly(True)
def projects(request): from pyworkflow.utils.utils import prettyDate manager = Manager() projects = manager.listProjects() for p in projects: p.pTime = prettyDate(p.mTime) if 'projectName' in request.session: request.session['projectName'] = "" if 'projectPath' in request.session: request.session['projectPath'] = "" context = {'projects': projects, 'projects_css': getResourceCss('projects'), 'project_utils_js': getResourceJs('project_utils'), } context = base_grid(request, context) return render_to_response('projects.html', context)
def projects(request): from pyworkflow.utils.utils import prettyDate manager = Manager() projects = manager.listProjects() for p in projects: p.pTime = prettyDate(p.mTime) if 'projectName' in request.session: request.session['projectName'] = "" if 'projectPath' in request.session: request.session['projectPath'] = "" context = { 'projects': projects, 'projects_css': getResourceCss('projects'), 'project_utils_js': getResourceJs('project_utils'), } context = base_grid(request, context) return render_to_response('projects.html', context)
def projects(request): from pyworkflow.utils.utils import prettyDate manager = Manager() projectsList = manager.listProjects() for p in projectsList: p.pTime = prettyDate(p.mTime) if CTX_PROJECT_NAME in request.session: request.session[CTX_PROJECT_NAME] = "" if CTX_PROJECT_PATH in request.session: request.session[CTX_PROJECT_PATH] = "" context = { 'projects': projectsList, 'projects_css': getResourceCss('projects'), 'project_utils_js': getResourceJs('project_utils'), 'workflows': json.dumps(getWorkflowsList()) } context = base_grid(request, context) return render_to_response('projects.html', context)
class ProjectsView(tk.Frame): def __init__(self, parent, windows, **args): tk.Frame.__init__(self, parent, bg='white', **args) self.windows = windows self.manager = windows.manager self.root = windows.root #tkFont.Font(size=12, family='verdana', weight='bold') bigSize = pwgui.cfgFontSize + 2 smallSize = pwgui.cfgFontSize - 2 fontName = pwgui.cfgFontName self.projNameFont = tkFont.Font(size=bigSize, family=fontName, weight='bold') self.projDateFont = tkFont.Font(size=smallSize, family=fontName) self.projDelFont = tkFont.Font(size=smallSize, family=fontName, weight='bold') self.manager = Manager() btn = HotButton(self, text=Message.LABEL_CREATE_PROJECT, font=self.projNameFont, command=self._onCreateProject) btn.grid(row=0, column=0, sticky='nw', padx=10, pady=10) self.columnconfigure(0, weight=1) self.rowconfigure(1, weight=1) text = TaggedText(self, width=40, height=15, bd=0, bg='white') text.grid(row=1, column=0, sticky='news') self.createProjectList(text) text.setReadOnly(True) self.text = text def createProjectList(self, text): """Load the list of projects""" r = 0 text.setReadOnly(False) text.clear() parent = tk.Frame(text, bg='white') parent.columnconfigure(0, weight=1) colors = ['white', '#EAEBFF'] for i, p in enumerate(self.manager.listProjects()): project = self.manager.loadProject(p.getName(), chdir=False) # Add creation time to project info p.cTime = project.getCreationTime() frame = self.createProjectLabel(parent, p, color=colors[i%2]) frame.grid(row=r, column=0, padx=10, pady=5, sticky='new') r += 1 text.window_create(tk.INSERT, window=parent) text.bindWidget(parent) text.setReadOnly(True) def createProjectLabel(self, parent, projInfo, color): frame = tk.Frame(parent, bg=color) label = tk.Label(frame, text=projInfo.projName, anchor='nw', bg=color, justify=tk.LEFT, font=self.projNameFont, cursor='hand1', width=50) label.grid(row=0, column=0, padx=2, pady=2, sticky='nw') label.bind('<Button-1>', lambda e: self.openProject(projInfo.projName)) dateMsg = '%s%s %s%s' % (Message.LABEL_MODIFIED, prettyDate(projInfo.mTime), Message.LABEL_CREATED, prettyTime(projInfo.cTime, time=False)) dateLabel = tk.Label(frame, text=dateMsg, font=self.projDateFont, bg=color) dateLabel.grid(row=1, column=0, sticky='nw') delLabel = tk.Label(frame, text=Message.LABEL_DELETE_PROJECT, font=self.projDelFont, bg=color, cursor='hand1') delLabel.grid(row=1, column=1, padx=10) delLabel.bind('<Button-1>', lambda e: self.deleteProject(projInfo.projName)) mvLabel = tk.Label(frame, text=Message.LABEL_RENAME_PROJECT, font=self.projDelFont, bg=color, cursor='hand1') mvLabel.grid(row=1, column=2) mvLabel.bind('<Button-1>', lambda e: self.renameProject(projInfo.projName)) return frame def createNewProject(self, projName, projLocation): self.manager.createProject(projName, location=projLocation) self.createProjectList(self.text) self.openProject(projName) def _onCreateProject(self, e=None): projWindow = ProjectCreateWindow("Create project", self) projWindow.show() def openProject(self, projName): from subprocess import Popen script = pw.join('apps', 'pw_project.py') Popen([os.environ['SCIPION_PYTHON'], script, projName]) def deleteProject(self, projName): if askYesNo(Message.TITLE_DELETE_PROJECT, "Project *%s*. " % projName + Message.MESSAGE_DELETE_PROJECT, self.root): self.manager.deleteProject(projName) self.createProjectList(self.text) def renameProject(self, projName): newName = askString("Rename project %s" % projName, "Enter new name:", self.root) if not newName or newName == projName: return if self.manager.hasProject(newName): showError("Rename cancelled", "Project name already exists: %s" % newName, self.root) return self.manager.renameProject(projName, newName) self.createProjectList(self.text)
n = len(sys.argv) if n > 3: usage("Incorrect number of input parameters") delete = '--delete' in sys.argv arg1 = sys.argv[1] if n > 1 and arg1 != '--delete': customUserData = arg1 else: customUserData = os.environ['SCIPION_USER_DATA'] print "Loading projects from:\n", customUserData # Create a new project manager = Manager(SCIPION_USER_DATA=customUserData) for projInfo in manager.listProjects(): projName = projInfo.getName() proj = manager.loadProject(projName) settings = proj.getSettings() leftTime = proj.getLeftTime() if (leftTime is not None and leftTime.days < 0): if delete: print "Deleting: %s (%s) " % (projName, leftTime) manager.deleteProject(projName) else: print "Should delete: %s (%s)" % (projName, leftTime)
from pyworkflow.gui.project import ProjectWindow if __name__ == '__main__': # Add callback for remote debugging if available. try: from rpdb2 import start_embedded_debugger from signal import signal, SIGUSR2 signal(SIGUSR2, lambda sig, frame: start_embedded_debugger('a')) except ImportError: pass if len(sys.argv) > 1: manager = Manager() projName = os.path.basename(sys.argv[1]) if projName == 'last': # Get last project projects = manager.listProjects() if not projects: sys.exit("No projects yet, cannot open the last one.") projName = projects[0].projName projPath = manager.getProjectPath(projName) try: projWindow = ProjectWindow(projPath) except Exception as e: sys.exit(e) projWindow.show() else: print "usage: pw_project.py PROJECT_NAME"
if os.listdir(cwd): print pwutils.red('\nWARNING: this folder is not empty!!!') key = raw_input("\nDo you want to create a project here? [y/N]?") if key.lower().strip() != 'y': print "\nAborting..." sys.exit(0) else: print "\nCreating project...." projName = os.path.basename(cwd) projDir = os.path.dirname(cwd) proj = manager.createProject(projName, location=projDir) elif projName == 'last': # Get last project projects = manager.listProjects() if not projects: sys.exit("No projects yet, cannot open the last one.") projName = projects[0].projName projPath = manager.getProjectPath(projName) try: projWindow = ProjectWindow(projPath) except Exception as e: # Print any exception print("ERROR: At pw_project.py loading Project %s.\n" " Message: %s\n" % (projPath, e)) import traceback traceback.print_exc(file=sys.stderr)
usage("Incorrect number of input parameters") delete = '--delete' in sys.argv arg1 = sys.argv[1] if n > 1 and arg1 != '--delete': customUserData = arg1 else: customUserData = os.environ['SCIPION_USER_DATA'] print "Loading projects from:\n", customUserData # Create a new project manager = Manager(SCIPION_USER_DATA=customUserData) for projInfo in manager.listProjects(): projName = projInfo.getName() proj = manager.loadProject(projName) settings = proj.getSettings() leftTime = proj.getLeftTime() if (leftTime is not None and leftTime.days < 0): if delete: print "Deleting: %s (%s) " % (projName, leftTime) manager.deleteProject(projName) else: print "Should delete: %s (%s)" % (projName, leftTime)