Ignore:
Location:
Orange/OrangeCanvas
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/application/canvasmain.py

    r11321 r11340  
    15271527                    url = self.help.search(url) 
    15281528                except KeyError: 
     1529                    url = None 
    15291530                    log.info("No help topic found for %r", url) 
    1530                     return False 
    15311531 
    15321532            if url: 
    15331533                self.show_help(url) 
    1534                 return True 
     1534            else: 
     1535                message_information( 
     1536                    self.tr("Sorry there is no documentation available for " 
     1537                            "this widget."), 
     1538                    parent=self) 
     1539 
     1540            return True 
    15351541 
    15361542        return QMainWindow.event(self, event) 
  • Orange/OrangeCanvas/canvas/items/linkitem.py

    r11241 r11343  
    134134 
    135135        self.linkTextItem = QGraphicsTextItem(self) 
    136         self.linkTextItem.setFont(QFont("Helvetica", 11)) 
    137136 
    138137        self.__sourceName = "" 
     
    240239 
    241240        self.__updateCurve() 
     241 
     242    def setFont(self, font): 
     243        """ 
     244        Set the channel names font. 
     245        """ 
     246        if font != self.font(): 
     247            self.linkTextItem.setFont(font) 
     248            self.__updateText() 
     249 
     250    def font(self): 
     251        """ 
     252        Return the channel names font. 
     253        """ 
     254        return self.linkTextItem.font() 
    242255 
    243256    def setChannelNamesVisible(self, visible): 
  • Orange/OrangeCanvas/canvas/items/nodeitem.py

    r11331 r11343  
    697697        self.captionTextItem.setPlainText("") 
    698698        self.captionTextItem.setPos(0, 33) 
    699         font = QFont("Helvetica", 12) 
    700         self.captionTextItem.setFont(font) 
    701699 
    702700        def iconItem(standard_pixmap): 
     
    773771 
    774772    title_ = Property(unicode, fget=title, fset=setTitle) 
     773 
     774    def setFont(self, font): 
     775        """ 
     776        Set the title text font. 
     777        """ 
     778        if font != self.font(): 
     779            self.prepareGeometryChange() 
     780            self.captionTextItem.setFont(font) 
     781            self.__updateTitleText() 
     782 
     783    def font(self): 
     784        """ 
     785        Return the title text font. 
     786        """ 
     787        return self.captionTextItem.font() 
    775788 
    776789    def setProcessingState(self, state): 
  • Orange/OrangeCanvas/canvas/scene.py

    r11278 r11343  
    1414                        QGraphicsItem 
    1515 
    16 from PyQt4.QtCore import Qt, QPointF, QRectF, QSizeF, QLineF, QBuffer 
     16from PyQt4.QtCore import Qt, QPointF, QRectF, QSizeF, QLineF, QBuffer, QEvent 
    1717 
    1818from PyQt4.QtCore import pyqtSignal as Signal 
     
    228228            item.setPos(pos) 
    229229 
     230        item.setFont(self.font()) 
     231 
    230232        # Set signal mappings 
    231233        self.activated_mapper.setPyMapping(item, item) 
     
    337339            self.addItem(item) 
    338340 
     341        item.setFont(self.font()) 
    339342        self.__link_items.append(item) 
    340343 
     
    762765            handler.start() 
    763766 
     767    def event(self, event): 
     768        # TODO: change the base class of Node/LinkItem to QGraphicsWidget. 
     769        # It already handles font changes. 
     770        if event.type() == QEvent.FontChange: 
     771            self.__update_font() 
     772 
     773        return QGraphicsScene.event(self, event) 
     774 
     775    def __update_font(self): 
     776        font = self.font() 
     777        for item in self.__node_items + self.__link_items: 
     778            item.setFont(font) 
     779 
    764780    def __str__(self): 
    765781        return "%s(objectName=%r, ...)" % \ 
     
    777793 
    778794    if "size" in font_dict: 
    779         font.setPointSize(font_dict["size"]) 
     795        font.setPixelSize(font_dict["size"]) 
    780796 
    781797    return font 
  • Orange/OrangeCanvas/document/interactions.py

    r11279 r11343  
    886886        annot = scheme.SchemeTextAnnotation(rect_to_tuple(rect)) 
    887887        font = {"family": unicode(self.font.family()), 
    888                 "size": self.font.pointSize()} 
     888                "size": self.font.pixelSize()} 
    889889        annot.set_font(font) 
    890890 
  • Orange/OrangeCanvas/document/schemeedit.py

    r11310 r11343  
    3535from . import commands 
    3636from . import quickmenu 
    37  
    3837 
    3938log = logging.getLogger(__name__) 
     
    174173 
    175174        def font(size): 
    176             return QFont("Helvetica", size) 
     175            f = QFont(self.font()) 
     176            f.setPixelSize(size) 
     177            return f 
    177178 
    178179        for size in [12, 14, 16, 18, 20, 22, 24]: 
    179             action = QAction("%ip" % size, group, 
     180            action = QAction("%ipx" % size, group, 
    180181                             checkable=True, 
    181182                             font=font(size)) 
     
    280281                    toolTip=self.tr("Show widget help"), 
    281282                    triggered=self.__onHelpAction, 
    282                     shortcut=QKeySequence.HelpContents 
     283                    shortcut=QKeySequence("F1") 
    283284                    ) 
    284285 
     
    324325        scene = CanvasScene() 
    325326        scene.set_channel_names_visible(self.__channelNamesVisible) 
     327        scene.setFont(self.font()) 
    326328 
    327329        view = CanvasView(scene) 
     
    490492            self.__view.setScene(self.__scene) 
    491493            self.__scene.set_channel_names_visible(self.__channelNamesVisible) 
     494            self.__scene.setFont(self.font()) 
    492495 
    493496            self.__scene.installEventFilter(self) 
     
    792795            self.setWindowModified(not clean) 
    793796            self.modificationChanged.emit(not clean) 
     797 
     798    def changeEvent(self, event): 
     799        if event.type() == QEvent.FontChange: 
     800            self.__updateFont() 
     801 
     802        QWidget.changeEvent(self, event) 
    794803 
    795804    def eventFilter(self, obj, event): 
     
    10781087        if focus is not None: 
    10791088            desc = focus.description 
    1080             tip = whats_this_helper(desc) 
     1089            tip = whats_this_helper(desc, include_more_link=True) 
    10811090        else: 
    10821091            tip = "" 
     
    13691378            log.info("Control point editing finished.") 
    13701379 
     1380    def __updateFont(self): 
     1381        actions = self.__fontActionGroup.actions() 
     1382        font = self.font() 
     1383        for action in actions: 
     1384            size = action.font().pixelSize() 
     1385            action_font = QFont(font) 
     1386            action_font.setPixelSize(size) 
     1387            action.setFont(action_font) 
     1388 
     1389        if self.__scene: 
     1390            self.__scene.setFont(font) 
     1391 
    13711392 
    13721393def geometry_from_annotation_item(item): 
  • Orange/OrangeCanvas/main.py

    r11299 r11339  
    4242    except NameError: 
    4343        return False 
     44 
     45 
     46def fix_win_pythonw_std_stream(): 
     47    """ 
     48    On windows when running without a console (using pythonw.exe) the 
     49    std[err|out] file descriptors are invalid and start throwing exceptions 
     50    when their buffer is flushed (`http://bugs.python.org/issue706263`_) 
     51 
     52    """ 
     53    if sys.platform == "win32" and \ 
     54            os.path.basename(sys.executable) == "pythonw.exe": 
     55        if sys.stdout.fileno() < 0: 
     56            sys.stdout = open(os.devnull, "wb") 
     57        if sys.stderr.fileno() < 0: 
     58            sys.stderr = open(os.devnull, "wb") 
    4459 
    4560 
     
    91106 
    92107    logging.basicConfig(level=levels[options.log_level]) 
     108 
     109    fix_win_pythonw_std_stream() 
    93110 
    94111    log.info("Starting 'Orange Canvas' application.") 
  • Orange/OrangeCanvas/registry/qt.py

    r11286 r11341  
    322322 
    323323 
    324 def whats_this_helper(desc): 
    325     """What's this construction helper. 
     324def whats_this_helper(desc, include_more_link=False): 
     325    """ 
     326    A `What's this` text construction helper. If `include_more_link` is 
     327    True then the text will include a `more...` link. 
     328 
    326329    """ 
    327330    title = desc.name 
     
    342345        template.append("<p>{0}</p>".format(escape(long_description[:100]))) 
    343346 
    344     if help_url: 
     347    if help_url and include_more_link: 
    345348        template.append("<a href='{0}'>more...</a>".format(escape(help_url))) 
    346349 
  • Orange/OrangeCanvas/styles/orange.qss

    r11212 r11343  
    321321} 
    322322 
     323/* SchemeEditWidget 
     324 */ 
     325 
     326SchemeEditWidget { 
     327    font-family: "Helvetica"; 
     328    font-size: 12px; 
     329} 
    323330 
    324331/* Quick Menu  
  • Orange/OrangeCanvas/utils/qtcompat.py

    r11299 r11342  
    2121    Get the api version for a name. 
    2222    """ 
    23     if sip.SIP_VERSION < 0x40900: 
     23    if sip.SIP_VERSION > 0x40900: 
    2424        return sip.getapi(name) 
    2525    elif name in _API_NAMES: 
  • Orange/OrangeCanvas/utils/settings.py

    r11300 r11342  
    1515 
    1616from PyQt4.QtCore import pyqtSignal as Signal 
    17 from PyQt4.QtCore import pyqtWrapperType 
     17 
     18pyqtWrapperType = type(QObject) 
    1819 
    1920from . import toPyObject 
Note: See TracChangeset for help on using the changeset viewer.