Changeset 8777:fe5d4d5412d8 in orange


Ignore:
Timestamp:
08/25/11 13:27:42 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
c403ded98a4d396465b0df0f9925144392f6095e
Message:

Enabled the usual tooltips in linproj3d

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

Legend:

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

    r8771 r8777  
    156156                self.cone_shader.release() 
    157157 
     158                glDepthMask(GL_FALSE) 
    158159                glColor4f(0, 0, 0, 1) 
    159160                self.renderText(x*1.2, y*1.2, z*1.2, label) 
    160161 
    161                 glDepthMask(GL_FALSE) 
    162162                glBegin(GL_LINES) 
    163163                glVertex3f(0, 0, 0) 
     
    166166 
    167167        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) 
     168 
     169        if self.tooltipKind == 0: 
     170            glEnable(GL_DEPTH_TEST) 
     171            if self._arrow_lines: 
     172                glLineWidth(2) 
     173                for x, y, z, value, factor, color in self._arrow_lines: 
     174                    glColor3f(*color) 
     175                    glBegin(GL_LINES) 
     176                    glVertex3f(0, 0, 0) 
     177                    glVertex3f(x, y, z) 
     178                    glEnd() 
     179 
     180                    glColor3f(0, 0, 0) 
     181                    # TODO: discrete 
     182                    self.renderText(x,y,z, ('%f' % (value if self.tooltipValue == 0 else factor)).rstrip('0').rstrip('.'), 
     183                                    font=self._theme.labels_font) 
     184 
     185                glLineWidth(1) 
    184186 
    185187        self._draw_value_lines() 
     
    363365 
    364366    def _update_arrow_values(self, index): 
     367        if self.tooltipKind == 1: 
     368            shown_attrs = [anchor[3] for anchor in self.anchor_data] 
     369            self.show_tooltip(self.get_example_tooltip_text(self.raw_data[index], shown_attrs)) 
     370            return 
     371        elif self.tooltipKind == 2: 
     372            self.show_tooltip(self.get_example_tooltip_text(self.raw_data[index])) 
     373            return 
     374 
    365375        if index == self._last_index: 
    366376            return 
     
    376386            else: 
    377387                color = (0, 0, 0) 
    378             self._arrow_lines.append([x*factor, y*factor, z*factor, value, color]) 
     388            self._arrow_lines.append([x*factor, y*factor, z*factor, value, factor, color]) 
    379389        self._mouseover_called = True 
    380390        self.updateGL() 
     391 
     392    def get_example_tooltip_text(self, example, indices=None, maxIndices=20): 
     393        if indices and type(indices[0]) == str: 
     394            indices = [self.attributeNameIndex[i] for i in indices] 
     395        if not indices:  
     396            indices = range(len(self.dataDomain.attributes)) 
     397         
     398        # don't show the class value twice 
     399        if example.domain.classVar: 
     400            classIndex = self.attributeNameIndex[example.domain.classVar.name] 
     401            while classIndex in indices: 
     402                indices.remove(classIndex)       
     403       
     404        text = "<b>Attributes:</b><br>" 
     405        for index in indices[:maxIndices]: 
     406            attr = self.attributeNames[index] 
     407            if attr not in example.domain:  text += "&nbsp;"*4 + "%s = ?<br>" % (Qt.escape(attr)) 
     408            elif example[attr].isSpecial(): text += "&nbsp;"*4 + "%s = ?<br>" % (Qt.escape(attr)) 
     409            else:                           text += "&nbsp;"*4 + "%s = %s<br>" % (Qt.escape(attr), Qt.escape(str(example[attr]))) 
     410        if len(indices) > maxIndices: 
     411            text += "&nbsp;"*4 + " ... <br>" 
     412 
     413        if example.domain.classVar: 
     414            text = text[:-4] 
     415            text += "<hr><b>Class:</b><br>" 
     416            if example.getclass().isSpecial(): text += "&nbsp;"*4 + "%s = ?<br>" % (Qt.escape(example.domain.classVar.name)) 
     417            else:                              text += "&nbsp;"*4 + "%s = %s<br>" % (Qt.escape(example.domain.classVar.name), Qt.escape(str(example.getclass()))) 
     418 
     419        if len(example.domain.getmetas()) != 0: 
     420            text = text[:-4] 
     421            text += "<hr><b>Meta attributes:</b><br>" 
     422            # show values of meta attributes 
     423            for key in example.domain.getmetas(): 
     424                try: text += "&nbsp;"*4 + "%s = %s<br>" % (Qt.escape(example.domain[key].name), Qt.escape(str(example[key]))) 
     425                except: pass 
     426        return text[:-4]        # remove the last <br> 
    381427 
    382428    def mouseMoveEvent(self, event): 
  • orange/OrangeWidgets/Visualize Qt/OWLinProjQt.py

    r8768 r8777  
    210210 
    211211        box = OWGUI.widgetBox(self.SettingsTab, "Tooltips Settings") 
    212         OWGUI.comboBox(box, self, "graph.tooltipKind", items = ["Show line tooltips", "Show visible attributes", "Show all attributes"], callback = self.updateGraph) 
    213         OWGUI.comboBox(box, self, "graph.tooltipValue", items = ["Tooltips show data values", "Tooltips show spring values"], callback = self.updateGraph, tooltip = "Do you wish that tooltips would show you original values of visualized attributes or the 'spring' values (values between 0 and 1). \nSpring values are scaled values that are used for determining the position of shown points. Observing these values will therefore enable you to \nunderstand why the points are placed where they are.") 
     212        callback = self.graph.updateGL if "3d" in name_lower else self.updateGraph 
     213        OWGUI.comboBox(box, self, "graph.tooltipKind", items = ["Show line tooltips", "Show visible attributes", "Show all attributes"], callback = callback) 
     214        OWGUI.comboBox(box, self, "graph.tooltipValue", items = ["Tooltips show data values", "Tooltips show spring values"], callback = callback, tooltip = "Do you wish that tooltips would show you original values of visualized attributes or the 'spring' values (values between 0 and 1). \nSpring values are scaled values that are used for determining the position of shown points. Observing these values will therefore enable you to \nunderstand why the points are placed where they are.") 
    214215 
    215216        box = OWGUI.widgetBox(self.SettingsTab, "Auto Send Selected Data When...") 
Note: See TracChangeset for help on using the changeset viewer.