Ignore:
Timestamp:
05/13/13 11:33:59 (11 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Moved gradient functions into gui.utils.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/gui/utils.py

    r11311 r11508  
    33 
    44""" 
    5 import os 
     5 
    66import sys 
    77import traceback 
     
    1313    QPainter, QStyleOption, QStyle 
    1414) 
     15 
     16from PyQt4.QtCore import QPointF 
    1517 
    1618import sip 
     
    177179 
    178180 
     181def create_gradient(base_color, stop=QPointF(0, 0), 
     182                    finalStop=QPointF(0, 1)): 
     183    """ 
     184    Create a default linear gradient using `base_color` . 
     185 
     186    """ 
     187    grad = QLinearGradient(stop, finalStop) 
     188    grad.setStops([(0.0, base_color), 
     189                   (0.5, base_color), 
     190                   (0.8, base_color.darker(105)), 
     191                   (1.0, base_color.darker(110)), 
     192                   ]) 
     193    grad.setCoordinateMode(QLinearGradient.ObjectBoundingMode) 
     194    return grad 
     195 
     196 
     197def create_css_gradient(base_color, stop=QPointF(0, 0), 
     198                        finalStop=QPointF(0, 1)): 
     199    """ 
     200    Create a Qt css linear gradient fragment based on the `base_color`. 
     201    """ 
     202    gradient = create_gradient(base_color, stop, finalStop) 
     203    return css_gradient(gradient) 
     204 
     205 
     206def css_gradient(gradient): 
     207    """ 
     208    Given an instance of a `QLinearGradient` return an equivalent qt css 
     209    gradient fragment. 
     210 
     211    """ 
     212    stop, finalStop = gradient.start(), gradient.finalStop() 
     213    x1, y1, x2, y2 = stop.x(), stop.y(), finalStop.x(), finalStop.y() 
     214    stops = gradient.stops() 
     215    stops = "\n".join("    stop: {0:f} {1}".format(stop, color.name()) 
     216                      for stop, color in stops) 
     217    return ("qlineargradient(\n" 
     218            "    x1: {x1}, y1: {y1}, x2: {x1}, y2: {y2},\n" 
     219            "{stops})").format(x1=x1, y1=y1, x2=x2, y2=y2, stops=stops) 
     220 
     221 
    179222def message_critical(text, title=None, informative_text=None, details=None, 
    180223                     buttons=None, default_button=None, exc_info=False, 
Note: See TracChangeset for help on using the changeset viewer.