コード例 #1
0
    def set_color_count(self, n):

        if n == self.n:
            return

        if n > len(self.colorwells):
            # Add more color buttons
            for c in range(len(self.colorwells), n):
                from CGLtk.color import ColorWell
                cw = ColorWell.ColorWell(self.frame)
                cw.grid(row=2 * (c / 5), column=c % 5)
                self.colorwells.append(cw)
                from CGLtk import Hybrid
                e = Hybrid.Entry(self.frame, '', 5, '')
                e.frame.grid(row=2 * (c / 5) + 1, column=c % 5)
                e.entry.bind('<KeyPress-Return>', self.colormap_changed_cb)
                self.entry_fields.append(e)

        # Map additional colorwells
        for c in range(self.n, n):
            self.colorwells[c].grid()
            self.entry_fields[c].frame.grid()

        # Unmap extra colorwells
        for c in range(n, self.n):
            self.colorwells[c].grid_remove()
            self.entry_fields[c].frame.grid_remove()

        self.n = n
コード例 #2
0
def parse_color(fields, name):

    if len(fields) == 0:
        raise syn, 'Missing %s value' % name

    # Color from color dialog
    if fields[0] in ('colorpanel', 'fromeditor', 'editor'):
        from CGLtk.color import ColorWell
        if not ColorWell._colorPanel:
            from chimera import dialogs
            dialogs.display("color editor")
            raise syn, 'Choose color in panel first'
        return ColorWell.colorPanel().rgba

    # Chimera color defined with colordef
    from chimera import Color
    c = Color.lookup(fields[0])
    if c:
        return c.rgba()

    try:
        # Tk color name.
        from chimera.tkgui import app
        color = [c / 65535.0 for c in app.winfo_rgb(fields[0])]
    except:
        # Comma separated list of rgb or rgba float values.
        color = parse_values(fields, 'color', float, (3, 4))

    return color
コード例 #3
0
def parse_color(fields, name):

    if len(fields) == 0:
        raise syn, 'Missing %s value' % name

    # Color from color dialog
    if fields[0] in ('colorpanel', 'fromeditor', 'editor'):
        from CGLtk.color import ColorWell
        if not ColorWell._colorPanel:
            from chimera import dialogs
            dialogs.display("color editor")
            raise syn, 'Choose color in panel first'
        return ColorWell.colorPanel().rgba

    # Chimera color defined with colordef
    from chimera import Color
    c = Color.lookup(fields[0])
    if c:
        return c.rgba()

    try:
        # Tk color name.
        from chimera.tkgui import app
        color = [c/65535.0 for c in app.winfo_rgb(fields[0])]
    except:
        # Comma separated list of rgb or rgba float values.
        color = parse_values(fields, 'color', float, (3,4))

    return color
コード例 #4
0
    def fillInUI(self, parent):

        self.default_color = (0, 0, 0.8, 1)

        t = parent.winfo_toplevel()
        self.toplevel_widget = t
        t.withdraw()

        parent.columnconfigure(0, weight=1)
        row = 0

        import Tkinter
        from CGLtk import Hybrid

        mmf = Tkinter.Frame(parent)
        mmf.grid(row=row, column=0, sticky='w')
        row = row + 1

        mb = Hybrid.Option_Menu(mmf, 'Use mouse ', 'button 1', 'button 2',
                                'button 3', 'ctrl button 1', 'ctrl button 2',
                                'ctrl button 3')
        mb.variable.set('ctrl button 3')
        mb.frame.grid(row=0, column=0, sticky='w')
        mb.add_callback(self.bind_mouse_button_cb)
        self.mouse_button = mb

        mbl = Tkinter.Label(mmf, text=' to choose blobs')
        mbl.grid(row=0, column=1, sticky='w')

        crf = Tkinter.Frame(parent)
        crf.grid(row=row, column=0, sticky='ew')
        crf.columnconfigure(1, weight=1)
        row = row + 1

        cl = Tkinter.Label(crf, text='Color blob ')
        cl.grid(row=0, column=0, sticky='w')

        from CGLtk.color import ColorWell
        sc = ColorWell.ColorWell(crf, color=self.default_color)
        sc.grid(row=0, column=1, sticky='w')
        self.blob_color = sc

        msg = Tkinter.Label(parent, anchor='w', justify='left')
        msg.grid(row=row, column=0, sticky='ew')
        row = row + 1
        self.message_label = msg

        callbacks = (self.mouse_down_cb, self.mouse_drag_cb, self.mouse_up_cb)
        icon = self.mouse_mode_icon('pickblob.gif')
        from chimera import mousemodes
        mousemodes.addFunction('pick blobs', callbacks, icon)

        self.bind_mouse_button_cb()
コード例 #5
0
    def fillInUI(self, parent):

        self.toplevel_widget = parent.winfo_toplevel()
        self.toplevel_widget.withdraw()

        row = 0

        import Tkinter
        from CGLtk import Hybrid

        from surfcaps import capper
        c = capper()

        cp = Hybrid.Checkbutton(parent, 'Cap surfaces at clip planes',
                                c.caps_shown())
        cp.button.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.show_caps = cp.variable
        self.show_caps.add_callback(self.settings_changed_cb)

        ccf = Tkinter.Frame(parent)
        ccf.grid(row=row, column=0, sticky='w')
        row = row + 1

        ucc = Hybrid.Checkbutton(ccf, 'Use cap color ',
                                 not c.cap_color is None)
        ucc.button.grid(row=0, column=0, sticky='w')
        self.use_cap_color = ucc.variable
        self.use_cap_color.add_callback(self.settings_changed_cb)

        from CGLtk.color import ColorWell
        cc = ColorWell.ColorWell(ccf, callback=self.settings_changed_cb)
        self.cap_color = cc
        rgba = c.cap_color
        if rgba is None:
            rgba = (1, 1, 1, 1)
        cc.showColor(rgba, doCallback=0)
        cc.grid(row=0, column=1, sticky='w')

        cs = Hybrid.Radiobutton_Row(parent, 'Cap style: ', ('solid', 'mesh'),
                                    self.settings_changed_cb)
        cs.frame.grid(row=row, column=0, sticky='w')
        if c.mesh_style: style = 'mesh'
        else: style = 'solid'
        cs.variable.set(style, invoke_callbacks=False)
        row = row + 1
        self.cap_style = cs.variable

        sf = Hybrid.Entry(parent, 'Mesh subdivision factor', 4,
                          '%g' % c.subdivision_factor)
        sf.frame.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.subdivision_factor = sf.variable
        sf.entry.bind('<KeyPress-Return>', self.settings_changed_cb)

        cd = Hybrid.Entry(parent, 'Cap to clip plane distance', 5,
                          '%.3g' % c.cap_offset)
        cd.frame.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.cap_offset = cd.variable
        cd.entry.bind('<KeyPress-Return>', self.settings_changed_cb)

        import SimpleSession
        chimera.triggers.addHandler(SimpleSession.SAVE_SESSION,
                                    self.save_session_cb, None)

        chimera.replyobj.status("Capping surfaces might reduce responsiveness",
                                color="orange red")
コード例 #6
0
    def fillInUI(self, parent):

        self.phantom_device = None
        self.cursor_model = None
        self.phantom_handler = None
        self.gradient_force = None
        self.phantom_button_down = 0
        self.last_phantom_transform = None
        self.last_roll = None
        self.key_callback_registered = None
        self.mode = 'cursor'  # 'cursor', 'move models', 'zoom',
        # 'contour level', 'move marker'
        self.command_list_shown = False

        import Tkinter
        from CGLtk import Hybrid

        row = 0

        po = Hybrid.Checkbutton_Row(parent, 'Enable',
                                    ('cursor', 'forces', 'key commands'))
        po.frame.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.phantom_on, self.force_field, self.commands = \
            [c.variable for c in po.checkbuttons]
        self.phantom_on.add_callback(self.settings_changed_cb)
        self.force_field.add_callback(self.settings_changed_cb)
        self.commands.add_callback(self.toggle_commands_cb)

        cf = Tkinter.Frame(parent)
        cf.grid(row=row, column=0, sticky='w')
        row = row + 1

        cs = Hybrid.Option_Menu(cf, 'Cursor shape ', 'cross', 'jack', 'sphere',
                                'volume crosshair')
        cs.frame.grid(row=0, column=0, sticky='nw')
        row = row + 1
        cs.variable.set('jack')
        cs.add_callback(self.settings_changed_cb)
        self.cursor_shape = cs.variable

        from VolumeViewer import active_volume
        v = active_volume()
        if v:
            csize = '%.3g' % (10 * max(v.data.step))
        else:
            csize = '1'
        cs = Hybrid.Entry(cf, ' size ', 5, csize)
        cs.frame.grid(row=0, column=1, sticky='w')
        cs.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.cursor_size = cs.variable

        cl = Tkinter.Label(cf, text=' color ')
        cl.grid(row=0, column=2, sticky='w')

        from CGLtk.color import ColorWell
        cc = ColorWell.ColorWell(cf, callback=self.settings_changed_cb)
        self.cursor_color = cc
        cc.showColor((0, 0.5, 1), doCallback=0)
        cc.grid(row=0, column=3, sticky='w')

        sp = Hybrid.Popup_Panel(parent)
        spf = sp.frame
        spf.grid(row=row, column=0, sticky='news')
        spf.grid_remove()
        spf.columnconfigure(0, weight=1)
        self.settings_panel = sp.panel_shown_variable
        row += 1
        srow = 0

        cb = sp.make_close_button(spf)
        cb.grid(row=srow, column=1, sticky='e')

        pr = Hybrid.Entry(spf, 'Phantom physical range (mm) ', 5, '200')
        pr.frame.grid(row=srow, column=0, sticky='w')
        srow += 1
        pr.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.phantom_range = pr.variable

        mf = Hybrid.Entry(spf, 'Maximum force (lbs) ', 5, '.4')
        mf.frame.grid(row=srow, column=0, sticky='w')
        srow += 1
        mf.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.maximum_force = mf.variable

        af = Hybrid.Checkbutton(spf, 'Auto-adjust force constant', 1)
        af.button.grid(row=srow, column=0, sticky='w')
        srow += 1
        self.auto_adjust_force_constant = af.variable
        self.force_field.add_callback(self.settings_changed_cb)

        fc = Hybrid.Logarithmic_Scale(spf, 'Force constant ', .0001, 100, 1,
                                      '%.2g')
        fc.frame.grid(row=srow, column=0, sticky='ew')
        srow += 1
        fc.set_value(1)
        fc.callback(self.force_constant_changed_cb)
        fc.entry.bind('<KeyPress-Return>', self.force_constant_changed_cb)
        self.force_constant = fc

        vf = Tkinter.Frame(spf)
        vf.grid(row=srow, column=0, sticky='ew')
        srow += 1

        self.label_row(vf, 0, ('', 'x', 'y', 'z'))
        pl = self.label_row(vf, 1, ('Phantom position', '', '', ''))
        self.phantom_position_labels = pl[1:]
        cpl = self.label_row(vf, 2, ('Chimera position', '', '', ''))
        self.chimera_position_labels = cpl[1:]
        vpl = self.label_row(vf, 3, ('Volume position', '', '', ''))
        self.volume_position_labels = vpl[1:]
        vil = self.label_row(vf, 4, ('Volume index', '', '', ''))
        self.volume_index_labels = vil[1:]
        gl = self.label_row(vf, 5, ('Gradient', '', '', ''))
        self.gradient_labels = gl[1:]
        fl = self.label_row(vf, 6, ('Force', '', '', ''))
        self.force_labels = fl[1:]
        dvl = self.label_row(vf, 7, ('Data value', ''))
        self.data_value_label = dvl[1]
コード例 #7
0
  def fillInUI(self, parent):

    self.default_radius = 1
    self.default_color = (1,0.6,0.8,.5)      # Pink eraser
    
    t = parent.winfo_toplevel()
    self.toplevel_widget = t
    t.withdraw()

    parent.columnconfigure(0, weight = 1)
    row = 0

    import Tkinter
    from CGLtk import Hybrid

    sh = Hybrid.Checkbutton(parent, 'Show volume-erasing sphere ', True)
    sh.button.grid(row = row, column = 0, sticky = 'w')
    row = row + 1
    self.show_sphere_var = sh.variable
    sh.callback(self.show_sphere_cb)

    crf = Tkinter.Frame(parent)
    crf.grid(row = row, column = 0, sticky = 'ew')
    crf.columnconfigure(2, weight = 1)
    row = row + 1

    cl = Tkinter.Label(crf, text = 'Color')
    cl.grid(row = 0, column = 0, sticky = 'w')
    
    from CGLtk.color import ColorWell
    sc = ColorWell.ColorWell(crf, color = self.default_color,
                             callback = self.change_sphere_color_cb)
    sc.grid(row = 0, column = 1, sticky = 'w')
    self.sphere_color = sc

    rs = Hybrid.Scale(crf, ' Radius ', 0, 30, .1, 2)
    rs.frame.grid(row = 0, column = 2, sticky = 'ew')
    row = row + 1
    rs.callback(self.change_radius_cb)
    rs.entry.bind('<KeyPress-Return>', self.change_radius_cb)
    self.sphere_radius_scale = rs
    
    mmf = Tkinter.Frame(parent)
    mmf.grid(row = row, column = 0, sticky = 'w')
    row = row + 1

    mb = Hybrid.Option_Menu(mmf, 'Use mouse ',
                            'button 1', 'button 2', 'button 3',
                            'ctrl button 1', 'ctrl button 2', 'ctrl button 3')
    mb.variable.set('button 2')
    mb.frame.grid(row = 0, column = 0, sticky = 'w')
    mb.add_callback(self.bind_mouse_button_cb)
    self.mouse_button = mb

    mbl = Tkinter.Label(mmf, text = ' to move sphere')
    mbl.grid(row = 0, column = 1, sticky = 'w')

    ka = Tkinter.Label(parent, text = 'Erase using keyboard accelerator "es".')
    ka.grid(row = row, column = 0, sticky = 'w')
    row = row + 1

    from Accelerators import add_accelerator
    add_accelerator('es', 'Erase volume data inside sphere', self.Erase)
    add_accelerator('eo', 'Erase volume data outside sphere',
                    self.erase_outside_sphere)
コード例 #8
0
    def fillInUI(self, parent):

        self.model = None
        self.position_handler = None
        self.screen_position = (-.6, -.6)
        self.last_xyz_position = None
        self.frozen_model_list = []

        self.toplevel_widget = parent.winfo_toplevel()
        self.toplevel_widget.withdraw()

        row = 0

        import Tkinter
        from CGLtk import Hybrid

        sb = Hybrid.Checkbutton(parent, 'Show scale bar', 0)
        sb.button.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.show_scalebar = sb.variable
        self.show_scalebar.add_callback(self.settings_changed_cb)

        bf = Tkinter.Frame(parent)
        bf.grid(row=row, column=0, sticky='w')
        row = row + 1

        le = Hybrid.Entry(bf, 'Length ', 5, '10')
        le.frame.grid(row=0, column=0, sticky='w')
        le.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.bar_length = le.variable

        te = Hybrid.Entry(bf, ' Thickness', 3, '1')
        te.frame.grid(row=0, column=1, sticky='w')
        te.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.bar_thickness = te.variable

        cl = Tkinter.Label(bf, text=' Color ')
        cl.grid(row=0, column=2, sticky='w')

        from CGLtk.color import ColorWell
        bc = ColorWell.ColorWell(bf, callback=self.settings_changed_cb)
        self.bar_color = bc
        bc.showColor((1, 1, 1), doCallback=0)
        bc.grid(row=0, column=3, sticky='w')

        lf = Tkinter.Frame(parent)
        lf.grid(row=row, column=0, sticky='w')
        row = row + 1

        # \u00C5 is the Angstrom symbol
        lb = Hybrid.Entry(lf, 'Label ', 5, u'# \u00C5')
        lb.frame.grid(row=0, column=0, sticky='w')
        lb.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.label_text = lb.variable

        xo = Hybrid.Entry(lf, ' Offset ', 3, '')
        xo.frame.grid(row=0, column=1, sticky='w')
        xo.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.label_x_offset = xo.variable

        yo = Hybrid.Entry(lf, '', 3, '')
        yo.frame.grid(row=0, column=2, sticky='w')
        yo.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.label_y_offset = yo.variable

        ct = Tkinter.Label(lf, text=' Color ')
        ct.grid(row=0, column=3, sticky='w')

        from CGLtk.color import ColorWell
        lc = ColorWell.ColorWell(lf, callback=self.settings_changed_cb)
        self.label_color = lc
        lc.showColor((1, 1, 1), doCallback=0)
        lc.grid(row=0, column=4, sticky='w')

        ore = Hybrid.Radiobutton_Row(parent, 'Orientation ',
                                     ('horizontal', 'vertical'),
                                     self.orientation_cb)
        ore.frame.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.orientation = ore.variable
        self.orientation.set('horizontal', invoke_callbacks=0)

        pf = Tkinter.Frame(parent)
        pf.grid(row=row, column=0, sticky='w')
        row = row + 1

        pp = Hybrid.Checkbutton(pf, 'Preserve screen position', 1)
        pp.button.grid(row=0, column=0, sticky='w')
        self.preserve_position = pp.variable
        self.preserve_position.add_callback(self.settings_changed_cb)

        xp = Hybrid.Entry(pf, '', 5, '')
        xp.frame.grid(row=0, column=1, sticky='w')
        xp.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.screen_x_position = xp.variable

        yp = Hybrid.Entry(pf, '', 5, '')
        yp.frame.grid(row=0, column=2, sticky='w')
        yp.entry.bind('<KeyPress-Return>', self.settings_changed_cb)
        self.screen_y_position = yp.variable

        self.set_screen_position_entries()

        mb = Hybrid.Checkbutton(parent,
                                'Move scale bar with data models locked', 0)
        mb.button.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.move_scalebar = mb.variable
        self.move_scalebar.add_callback(self.move_scalebar_cb)

        import SimpleSession
        chimera.triggers.addHandler(SimpleSession.SAVE_SESSION,
                                    self.save_session_cb, None)
        chimera.triggers.addHandler(chimera.CLOSE_SESSION,
                                    self.close_session_cb, None)
コード例 #9
0
    def fillInUI(self, parent):

        self.default_radius = 100
        self.surface_model = None
        self.surface_piece = None

        self.toplevel_widget = parent.winfo_toplevel()
        self.toplevel_widget.withdraw()
        parent.columnconfigure(0, weight=1)

        row = 0

        import Tkinter
        from CGLtk import Hybrid

        # Radius
        rs = Hybrid.Scale(parent, 'Radius ', 1, 1000, 0.01,
                          self.default_radius)
        rs.frame.grid(row=row, column=0, sticky='ew')
        row = row + 1
        rs.callback(self.radius_changed_cb)
        rs.entry.bind('<KeyPress-Return>', self.radius_changed_cb)
        self.radius = rs

        # Interpolation factor between icosahedron and sphere
        sf = Hybrid.Scale(parent, 'Sphere factor ', 0, 1, .01, 0)
        sf.frame.grid(row=row, column=0, sticky='ew')
        row = row + 1
        sf.callback(self.sphere_factor_changed_cb)
        sf.entry.bind('<KeyPress-Return>', self.sphere_factor_changed_cb)
        self.sphere_factor = sf

        # Orientation menu
        self.orient_222 = 'xyz 2-fold axes'
        self.orient_222r = 'xyz 2-fold axes, alt'
        self.orient_2n3 = 'x 2-fold, z 3-fold'
        self.orient_2n3r = 'x 2-fold, z 3-fold, alt'
        self.orient_2n5 = 'x 2-fold, z 5-fold'
        self.orient_2n5r = 'x 2-fold, z 5-fold, alt'
        self.orient_n25 = 'y 2-fold, z 5-fold'
        self.orient_n25r = 'y 2-fold, z 5-fold, alt'
        io = Hybrid.Option_Menu(parent, 'Orientation ', self.orient_222,
                                self.orient_222r, self.orient_2n3,
                                self.orient_2n3r, self.orient_2n5,
                                self.orient_2n5r, self.orient_n25,
                                self.orient_n25r)
        io.frame.grid(row=row, column=0, sticky='w')
        io.add_callback(self.show_cb)
        row = row + 1
        self.orientation = io.variable

        # Subdivision factor
        sf = Tkinter.Frame(parent)
        sf.grid(row=row, column=0, sticky='w')
        row = row + 1

        sb = Hybrid.Entry(sf, 'Subdivision factor ', 5, '1')
        sb.frame.grid(row=0, column=0, sticky='w')
        self.subdivision_factor = sb.variable
        sb.entry.bind('<KeyPress-Return>', self.show_cb)

        sp = Tkinter.Label(sf, text='')
        sp.grid(row=0, column=1, sticky='w')
        self.subdivision_spacing = sp

        # Surface style: filled, mesh
        st = Hybrid.Radiobutton_Row(parent, 'Surface style: ',
                                    ('solid', 'mesh'), self.style_changed_cb)
        st.frame.grid(row=row, column=0, sticky='w')
        st.variable.set('mesh', invoke_callbacks=False)
        row = row + 1
        self.surface_style = st.variable

        # Color
        cf = Tkinter.Frame(parent)
        cf.grid(row=row, column=0, sticky='w')
        row = row + 1

        cl = Tkinter.Label(cf, text='Color')
        cl.grid(row=0, column=0, sticky='w')

        initial_color = (.7, .7, .7, 1)
        from CGLtk.color import ColorWell
        cw = ColorWell.ColorWell(cf, callback=self.color_changed_cb)
        cw.showColor(initial_color)
        cw.grid(row=0, column=1, sticky='w')
        self.color = cw

        #
        # Specify a label width so dialog is not resized for long messages.
        #
        msg = Tkinter.Label(parent, width=40, anchor='w', justify='left')
        msg.grid(row=row, column=0, sticky='ew')
        row = row + 1
        self.message_label = msg

        import SimpleSession
        chimera.triggers.addHandler(SimpleSession.SAVE_SESSION,
                                    self.save_session_cb, None)
コード例 #10
0
    def fillInUI(self, parent):

        self.toplevel_widget = parent.winfo_toplevel()
        self.toplevel_widget.withdraw()

        parent.columnconfigure(0, weight=1)
        row = 0

        import Tkinter
        from CGLtk import Hybrid
        from chimera import widgets

        from SurfaceColor import colorable_surface_models
        sm = widgets.ModelOptionMenu(parent,
                                     labelpos='w',
                                     label_text='Color surface ',
                                     listFunc=colorable_surface_models,
                                     command=self.surface_menu_cb)
        sm.grid(row=row, column=0, sticky='w')
        self.surface_menu = sm
        row = row + 1

        from SurfaceColor import coloring_methods
        methods = [cm.menu_name for cm in coloring_methods]
        csm = Hybrid.Option_Menu(parent, 'by ', *methods)
        csm.frame.grid(row=row, column=0, sticky='w')
        self.color_source_menu = csm.variable
        csm.add_callback(self.color_source_changed_cb)
        row = row + 1

        from VolumeViewer import Volume_Menu
        vm = Volume_Menu(parent, 'file', open_button='browse...')
        vm.frame.grid(row=row, column=0, sticky='w')
        self.volume_menu = vm
        row += 1

        oaf = Tkinter.Frame(parent)
        oaf.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.origin_axis_frame = oaf

        oe = Hybrid.Entry(oaf, 'origin ', 8, '0 0 0')
        oe.frame.grid(row=0, column=0, sticky='w')
        self.origin_variable = oe.variable
        oe.entry.bind('<KeyPress-Return>', self.settings_changed_cb)

        cb = Tkinter.Button(oaf, text='center', command=self.set_center_cb)
        cb.grid(row=0, column=1, sticky='w')

        ae = Hybrid.Entry(oaf, 'axis ', 8, '0 0 1')
        ae.frame.grid(row=0, column=2, sticky='w')
        self.axis_frame = ae.frame
        self.axis_variable = ae.variable
        ae.entry.bind('<KeyPress-Return>', self.settings_changed_cb)

        cg = Colorwell_GUI(parent, 5, self.settings_changed_cb)
        cg.set_color_palette('rainbow')
        self.colormap_gui = cg
        self.colormap_gui.frame.grid(row=row, column=0, sticky='w')
        row = row + 1

        op = Hybrid.Popup_Panel(parent)
        opf = op.frame
        opf.grid(row=row, column=0, sticky='news')
        opf.grid_remove()
        opf.columnconfigure(0, weight=1)
        self.options_panel = op.panel_shown_variable
        row += 1
        orow = 0

        cb = op.make_close_button(opf)
        cb.grid(row=orow, column=1, sticky='ne')

        cf = Tkinter.Frame(opf)
        cf.grid(row=orow, column=0, sticky='w')
        orow += 1

        color_counts = ('2', '3', '5', '10', '15', '20')
        cc = Hybrid.Option_Menu(cf, 'Colors ', *color_counts)
        cc.frame.grid(row=0, column=0, sticky='w')
        self.color_count = cc.variable
        self.color_count.set('5')
        cc.add_callback(self.change_color_count_cb)

        cpat = ('Rainbow', 'Gray', 'Red-Blue', 'Cyan-Maroon')
        cp = Hybrid.Option_Menu(cf, 'Palette', *cpat)
        cp.frame.grid(row=0, column=1, sticky='w')
        self.palette = cp.variable
        cp.add_callback(self.change_color_palette_cb)

        rc = Tkinter.Button(cf, text='Reverse', command=self.reverse_colors_cb)
        rc.grid(row=0, column=2, sticky='w')

        ckb = Tkinter.Button(opf,
                             text="Create color key",
                             command=self.colormap_gui.color_key_cb)
        ckb.grid(row=orow, column=0, sticky='w')
        orow += 1

        dcf = Tkinter.Frame(opf)
        dcf.grid(row=orow, column=0, sticky='w')
        orow += 1

        db = Tkinter.Button(dcf,
                            text='Set',
                            command=self.show_default_colormap_values)
        db.grid(row=0, column=0, sticky='w')

        dt = Tkinter.Label(dcf, text=' full range of surface values')
        dt.grid(row=0, column=1, sticky='w')

        so = Hybrid.Entry(opf, 'Surface offset ', 5, '1.4')
        so.frame.grid(row=orow, column=0, sticky='w')
        self.surface_offset = so.variable
        self.surface_offset_frame = so.frame
        orow += 1
        so.entry.bind('<KeyPress-Return>', self.settings_changed_cb)

        ocf = Tkinter.Frame(opf)
        ocf.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.outside_color_frame = ocf

        ocl = Tkinter.Label(ocf, text='Color outside volume')
        ocl.grid(row=0, column=0, sticky='w')

        outside_color = (.5, .5, .5, 1)
        from CGLtk.color import ColorWell
        cw = ColorWell.ColorWell(ocf)
        cw.showColor(outside_color)
        cw.grid(row=0, column=1, sticky='w')
        self.outside_color = cw

        co = Hybrid.Checkbutton(opf, 'Only color sliced surface face', 0)
        co.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.color_caps_only = co.variable

        ppc = Hybrid.Checkbutton(opf, 'Per-pixel coloring', False)
        ppc.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.per_pixel_color = ppc.variable

        #
        # Specify a label width so dialog is not resized for long messages.
        #
        msg = Tkinter.Label(parent, width=40, anchor='w', justify='left')
        msg.grid(row=row, column=0, sticky='ew')
        row = row + 1
        self.message_label = msg

        # Show current coloring if one already exists from session restore.
        self.surface_menu_cb()

        # Show axix, origin, volume widgets if appropriate.
        self.color_source_changed_cb()
コード例 #11
0
    def fillInUI(self, parent):

        t = parent.winfo_toplevel()
        self.toplevel_widget = t
        t.withdraw()

        parent.columnconfigure(0, weight=1)
        row = 0

        import Tkinter
        from CGLtk import Hybrid

        rs = Hybrid.Scale(parent, ' Radius ', 0, 1000, .1, '')
        rs.frame.grid(row=row, column=0, sticky='ew')
        row = row + 1
        #    rs.callback(self.flatten_cb)
        rs.entry.bind('<KeyPress-Return>', self.flatten_cb)
        self.radius = rs.variable

        # Mesh
        mf = Tkinter.Frame(parent)
        mf.grid(row=row, column=0, sticky='w')
        row = row + 1

        sm = Hybrid.Checkbutton(mf, 'Show triangle mesh,', True)
        sm.button.grid(row=0, column=0, sticky='w')
        self.show_mesh = sm.variable
        self.show_mesh.add_callback(self.show_mesh_cb)

        cl = Tkinter.Label(mf, text='color')
        cl.grid(row=0, column=1, sticky='w')

        initial_color = (.5, .5, .5, 1)
        from CGLtk.color import ColorWell
        mc = ColorWell.ColorWell(mf, callback=self.mesh_color_changed_cb)
        mc.grid(row=0, column=2, sticky='w')
        self.mesh_color = mc
        mc.showColor(initial_color)

        mo = Hybrid.Entry(mf, ' z offset ', 5, '0')
        mo.frame.grid(row=0, column=3, sticky='w')
        self.mesh_offset = mo.variable
        mo.entry.bind('<KeyPress-Return>', self.mesh_offset_changed_cb)

        # Orthographic camera mode.
        import chimera
        c = chimera.viewer.camera
        oc = Hybrid.Checkbutton(parent, 'Use orthographic camera mode.',
                                c.ortho)
        oc.button.grid(row=row, column=0, sticky='w')
        row = row + 1
        self.orthographic = oc.variable
        self.orthographic.add_callback(self.orthographic_cb)

        #
        # Specify a label width so dialog is not resized for long messages.
        #
        msg = Tkinter.Label(parent, width=40, anchor='w', justify='left')
        msg.grid(row=row, column=0, sticky='ew')
        row = row + 1
        self.message_label = msg