def __init__(self, topLevelPath, settings, knittingSymbols, fileName=None, parent=None): """ Initialize the main window. """ super(MainWindow, self).__init__(parent) self.setupUi(self) self.settings = settings self.preferencesDialog = PreferencesDialog(self.settings, self) self.manualDialog = None self.clear_project_save_file() self._topLevelPath = topLevelPath self._knittingSymbols = knittingSymbols self.canvas = PatternCanvas(self.settings, knittingSymbols["knit"], self) self.exportBitmapDialog = None self.create_export_bitmap_dialog() self.manageSymbolsDialog = None self.create_manage_knitting_symbols_dialog() self.initialize_symbol_widget(knittingSymbols) self.initialize_color_widget() self.initialize_row_col_widget() self._restore_window_settings() self.recentlyUsedSymbolWidget.update_num_recent_symbols( self.settings.numRecentSymbols.value) # we set a manual scene rectangle for our view. we # should be a little smarter about this in the future self.graphicsView.setScene(self.canvas) self._set_up_recently_used_files_menu() # set up all the connections self._set_up_connections() # nothing happened so far self._projectIsDirty = False # read project if we received a filename but first check # if we have a recovery file. if fileName: (was_recovered, readFileName) = check_for_recovery_file(fileName) if self._read_project(readFileName): self.set_project_save_file(fileName) self.update_recently_used_files(fileName) self.canvas.clear_undo_stack() if not was_recovered: self.mark_project_clean() # set up timers # NOTE: Needs to be last, otherwise some signals may not # connect properly self._set_up_timers()