Changeset 8771:a9253356e1a9 in orange


Ignore:
Timestamp:
08/25/11 00:06:00 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
890473a6ee7e1f548db5f7fa0792c5fc1b8b4250
Message:

Added line tooltips

Location:
orange/OrangeWidgets/Visualize Qt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Visualize Qt/OWLinProj3DPlot.py

    r8766 r8771  
    1010class OWLinProj3DPlot(OWPlot3D, ScaleLinProjData3D): 
    1111    def __init__(self, widget, parent=None, name='None'): 
     12        self.name = name 
    1213        OWPlot3D.__init__(self, parent) 
    1314        ScaleLinProjData3D.__init__(self) 
     
    3031        self._point_width_to_symbol_scale = 1.5 
    3132 
     33        if 'linear' in self.name.lower(): 
     34            self._arrow_lines = [] 
     35            self.mouseover_callback = self._update_arrow_values 
     36 
    3237        self.gui = OWPlotGUI(self) 
    3338 
     
    144149                self.cone_shader.setUniformValue('modelview', modelview) 
    145150 
     151                glDepthMask(GL_TRUE) 
    146152                glBindVertexArray(self.cone_vao_id) 
    147153                glDrawArrays(GL_TRIANGLES, 0, self.cone_vao_id.num_vertices) 
     
    153159                self.renderText(x*1.2, y*1.2, z*1.2, label) 
    154160 
     161                glDepthMask(GL_FALSE) 
    155162                glBegin(GL_LINES) 
    156163                glVertex3f(0, 0, 0) 
    157164                glVertex3f(x, y, z) 
    158165                glEnd() 
     166 
     167        glDepthMask(GL_TRUE) 
     168        glEnable(GL_DEPTH_TEST) 
     169        if self._arrow_lines: 
     170            glLineWidth(2) 
     171            for x, y, z, value, color in self._arrow_lines: 
     172                glColor3f(*color) 
     173                glBegin(GL_LINES) 
     174                glVertex3f(0, 0, 0) 
     175                glVertex3f(x, y, z) 
     176                glEnd() 
     177 
     178                glColor3f(0, 0, 0) 
     179                # TODO: discrete 
     180                self.renderText(x,y,z, ('%f' % value).rstrip('0').rstrip('.'), 
     181                                font=self._theme.labels_font) 
     182 
     183            glLineWidth(1) 
    159184 
    160185        self._draw_value_lines() 
     
    337362            self.new_selection = None 
    338363 
     364    def _update_arrow_values(self, index): 
     365        if index == self._last_index: 
     366            return 
     367        self._last_index = index 
     368        self._arrow_lines = [] 
     369        example = self.original_data.T[index] 
     370        for x, y, z, attribute in self.anchor_data: 
     371            value = example[self.attribute_name_index[attribute]] 
     372            max_value = self.attr_values[attribute][1] 
     373            factor = value / max_value 
     374            if self.useDifferentColors: 
     375                color = self.discPalette.getRGB(example[self.data_class_index]) 
     376            else: 
     377                color = (0, 0, 0) 
     378            self._arrow_lines.append([x*factor, y*factor, z*factor, value, color]) 
     379        self._mouseover_called = True 
     380        self.updateGL() 
     381 
    339382    def mouseMoveEvent(self, event): 
    340383        pos = event.pos() 
    341384 
     385        self._last_index = -1 
     386        self._mouseover_called = False 
    342387        self._check_mouseover(pos) 
     388        if not self._mouseover_called and 'linear' in self.name.lower(): 
     389            before = len(self._arrow_lines) 
     390            self._arrow_lines = [] 
     391            if before > 0: 
     392                self.updateGL() 
    343393 
    344394        if self.state == PlotState.IDLE: 
  • orange/OrangeWidgets/Visualize Qt/OWSphereviz3D.py

    r8751 r8771  
    1515 
    1616class OWSphereviz3DPlot(OWLinProj3DPlot): 
    17     def __init__(self, widget, parent=None, name='None'): 
     17    def __init__(self, widget, parent=None, name='SpherevizPlot'): 
    1818        OWLinProj3DPlot.__init__(self, widget, parent, name) 
    1919 
Note: See TracChangeset for help on using the changeset viewer.