Changeset 8681:a65fb1d668b0 in orange


Ignore:
Timestamp:
08/13/11 10:11:51 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
aa6dc86200774aa1225580d8a43995fee9e11515
Message:

GUI for configuring performance-related options (animations and AA)

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWScatterPlotQt.py

    r8656 r8681  
    120120        OWGUI.checkBox(box4, self, 'graph.showAxisScale', 'Show axis scale', callback = self.updateGraph) 
    121121         
    122         g.add_widgets([g.ShowLegend, g.ShowFilledSymbols, g.ShowGridLines, g.UseAnimations, g.Antialiasing], box4) 
     122        g.add_widgets([g.ShowLegend, g.ShowFilledSymbols, g.ShowGridLines], box4) 
    123123         
    124124        box5 = OWGUI.widgetBox(box4, orientation = "horizontal") 
     
    145145        OWGUI.checkBox(box, self, 'graph.sendSelectionOnUpdate', 'Moving/Resizing selection areas', tooltip = "Send selected data when a user moves or resizes an existing selection area") 
    146146        self.graph.selection_changed.connect(self.selectionChanged) 
     147         
     148        self.EffectsTab = OWGUI.createTabPage(self.tabs, "Performance") 
     149        g.effects_box(self.EffectsTab) 
    147150 
    148151        self.GeneralTab.layout().addStretch(100) 
    149152        self.SettingsTab.layout().addStretch(100) 
     153        self.EffectsTab.layout().addStretch(100) 
    150154        self.icons = self.createAttributeIconDict() 
    151155 
  • orange/OrangeWidgets/plot/owlegend.py

    r8667 r8681  
    244244                        x = x + item.boundingRect().width() 
    245245                    self.box_rect = self.box_rect | item.boundingRect().translated(0, y) 
    246                     move_item_xy(item, x, y, self.graph.use_animations) 
     246                    move_item_xy(item, x, y, self.graph.animate_plot) 
    247247                    y = y + item.boundingRect().height() 
    248248        elif self._orientation == Qt.Horizontal: 
     
    259259                        y = y + max_h 
    260260                    self.box_rect = self.box_rect | item.boundingRect().translated(x, y) 
    261                     move_item_xy(item, x, y, self.graph.use_animations) 
     261                    move_item_xy(item, x, y, self.graph.animate_plot) 
    262262                    x = x + item.boundingRect().width()                 
    263263        else: 
     
    304304             
    305305    def set_pos_animated(self, pos): 
    306         if (self.pos() - pos).manhattanLength() < 6 or not self.graph.use_animations: 
     306        if (self.pos() - pos).manhattanLength() < 6 or not self.graph.animate_plot: 
    307307            self.setPos(pos) 
    308308        else: 
  • orange/OrangeWidgets/plot/owplot.py

    r8670 r8681  
    306306         
    307307        # OWScatterPlot needs these: 
    308         self.use_antialiasing = True 
    309308        self.point_width = 5 
    310309        self.show_filled_symbols = True 
     
    333332        self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) 
    334333        self.scene().setItemIndexMethod(QGraphicsScene.NoIndex) 
     334         
     335        self.animate_plot = True 
     336        self.animate_points = True 
     337        self.antialias_plot = True 
     338        self.antialias_points = True 
     339        self.antialias_lines = True 
     340         
     341        self.auto_adjust_performance = True 
     342        self.disable_animations_threshold = 2000 
    335343     #   self.setInteractive(False) 
    336344         
     
    699707            self.main_curve = OWMultiCurve([], []) 
    700708            self.add_item(self.main_curve) 
     709             
     710        self.update_performance(len(x_data)) 
    701711 
    702712        c = self.main_curve 
     
    14231433            self.use_antialiasing= use_antialiasing 
    14241434             
    1425         self.setRenderHint(QPainter.Antialiasing, self.use_antialiasing) 
     1435        self.setRenderHint(QPainter.Antialiasing, self.antialias_plot) 
    14261436        orangeqt.Point.clear_cache() 
    14271437         
     
    14291439        if use_animations is not None: 
    14301440            self.use_animations = use_animations 
     1441             
     1442    def update_performance(self, num_points = None): 
     1443        if self.auto_adjust_performance: 
     1444            if not num_points: 
     1445                if self.main_curve: 
     1446                    num_points = len(self.main_curve.points()) 
     1447                else: 
     1448                    num_points = sum( len(c.points()) for c in self.curves ) 
     1449            if num_points > self.disable_animations_threshold: 
     1450                self.animate_points = False 
     1451                self.animate_plot = False 
     1452                self.antialias_lines = False 
    14311453         
    14321454    def animate(self, target, prop_name, end_val, duration = None): 
  • orange/OrangeWidgets/plot/owplotgui.py

    r8633 r8681  
    252252    StateButtonsEnd = 36 
    253253     
     254    AnimatePlot = 41 
     255    AnimatePoints = 42 
     256    AntialiasPlot = 43 
     257    AntialiasPoints = 44 
     258    AntialiasLines = 45 
     259    DisableAnimationsThreshold = 48 
     260    AutoAdjustPerformance = 49 
     261     
    254262    UserButton = 100 
    255263     
     
    283291        ShufflePoints : ('ShufflePoints', None, None, 'shuffle_points', 'Dlg_sort') 
    284292    } 
     293     
     294    _check_boxes = { 
     295        AnimatePlot : ('Animate plot', 'animate_plot', 'update_animations'), 
     296        AnimatePoints : ('Animate points', 'animate_points', 'update_animations'), 
     297        AntialiasPlot : ('Antialias plot', 'antialias_plot', 'update_antialiasing'), 
     298        AntialiasPoints : ('Antialias points', 'antialias_points', 'update_antialiasing'), 
     299        AntialiasLines : ('Antialias lines', 'antialias_lines', 'update_antialiasing'), 
     300        AutoAdjustPerformance : ('Disable effects for large data sets', 'auto_adjust_performance', 'update_performance') 
     301    } 
    285302    ''' 
    286303        The list of built-in buttons. It is a map of  
     
    361378            self.ShowFilledSymbols, 
    362379            self.ShowGridLines, 
    363             self.UseAnimations, 
    364             self.Antialiasing 
    365380            ], widget, "Plot settings") 
    366381         
     
    378393        if id in self._functions: 
    379394            self._functions[id](self, widget) 
     395        elif id in self._check_boxes: 
     396            label, attr, cb = self._check_boxes[id] 
     397            self._check_box(widget, attr, label, cb) 
    380398             
    381399    def add_widgets(self, ids, widget): 
     
    437455        t.buttons[self.SelectionOne].click() 
    438456        return t     
     457         
     458    def effects_box(self, widget): 
     459        b = self.create_box([ 
     460            self.AnimatePlot,  
     461            self.AnimatePoints, 
     462            self.AntialiasPlot, 
     463            self.AntialiasPoints, 
     464            self.AntialiasLines, 
     465            self.AutoAdjustPerformance, 
     466            self.DisableAnimationsThreshold], widget, "Visual effects") 
     467        return b 
  • source/orangeqt/curve.cpp

    r8680 r8681  
    428428        m_watcher.future().waitForFinished(); 
    429429    } 
    430     if (plot() && plot()->use_animations) 
     430    if (plot() && plot()->animate_points) 
    431431    { 
    432432        m_watcher.setFuture(QtConcurrent::mapped(m_pointItems, PointPosMapper(m_graphTransform))); 
  • source/orangeqt/plot.h

    r8680 r8681  
    9898    void marked_to_selected(); 
    9999     
    100     bool use_animations; 
     100    bool animate_points; 
    101101     
    102102Q_SIGNALS: 
  • source/orangeqt/plot.sip

    r8680 r8681  
    8383    void remove_all_points(PlotItem* parent); 
    8484     
    85     bool use_animations; 
     85    bool animate_points; 
    8686 
    8787Q_SIGNALS: 
  • source/orangeqt/point.cpp

    r8680 r8681  
    100100            p.begin(&pixmap); 
    101101            p.setRenderHints(painter->renderHints()); 
     102            p.setRenderHint(QPainter::Antialiasing, true); 
    102103            if (m_state & Selected) 
    103104            { 
Note: See TracChangeset for help on using the changeset viewer.