def saveui_delete(self, name):
     from chimera import preferences
     removeXSection(name)
     preferences.save()
     redisplayMenu()
     self.dialog.status("Setting \"%s\" deleted" % name)
     return True
	def saveui_delete(self, name):
		from chimera import preferences
		removeXSection(name)
		preferences.save()
		redisplayMenu()
		self.dialog.status("Setting \"%s\" deleted" % name)
		return True
Exemple #3
0
	def saveui_save(self, name):
		from chimera import preferences
		addRRC(name, self.guide, self.plane, self.planeNormal,
			self.isNucleic, self.mainchain)
		preferences.save()
		self.dialog.status("Setting \"%s\" saved" % name)
		return True
Exemple #4
0
 def saveui_save(self, name):
     from chimera import preferences
     addRRC(name, self.guide, self.plane, self.planeNormal, self.isNucleic,
            self.mainchain)
     preferences.save()
     self.dialog.status("Setting \"%s\" saved" % name)
     return True
Exemple #5
0
def set_preferences(binary, dat):
    assert_preferences()
    if os.path.isfile(binary) and os.path.isdir(dat):
        preferences.set('tangram_nciplot', 'nciplot_bin', binary)
        preferences.set('tangram_nciplot', 'nciplot_dat', dat)
        preferences.save()
    else:
        raise ValueError('One or more of the specified paths do not exist.')
	def _removeDblCmdCB(self):
		"""callback from 'dbl-click commands' listbox"""
		cmdList = list(self.dblCommandsList.get(None))
		del cmdList[int(self.dblCommandsList.curselection()[0])]
		self.dblCommandsList.setlist(cmdList)

		self.prefs['executionList'] = cmdList
		preferences.save()
Exemple #7
0
    def _removeDblCmdCB(self):
        """callback from 'dbl-click commands' listbox"""
        cmdList = list(self.dblCommandsList.get(None))
        del cmdList[int(self.dblCommandsList.curselection()[0])]
        self.dblCommandsList.setlist(cmdList)

        self.prefs['executionList'] = cmdList
        preferences.save()
Exemple #8
0
    def _addDblCmdCB(self):
        """callback from 'command menu' listbox"""
        cmdList = list(self.dblCommandsList.get(None))
        cmdList.append(self.dblCommandMenu.getcurselection()[0])
        self.dblCommandsList.setlist(cmdList)
        self.dblCommandMenu.selection_clear()

        self.prefs['executionList'] = cmdList
        preferences.save()
	def _addDblCmdCB(self):
		"""callback from 'command menu' listbox"""
		cmdList = list(self.dblCommandsList.get(None))
		cmdList.append(self.dblCommandMenu.getcurselection()[0])
		self.dblCommandsList.setlist(cmdList)
		self.dblCommandMenu.selection_clear()

		self.prefs['executionList'] = cmdList
		preferences.save()
	def _butChangeCB(self, butName):
		butInfo = self.buttonInfo[butName]
		if butInfo['variable'].get() == 0:
			# don't show button
			self.groupPanel._hideButton(butName)
			self.prefs['shownButs'][butName] = 0
		else:
			# show button
			self.groupPanel._showButton(butName)
			self.prefs['shownButs'][butName] = 1
		preferences.save()
Exemple #11
0
def addStyle(name, info):
	exists = name in userStyles
	if exists and userStyles[name] == info:
		return
	userStyles[name] = info
	if not name:
		return
	prefStyles[name] = info
	from chimera import preferences
	preferences.save()
	chimera.triggers.activateTrigger(TRIGGER_SLAB_STYLES, name)
Exemple #12
0
 def _butChangeCB(self, butName):
     butInfo = self.buttonInfo[butName]
     if butInfo['variable'].get() == 0:
         # don't show button
         self.groupPanel._hideButton(butName)
         self.prefs['shownButs'][butName] = 0
     else:
         # show button
         self.groupPanel._showButton(butName)
         self.prefs['shownButs'][butName] = 1
     preferences.save()
    def addDirectory(self, path, savePreferences=False):
        "Add a directory to preferences and load extension from it"

        if path not in self.directories:
            self.directories.append(path)
            if self.loadDirectory(path) and self.settingsGrid:
                self.remakeSettings()
            if savePreferences:
                preferences.makeCurrentSaved("Tools")
                preferences.save()
        else:
            from chimera import replyobj
            replyobj.error("Tools directory \"%s\" " "already loaded\n" % path)
Exemple #14
0
	def addDirectory(self, path, savePreferences=False):
		"Add a directory to preferences and load extension from it"

		if path not in self.directories:
			self.directories.append(path)
			if self.loadDirectory(path) and self.settingsGrid:
				self.remakeSettings()
			if savePreferences:
				preferences.makeCurrentSaved("Tools")
				preferences.save()
		else:
			from chimera import replyobj
			replyobj.error("Tools directory \"%s\" "
					"already loaded\n" % path)
Exemple #15
0
 def _colChangeCB(self, colName):
     gp = self.groupPanel
     colInfo = self.columnInfo[colName]
     if colInfo['variable'].get() == 0:
         # don't show column
         if gp.shownColumns.count(1) == 1:
             # can't hide _all_ columns
             colInfo['variable'].set(1)
             raise ValueError, "Can't hide all columns!"
         gp.shownColumns[_columnNames.index(colName)] = 0
         self.prefs['shownColumns'][colName] = 0
     else:
         # show column
         gp.shownColumns[_columnNames.index(colName)] = 1
         self.prefs['shownColumns'][colName] = 1
     preferences.save()
     gp._buildTable()
	def _colChangeCB(self, colName):
		gp = self.groupPanel
		colInfo = self.columnInfo[colName]
		if colInfo['variable'].get() == 0:
			# don't show column
			if gp.shownColumns.count(1) == 1:
				# can't hide _all_ columns
				colInfo['variable'].set(1)
				raise ValueError, "Can't hide all columns!"
			gp.shownColumns[_columnNames.index(colName)] = 0
			self.prefs['shownColumns'][colName] = 0
		else:
			# show column
			gp.shownColumns[_columnNames.index(colName)] = 1
			self.prefs['shownColumns'][colName] = 1
		preferences.save()
		gp._buildTable()
Exemple #17
0
def assert_preferences():
    insert_defaults = False
    try:
        binary, dat = get_preferences()
    except KeyError:
        insert_defaults = True
    else:
        if not binary or not dat:
            insert_defaults = True
    if insert_defaults:
        binary = find_executable('nciplot') or ''
        dat = ''
        if 'NCIPLOT_HOME' in os.environ:
            dat = os.path.join(os.environ['NCIPLOT_HOME'], 'dat')
        preferences.set('tangram_nciplot', 'nciplot_bin', binary)
        preferences.set('tangram_nciplot', 'nciplot_dat', dat)
        preferences.save()
    return binary, dat
	def savePrefs(self):
		group = self.options[0][1]
		optList = group[1][1]
		execFile = optList[0].var.get()
		needSave = False
		if execFile and execFile != prefs["executable"]:
			prefs["executable"] = execFile
			needSave = True
		radiiFile = optList[1].var.get()
		if radiiFile and radiiFile != prefs["radii"]:
			prefs["radii"] = radiiFile
			needSave = True
		chargesFile = optList[2].var.get()
		if chargesFile and chargesFile != prefs["charges"]:
			prefs["charges"] = chargesFile
			needSave = True
		if needSave:
			preferences.save()
 def savePrefs(self):
     group = self.options[0][1]
     optList = group[1][1]
     execFile = optList[0].var.get()
     needSave = False
     if execFile and execFile != prefs["executable"]:
         prefs["executable"] = execFile
         needSave = True
     radiiFile = optList[1].var.get()
     if radiiFile and radiiFile != prefs["radii"]:
         prefs["radii"] = radiiFile
         needSave = True
     chargesFile = optList[2].var.get()
     if chargesFile and chargesFile != prefs["charges"]:
         prefs["charges"] = chargesFile
         needSave = True
     if needSave:
         preferences.save()
Exemple #20
0
 def saveui_save(self, name):
     from chimera import preferences
     addScaling(name, self._makeScalingValues())
     preferences.save()
     self.dialog.status("Setting \"%s\" saved" % name)
     return True
Exemple #21
0
	def saveui_delete(self, name):
		from chimera import preferences
		removeScaling(name)
		preferences.save()
		self.dialog.status("Setting \"%s\" deleted" % name)
		return True
Exemple #22
0
def removeStyle(name):
	del userStyles[name]
	del prefStyles[name]
	from chimera import preferences
	preferences.save()
	chimera.triggers.activateTrigger(TRIGGER_SLAB_STYLES, name)
class XSectionEditor:
    def __init__(self, parent, dialog):

        self.points = []
        self.divisions = 10
        self.closed = 0
        self.smoothacross = 0
        self.smoothalong = 0
        self.mapped = 0
        self.dialog = dialog
        self.currentXS = None

        from chimera.preferences import saveui
        self.saveui = saveui.SaveUI(parent, self)

        import Tkinter, Pmw
        f = Tkinter.Frame(parent)
        f.pack(expand=Tkinter.TRUE, fill=Tkinter.BOTH)
        self.opt = Pmw.RadioSelect(f,
                                   buttontype="checkbutton",
                                   command=self._optChange,
                                   orient="vertical",
                                   labelpos="n",
                                   label_text="Display Options",
                                   pady=0,
                                   hull_borderwidth=2,
                                   hull_relief=Tkinter.RIDGE)
        self.opt.pack(side=Tkinter.TOP)
        self.opt.add("closed", text="Closed cross section")
        self.opt.add("smoothacross", text="Smooth across ribbon")
        self.opt.add("smoothalong", text="Smooth along ribbon")
        t = Tkinter.Label(f,
                          text="Click to add point; "
                          "BackSpace to delete point.",
                          fg="gray40")
        t.pack(side=Tkinter.TOP)
        t = Tkinter.Label(f,
                          text="Changing grid division "
                          "erases drawn cross section!",
                          fg="gray40")
        t.pack(side=Tkinter.BOTTOM)
        subf = Tkinter.Frame(f)
        subf.pack(side=Tkinter.BOTTOM)
        self.div = Pmw.Counter(subf,
                               labelpos="w",
                               label_text="Number of grid divisions:",
                               entry_width=3,
                               entryfield_modifiedcommand=self._setDivisions,
                               entryfield_value=self.divisions,
                               entryfield_validate={
                                   "validator": "integer",
                                   "minstrict": 0,
                                   "maxstrict": 0,
                                   "min": 4,
                                   "max": 100
                               })
        self.div.pack(side=Tkinter.LEFT)
        self.divEntryfield = self.div.component("entryfield")
        self.erase = Tkinter.Button(subf,
                                    text="Erase All",
                                    command=self._erase)
        self.erase.pack(side=Tkinter.LEFT)
        self._makeDrawingSurface(f)

        item = self.saveui_defaultItem()
        if item:
            self.saveui_select(item)

    def _makeDrawingSurface(self, parent):
        import Tkinter
        f = Tkinter.Frame(parent, bd=2, relief=Tkinter.RIDGE)
        f.pack(expand=1, fill=Tkinter.BOTH)
        self.canvas = Tkinter.Canvas(f,
                                     bd=0,
                                     highlightthickness=0,
                                     bg="white",
                                     takefocus="1",
                                     width=200,
                                     height=200)
        self.grid = []
        self.outline = None
        self.curPoint = None
        self.canvasWidth = 0
        self.canvasHeight = 0
        self.drawingSize = 0
        self.drawingXStart = 0
        self.drawingXEnd = 0
        self.drawingYStart = 0
        self.drawingYEnd = 0
        self.canvas.bind("<Configure>", self._configureCanvas)
        self.canvas.bind("<ButtonRelease>", self._addPoint)
        self.canvas.bind("<BackSpace>", self._deletePoint)
        self.canvas.bind("<Delete>", self._deletePoint)
        self.canvas.bind("<Enter>", self._canvasEnter)
        self.canvas.bind("<Motion>", self._movePoint)
        self.canvas.pack(expand=1, fill=Tkinter.BOTH)

    def _optChange(self, option, onoff):
        self.currentXS = None
        setattr(self, option, onoff)
        if option == "closed":
            self._remakeOutline()

    def _setDivisions(self):
        self.currentXS = None
        if not self.divEntryfield.valid():
            return
        d = int(self.divEntryfield.get())
        if d == self.divisions:
            return
        self.divisions = d
        if self.outline:
            self.outline.delete()
            self.outline = None
        self.points = []
        self._configureCanvas()

    def _configureCanvas(self, event=None):
        import Canvas
        if event is not None:
            self.mapped = True
            if (event.width == self.canvasWidth
                    and event.height == self.canvasHeight):
                return
            self.canvasWidth = event.width
            self.canvasHeight = event.height
        # Leave some space for user to draw right
        # to the edge of canvas
        self.drawingSize = min(self.canvasWidth, self.canvasHeight) - 10
        self.drawingXStart = (self.canvasWidth - self.drawingSize) / 2
        self.drawingXEnd = self.drawingXStart + self.drawingSize
        self.drawingYStart = (self.canvasHeight - self.drawingSize) / 2
        self.drawingYEnd = self.drawingYStart + self.drawingSize
        self.scale = float(self.drawingSize) / self.divisions

        # Remake grid lines
        for line in self.grid:
            line.delete()
        self.grid = []
        for i in range(self.divisions + 1):
            line = Canvas.Line(self.canvas, [
                self._mapToCanvas((i, 0)),
                self._mapToCanvas((i, self.divisions))
            ],
                               fill="gray")
            self.grid.append(line)
            line = Canvas.Line(self.canvas, [
                self._mapToCanvas((0, i)),
                self._mapToCanvas((self.divisions, i))
            ],
                               fill="gray")
            self.grid.append(line)
        self._remakeOutline()
        self.canvas.focus_set()

    def _remakeOutline(self):
        if not self.mapped:
            return
        import Canvas
        if self.outline:
            self.outline.delete()
        if not self.points:
            self.outline = None
        elif len(self.points) < 2:
            pt = self._mapToCanvas(self.points[0])
            ul = (pt[0] - 1, pt[1] - 1)
            lr = (pt[0] + 1, pt[1] + 1)
            self.outline = Canvas.Rectangle(self.canvas, [ul, lr],
                                            fill="black")
        else:
            coords = []
            for pt in self.points:
                coords.append(self._mapToCanvas(pt))
            if "closed" in self.opt.getvalue():
                if self.points[0] != self.points[-1]:
                    coords.append(self._mapToCanvas(self.points[0]))
                else:
                    del self.points[-1]
            self.outline = Canvas.Line(self.canvas,
                                       coords,
                                       fill="black",
                                       width=3)

    def _addPoint(self, event):
        self.currentXS = None
        pt = self._mapFromCanvas(event)
        if not self.points or self.points[-1] != pt:
            self.points.append(pt)
        self._remakeOutline()

    def _deletePoint(self, event):
        self.currentXS = None
        if not self.points:
            return
        del self.points[-1]
        self._remakeOutline()

    def _movePoint(self, event):
        import Canvas
        pt = self._mapToCanvas(self._mapFromCanvas(event))
        if self.curPoint:
            self.curPoint.delete()
        ul = (pt[0] - 1, pt[1] - 1)
        lr = (pt[0] + 1, pt[1] + 1)
        self.curPoint = Canvas.Rectangle(self.canvas, [ul, lr], outline="red")

    def _mapFromCanvas(self, event):
        if event.x < self.drawingXStart:
            x = 0
        elif event.x >= self.drawingXEnd:
            x = self.divisions
        else:
            x = int(round((event.x - self.drawingXStart) / self.scale))
        if event.y < self.drawingYStart:
            y = 0
        elif event.y >= self.drawingYEnd:
            y = self.divisions
        else:
            y = int(round((event.y - self.drawingYStart) / self.scale))
        return x, y

    def _mapToCanvas(self, pt):
        x = self.drawingXStart + pt[0] * self.scale
        y = self.drawingYStart + pt[1] * self.scale
        return x, y

    def _canvasEnter(self, event):
        self.canvas.focus_set()

    def _erase(self):
        self.points = []
        self._remakeOutline()

    def _showXSection(self, name):
        xs = findXSection(name)
        values = []
        self.smoothacross = xs.sw
        if xs.sw:
            values.append("smoothacross")
        self.smoothalong = xs.sl
        if xs.sl:
            values.append("smoothalong")
        self.closed = xs.closed
        if xs.closed:
            values.append("closed")
        self.opt.setvalue(values)
        self.divEntryfield.setvalue(str(xs.grid))
        self.points = xs.points
        self._remakeOutline()
        self.currentXS = xs

    def Apply(self, restrict):
        if self.currentXS:
            xs = self.currentXS
        else:
            xs = XS(None, self.points, self.smoothacross, self.smoothalong,
                    self.closed, self.divisions)
        if restrict:
            from chimera import selection
            rList = selection.currentResidues()
        else:
            rList = []
        if rList:
            for r in rList:
                xs.setResidue(r)
        else:
            for m in chimera.openModels.list(modelTypes=[chimera.Molecule]):
                for r in m.residues:
                    xs.setResidue(r)

    # SaveUI callback functions
    def saveui_label(self):
        return "Ribbon Cross Section"

    def saveui_presetItems(self):
        return systemXS.keys()

    def saveui_userItems(self):
        return userXS.keys()

    def saveui_defaultItem(self):
        try:
            return userXS.keys()[0]
        except IndexError:
            return systemXS.keys()[0]

    def saveui_select(self, name):
        self._showXSection(name)

    def saveui_save(self, name):
        if name in Reserved:
            from chimera import replyobj
            replyobj.error("%s is a reserved name.  "
                           "Please choose a different name." % name)
            return False
        try:
            checkXSection(self.closed, self.points)
        except ValueError, s:
            from chimera import replyobj
            replyobj.error(s)
            return False
        from chimera import preferences
        addXSection(name, self.points, self.smoothacross, self.smoothalong,
                    self.closed, self.divisions)
        preferences.save()
        redisplayMenu()
        self.dialog.status("Setting \"%s\" saved" % name)
        return True
Exemple #24
0
	def saveui_save(self, name):
		from chimera import preferences
		addScaling(name, self._makeScalingValues())
		preferences.save()
		self.dialog.status("Setting \"%s\" saved" % name)
		return True
Exemple #25
0
 def saveui_delete(self, name):
     from chimera import preferences
     removeScaling(name)
     preferences.save()
     self.dialog.status("Setting \"%s\" deleted" % name)
     return True