def __init__(self):
        Instances.MainWindow = self
        font = QApplication.instance().font()
        rc('font', **{'family': 'serif', 'serif': [font.defaultFamily()]})
        super(PySpectrumMainWindow, self).__init__()
        self.ui = Ui_PySpectrumMainWindow()
        self.database = sqlite3.connect(os.path.join('data', 'pyspectrum.db'))
        self.ui.setupUi(self)
        self.settings = QSettings("GuLinux", "PySpectrum")
        self.homepage = HomePage(self.settings, self.database)
        self.ui.stackedWidget.addWidget(self.homepage)
        self.windows_menu = QtCommons.addToolbarPopup(
            self.ui.toolBar, 'Windows', icon_file=':/bullet_list_20')
        self.actionClose = self.ui.toolBar.addAction(QIcon(':/close_20'),
                                                     "Close")
        self.actionClose.setEnabled(False)
        self.actionClose.triggered.connect(self.close_widget)

        self.homepage.import_image.connect(self.open_image)
        self.homepage.calibrate.connect(self.calibrate)
        self.homepage.math.connect(self.plots_math)
        self.homepage.finish.connect(self.finish_spectrum)
        self.homepage.new_project.connect(self.__new_project)
        self.homepage.stack_images.connect(self.__stack_images)
        self.homepage.open_project.connect(self.__open_project)

        self.ui.stackedWidget.currentChanged.connect(self.current_changed)
        self.current_widget_toolbar = None
        self.restoreGeometry(
            self.settings.value('window_geometry', QByteArray()))
        self.widgets = [(self.homepage, "Home")]
        self.current_changed(self.ui.stackedWidget.indexOf(self.homepage))

        def action_checked(actions, action):
            for a in actions:
                a.setChecked(a == action)

        self.windows_menu.menu().triggered.connect(
            lambda a: action_checked(self.windows_menu.menu().actions(), a))
        self.__rebuild_windows_menu()