Ignore:
Timestamp:
11/27/12 15:33:01 (17 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added Tutorial dialog.

File:
1 edited

Legend:

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

    r11201 r11206  
    4040 
    4141from .. import config 
     42 
     43from . import tutorials 
    4244 
    4345log = logging.getLogger(__name__) 
     
    457459            QAction(self.tr("Tutorial"), self, 
    458460                    objectName="tutorial-action", 
    459                     toolTip=self.tr("View tutorial."), 
    460                     triggered=self.tutorial, 
     461                    toolTip=self.tr("Browse tutorials."), 
     462                    triggered=self.tutorial_scheme, 
    461463                    icon=canvas_icons("Tutorials.svg") 
    462464                    ) 
     
    902904    def load_scheme(self, filename): 
    903905        """Load a scheme from a file (`filename`) into the current 
    904         document. 
     906        document updates the recent scheme list and the loaded scheme path 
     907        property. 
    905908 
    906909        """ 
     
    910913        self.last_scheme_dir = dirname 
    911914 
     915        new_scheme = self.new_scheme_from(filename) 
     916 
     917        scheme_doc_widget = self.current_document() 
     918        scheme_doc_widget.setScheme(new_scheme) 
     919 
     920        self.add_recent_scheme(new_scheme) 
     921 
     922    def new_scheme_from(self, filename): 
     923        """Create and return a new :class:`widgetsscheme.WidgetsScheme` 
     924        from a saved `filename`. 
     925 
     926        """ 
    912927        new_scheme = widgetsscheme.WidgetsScheme() 
    913928        try: 
    914929            new_scheme.load_from(open(filename, "rb")) 
    915             new_scheme.path = filename 
    916930        except Exception: 
    917931            message_critical( 
     
    921935                 exc_info=True, 
    922936                 parent=self) 
    923             return 
    924  
    925         scheme_doc_widget = self.current_document() 
    926         scheme_doc_widget.setScheme(new_scheme) 
    927  
    928         self.add_recent_scheme(new_scheme) 
     937            return None 
     938 
     939        return new_scheme 
    929940 
    930941    def reload_last(self): 
     
    10751086 
    10761087        dialog = previewdialog.PreviewDialog(self) 
    1077         dialog.setWindowTitle(self.tr("Recent Schemes")) 
     1088        title = self.tr("Recent Schemes") 
     1089        dialog.setWindowTitle(title) 
     1090        template = ('<h3 style="font-size: 26px">\n' 
     1091                    #'<img height="26" src="canvas_icons:Recent.svg">\n' 
     1092                    '{0}\n' 
     1093                    '</h3>') 
     1094        dialog.setHeading(template.format(title)) 
    10781095        dialog.setModel(model) 
    10791096 
     
    10921109 
    10931110            self.load_scheme(unicode(selected.path())) 
     1111 
     1112        return status 
     1113 
     1114    def tutorial_scheme(self, *args): 
     1115        """Browse a collection of tutorial schemes. Returns QDialog.Rejected 
     1116        if the user canceled the dialog else loads the selected scheme into 
     1117        the canvas and returns QDialog.Accepted. 
     1118 
     1119        """ 
     1120        tutors = tutorials.tutorials() 
     1121        items = [previewmodel.PreviewItem(path=t.abspath()) for t in tutors] 
     1122        model = previewmodel.PreviewModel(items=items) 
     1123        dialog = previewdialog.PreviewDialog(self) 
     1124        title = self.tr("Tutorials") 
     1125        dialog.setWindowTitle(title) 
     1126        template = ('<h3 style="font-size: 26px">\n' 
     1127                    #'<img height="26" src="canvas_icons:Tutorials.svg">\n' 
     1128                    '{0}\n' 
     1129                    '</h3>') 
     1130 
     1131        dialog.setHeading(template.format(title)) 
     1132        dialog.setModel(model) 
     1133 
     1134        model.delayedScanUpdate() 
     1135        status = dialog.exec_() 
     1136 
     1137        if status == QDialog.Accepted: 
     1138            doc = self.current_document() 
     1139            if doc.isModified(): 
     1140                if self.ask_save_changes() == QDialog.Rejected: 
     1141                    return QDialog.Rejected 
     1142 
     1143            index = dialog.currentIndex() 
     1144            selected = model.item(index) 
     1145 
     1146            new_scheme = self.new_scheme_from(unicode(selected.path())) 
     1147            # Clear the 'path' property (set by scheme.load_from), so 
     1148            # ctrl-s does not override the saved tutorial file in case the 
     1149            # tutorial file is writable. 
     1150            new_scheme.path = "" 
     1151            self.current_document().setScheme(new_scheme) 
    10941152        return status 
    10951153 
     
    11001158        dialog = welcomedialog.WelcomeDialog(self) 
    11011159        dialog.setWindowTitle(self.tr("Welcome to Orange Data Mining")) 
    1102         top_row = [self.get_started_action, self.tutorials_action, 
    1103                    self.documentation_action] 
    11041160 
    11051161        def new_scheme(): 
     
    11131169        def open_recent(): 
    11141170            if self.recent_scheme() == QDialog.Accepted: 
     1171                dialog.accept() 
     1172 
     1173        def tutorial(): 
     1174            if self.tutorial_scheme() == QDialog.Accepted: 
    11151175                dialog.accept() 
    11161176 
     
    11411201                    icon=canvas_icons("Recent.svg") 
    11421202                    ) 
     1203 
     1204        tutorials_action = \ 
     1205            QAction(self.tr("Tutorial"), dialog, 
     1206                    objectName="welcome-tutorial-action", 
     1207                    toolTip=self.tr("Browse tutorial schemes."), 
     1208                    triggered=tutorial, 
     1209                    icon=canvas_icons("Tutorials.svg") 
     1210                    ) 
     1211 
     1212        top_row = [self.get_started_action, tutorials_action, 
     1213                   self.documentation_action] 
    11431214 
    11441215        self.new_action.triggered.connect(dialog.accept) 
Note: See TracChangeset for help on using the changeset viewer.