コード例 #1
0
ファイル: MainWindow.py プロジェクト: ac001/ArduinoIDE-PyQt
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)

        # TODO - User customisable style
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("Cleanlooks"))

        ## Set the title text format
        self.title_text = "Dawn"

        ## Sets up the settings and other global classes
        self.api = app.API.API()
        self.ut = None

        ## Set Window Properties
        self.setWindowTitle(self.title_text)
        self.setWindowIcon(Icon(Ico.Arduino))
        self.setMinimumWidth(800)
        self.setMinimumHeight(600)

        self.setDockNestingEnabled(True)
        self.setDockOptions(QtGui.QMainWindow.ForceTabbedDocks | QtGui.QMainWindow.VerticalTabs)

        self.topToolBar = QtGui.QToolBar()
        self.topToolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.addToolBar(self.topToolBar)

        ##############################################################
        ## File Menu
        ##############################################################
        menuFile = self.menuBar().addMenu("File")
        menuSettings = menuFile.addAction(Icon(Ico.Settings), "Settings", self.on_settings_dialog)
        menuFile.addSeparator()
        # TODO: Connect this to something
        menuExit = menuFile.addAction(Icon(Ico.Exit), "Exit", self.on_exit)
        # self.topToolBar.addAction(menuSettings)

        ##############################################################
        ## View Menu
        ##############################################################
        menuView = self.menuBar().addMenu("View")
        self.groupViewActions = QtGui.QActionGroup(self)
        self.connect(self.groupViewActions, QtCore.SIGNAL("triggered (QAction *)"), self.on_action_view)

        views = []
        views.append(["projects", Ico.Projects, "Projects"])
        views.append(["api_browser", Ico.Function, "API Browser"])
        views.append(["help", Ico.Help, "Help"])
        views.append(["file_system_browser", Ico.FileSystemBrowser, "Files Browser"])

        for ki, ico, caption in views:
            act = menuView.addAction(Icon(ico), caption)
            act.setProperty("ki", ki)
            self.topToolBar.addAction(act)
            self.groupViewActions.addAction(act)
        self.topToolBar.addSeparator()
        menuView.addAction("View Help in dock - TODO")
        menuView.addAction("View something else in dock")

        ##############################################################
        ## Projects Menu
        ##############################################################
        menuProjects = self.menuBar().addMenu("Projects")
        ## TODO populate this menu

        ##############################################################
        ## Hardware Menu
        ##############################################################
        menuHardware = self.menuBar().addMenu("Hardware")

        ## Boards
        self.actionGroupBoards = QtGui.QActionGroup(self)
        self.actionGroupBoards.setExclusive(True)
        self.connect(self.actionGroupBoards, QtCore.SIGNAL("triggered(QAction *)"), self.on_action_select_board)
        self.menuBoards = menuHardware.addMenu(Icon(Ico.Board), "-- No Board Selected --")  # populates later
        act = menuHardware.addAction(Icon(Ico.Boards), "Boards", self.on_action_boards)
        self.topToolBar.addAction(act)
        menuHardware.addSeparator()

        ## Bootloaders
        self.actionGroupBootLoaders = QtGui.QActionGroup(self)
        self.actionGroupBootLoaders.setExclusive(True)
        self.connect(self.actionGroupBootLoaders, QtCore.SIGNAL("triggered(QAction *)"), self.on_action_bootloader_burn)
        self.menuBootLoaders = menuHardware.addMenu(Icon(Ico.BootLoaderBurn), "Burn Bootloader")  # populates later
        act = menuHardware.addAction(Icon(Ico.BootLoaders), "Bootloaders", self.on_action_bootloaders)
        self.topToolBar.addAction(act)
        self.topToolBar.addSeparator()

        ##############################################################
        ## Websites Menu
        ##############################################################
        self.menuWebSites = self.menuBar().addMenu("Websites")

        self.menuWebSites.addSeparator()
        self.actionEditWebsites = self.menuWebSites.addAction("Edit Sites", self.on_websites_dialog)

        ##############################################################
        ## Help Menu
        menuHelp = self.menuBar().addMenu("Help")
        menuHelp.addAction("About This Project", self.on_about)
        menuHelp.addAction("About Qt", self.on_about_qt)

        ####################################
        ## Dock Widgets
        ####################################
        helpDockWidget = HelpDock("Help", self, self)
        self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, helpDockWidget)

        ##########################################################
        ## Central Widget
        ##########################################################

        self.mainTabWidget = QtGui.QTabWidget(self)
        self.mainTabWidget.setTabsClosable(True)
        self.mainTabWidget.setMovable(True)
        self.setCentralWidget(self.mainTabWidget)
        self.connect(self.mainTabWidget, QtCore.SIGNAL("tabCloseRequested (int)"), self.on_close_tab_requested)
        self.connect(self.mainTabWidget, QtCore.SIGNAL("currentChanged (int)"), self.on_tab_change)

        ## Load Projects and Welcome
        self.on_open_project(settings.app_path().absoluteFilePath("etc/example_project/example.pde"))
        self.on_action_view(QtCore.QString("welcome"))
        self.on_action_view(QtCore.QString("projects"))
        self.mainTabWidget.setCurrentIndex(0)
        ##########################################################
        ## Status Bar
        ##########################################################
        self.statusBar().addPermanentWidget(QtGui.QLabel("Board:"))
        self.lblBoard = QtGui.QLabel("-- none --")
        self.statusBar().addPermanentWidget(self.lblBoard)

        ##########################################################
        ## Globally Shared Widgets
        ##########################################################

        ## Borads
        self.boards = app.Boards.Boards(self)
        self.connect(self.boards, QtCore.SIGNAL("board_selected"), self.on_board_selected)
        self.boards.load_current()  ## THIS actually sets current as event above is not fired in constructor

        ## API

        if not settings.value("virginity"):
            self.on_settings_dialog()

        settings.restore_window("main_window", self)
        self.on_refresh_settings()
コード例 #2
0
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)

        # TODO - User customisable style
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))

        ## Set the title text format
        self.title_text = "Dawn"

        ## Sets up the settings and other global classes
        self.api = app.API.API()
        #self.ut = app.utils.

        ## Set Window Properties
        self.setWindowTitle(self.title_text)
        self.setWindowIcon(Icon(Ico.Arduino))
        self.setMinimumWidth(800)
        self.setMinimumHeight(600)

        self.setDockNestingEnabled(True)
        self.setDockOptions(QtGui.QMainWindow.ForceTabbedDocks
                            | QtGui.QMainWindow.VerticalTabs)

        self.topToolBar = QtGui.QToolBar()
        self.topToolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.addToolBar(self.topToolBar)

        ##############################################################
        ## File Menu
        ##############################################################
        menuFile = self.menuBar().addMenu("File")
        menuSettings = menuFile.addAction(Icon(Ico.Settings), "Settings",
                                          self.on_settings_dialog)
        menuFile.addSeparator()
        # TODO: Connect this to something
        menuExit = menuFile.addAction(Icon(Ico.Exit), "Exit", self.on_exit)
        #self.topToolBar.addAction(menuSettings)

        ##############################################################
        ## View Menu
        ##############################################################
        menuView = self.menuBar().addMenu("View")
        self.groupViewActions = QtGui.QActionGroup(self)
        self.connect(self.groupViewActions,
                     QtCore.SIGNAL("triggered (QAction *)"),
                     self.on_action_view)

        views = []
        views.append(['projects', Ico.Projects, "Projects"])
        views.append(['api_browser', Ico.Function, "API Browser"])
        views.append(['help', Ico.Help, "Help"])
        views.append(
            ['file_system_browser', Ico.FileSystemBrowser, "Files Browser"])

        for ki, ico, caption in views:
            act = menuView.addAction(Icon(ico), caption)
            act.setProperty("ki", ki)
            self.topToolBar.addAction(act)
            self.groupViewActions.addAction(act)
        self.topToolBar.addSeparator()
        menuView.addAction("View Help in dock - TODO")
        menuView.addAction("View something else in dock")

        ##############################################################
        ## Projects Menu
        ##############################################################
        menuProjects = self.menuBar().addMenu("Projects")
        ## TODO populate this menu

        ##############################################################
        ## Hardware Menu
        ##############################################################
        menuHardware = self.menuBar().addMenu("Hardware")

        ## Boards
        self.actionGroupBoards = QtGui.QActionGroup(self)
        self.actionGroupBoards.setExclusive(True)
        self.connect(self.actionGroupBoards,
                     QtCore.SIGNAL("triggered(QAction *)"),
                     self.on_action_select_board)
        self.menuBoards = menuHardware.addMenu(Icon(
            Ico.Board), "-- No Board Selected --")  # populates later
        act = menuHardware.addAction(Icon(Ico.Boards), "Boards",
                                     self.on_action_boards)
        self.topToolBar.addAction(act)
        menuHardware.addSeparator()

        ## Bootloaders
        self.actionGroupBootLoaders = QtGui.QActionGroup(self)
        self.actionGroupBootLoaders.setExclusive(True)
        self.connect(self.actionGroupBootLoaders,
                     QtCore.SIGNAL("triggered(QAction *)"),
                     self.on_action_bootloader_burn)
        self.menuBootLoaders = menuHardware.addMenu(Icon(
            Ico.BootLoaderBurn), "Burn Bootloader")  # populates later
        act = menuHardware.addAction(Icon(Ico.BootLoaders), "Bootloaders",
                                     self.on_action_bootloaders)
        self.topToolBar.addAction(act)
        self.topToolBar.addSeparator()

        ##############################################################
        ## Websites Menu
        ##############################################################
        self.menuWebSites = self.menuBar().addMenu("Websites")
        self.actionGroupWebsites = QtGui.QActionGroup(self)
        self.connect(self.actionGroupWebsites,
                     QtCore.SIGNAL("triggered(QAction *)"),
                     self.on_website_action)

        #self.menuWebSites.addSeparator()
        #self.actionEditWebsites = self.menuWebSites.addAction( "Edit Sites", self.on_websites_dialog )
        #self.topToolBar.addAction(self.actionEditWebsites)

        ####################################
        ### Style Menu
        meniw = self.menuBar().addMenu("Style")
        self.connect(meniw, QtCore.SIGNAL('triggered(QAction *)'),
                     self.on_style_selected)
        actGroup = QtGui.QActionGroup(self)
        for i in QtGui.QStyleFactory.keys():
            act = meniw.addAction(i)
            act.setCheckable(True)
            if QtGui.QApplication.style().objectName() == QtCore.QString(
                    i).toLower():
                act.setChecked(True)
            actGroup.addAction(act)

        ##############################################################
        ## Help Menu
        menuHelp = self.menuBar().addMenu("Help")
        menuHelp.addAction("About This Project", self.on_about)
        menuHelp.addAction("About Qt", self.on_about_qt)

        ### ????
        self.topToolBar.addAction("Syntax Edit", self.on_test_syntax_edit)

        ####################################
        ## Dock Widgets
        ####################################
        helpDockWidget = HelpDock("Help", self, self)
        self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, helpDockWidget)

        ##########################################################
        ## Central Widget
        ##########################################################

        self.mainTabWidget = QtGui.QTabWidget(self)
        self.mainTabWidget.setTabsClosable(True)
        self.mainTabWidget.setMovable(True)
        self.setCentralWidget(self.mainTabWidget)
        self.connect(self.mainTabWidget,
                     QtCore.SIGNAL("tabCloseRequested (int)"),
                     self.on_close_tab_requested)
        self.connect(self.mainTabWidget, QtCore.SIGNAL("currentChanged (int)"),
                     self.on_tab_change)

        ##################################################
        ## Populate Central Tabs

        self.on_action_view(QtCore.QString("welcome"))
        self.on_action_view(QtCore.QString("projects"))
        self.on_action_view(QtCore.QString("api_browser"))
        #self.on_open_project(settings.app_path().absoluteFilePath("etc/example_project/example.pde"))

        self.mainTabWidget.setCurrentIndex(0)

        ##########################################################
        ## Status Bar
        ##########################################################
        self.statusBar().addPermanentWidget(QtGui.QLabel("Board:"))
        self.lblBoard = QtGui.QLabel("-- none --")
        self.statusBar().addPermanentWidget(self.lblBoard)

        ##########################################################
        ## Globally Shared Widgets
        ##########################################################

        ## Borads
        ########## TODO This maybe not required anymore as boards are project based
        self.boards = app.Boards.Boards(self)
        self.connect(self.boards, QtCore.SIGNAL("board_selected"),
                     self.on_board_selected)
        self.boards.load_current(
        )  ## THIS actually sets current as event above is not fired in constructor

        ## API
        if not settings.value("virginity"):
            self.on_settings_dialog()

        settings.restore_window("main_window", self)
        self.on_refresh_settings()
        self.load_website_menu()
コード例 #3
0
	def __init__(self, parent, main):
		QtGui.QDialog.__init__(self, parent)
		self.main = main

		self.setWindowTitle("Settings")
		self.setWindowIcon(Icon(Ico.Settings))
		self.setMinimumWidth(700)
		self.setMinimumHeight(500)

		mainLayout = QtGui.QVBoxLayout()
		self.setLayout(mainLayout)

		self.path_keys = []
		self.path_keys.append( ['path/arduino_path', 'Arduino Path', 'Directory of arduino installation'] )
		self.path_keys.append( ['path/projects_path', 'Projects',	'Directory of projects'] )
		self.path_keys.append( ['path/arduino_svn_path', 'Arduino Svn', 'Path to svn trunk/ * Optional'] )

		vBox = QtGui.QVBoxLayout()
		vBox.setSpacing(20)
		mainLayout.addLayout(vBox)


		promptButtonGroup = QtGui.QButtonGroup(self)
		self.connect(promptButtonGroup, QtCore.SIGNAL("buttonClicked(QAbstractButton *)"), self.on_prompt_button)

		browseButtonGroup = QtGui.QButtonGroup(self)
		self.connect(browseButtonGroup, QtCore.SIGNAL("buttonClicked(QAbstractButton *)"), self.on_browse_button)

		self.txt = {}
		self.lbl = {}
		#butt = {}
		#buttP = {}
		for fKey, title, description in self.path_keys:

			grp = QtGui.QGroupBox( "%s" % (title) )
			#fnt = grp.font()
			#fnt.setBold(True)
			#grp.setFont(fnt)
			vBox.addWidget(grp)
			vb = QtGui.QVBoxLayout()
			grp.setLayout(vb)
			
			lbl = QtGui.QLabel( description )
			vb.addWidget(lbl)

			pth = settings.value(fKey)
			self.txt[fKey] = QtGui.QLineEdit(pth) #setval.toString())
			self.txt[fKey].setReadOnly(True)
			vb.addWidget(self.txt[fKey])

			hBox = QtGui.QHBoxLayout()
			vb.addLayout(hBox)

			self.lbl[fKey] = QtGui.QLabel("-")
			hBox.addWidget(self.lbl[fKey])
			self.check_file(fKey)

			buttP = QtGui.QToolButton(self)
			#buttP[fKey].setIcon(dIcon(dIco.Green))
			buttP.setText("Prompt")
			buttP.setProperty("ki", QtCore.QVariant(fKey) )
			buttP.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
			hBox.addWidget(buttP)
			buttP.setVisible(False)
			promptButtonGroup.addButton(buttP)

			buttB = QtGui.QToolButton(self)
			#butt[fKey].setIcon(dIcon(dIco.Green))
			buttB.setText("Browse")
			buttB.setProperty("ki", QtCore.QVariant(fKey) )
			buttB.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
			hBox.addWidget(buttB)
			browseButtonGroup.addButton(buttB)	

		vBox.addStretch(10)

		#########################################
		## Save Cancel Buttons
		buttonBox = QtGui.QHBoxLayout()
		mainLayout.addLayout(buttonBox)
		buttonBox.addStretch(20)

		cancelButton = GenericWidgets.CancelButton(self, "Cancel")
		buttonBox.addWidget(cancelButton)

		saveButton = GenericWidgets.SaveButton(self)
		buttonBox.addWidget(saveButton)
コード例 #4
0
    def __init__(self, parent, main):
        QtGui.QDialog.__init__(self, parent)
        self.main = main

        self.setWindowTitle("Settings")
        self.setWindowIcon(Icon(Ico.Settings))
        self.setMinimumWidth(700)
        self.setMinimumHeight(500)

        mainLayout = QtGui.QVBoxLayout()
        self.setLayout(mainLayout)

        self.path_keys = []
        self.path_keys.append([
            'path/arduino_path', 'Arduino Path',
            'Directory of arduino installation'
        ])
        self.path_keys.append(
            ['path/projects_path', 'Projects', 'Directory of projects'])
        self.path_keys.append([
            'path/arduino_svn_path', 'Arduino Svn',
            'Path to svn trunk/ * Optional'
        ])

        vBox = QtGui.QVBoxLayout()
        vBox.setSpacing(20)
        mainLayout.addLayout(vBox)

        promptButtonGroup = QtGui.QButtonGroup(self)
        self.connect(promptButtonGroup,
                     QtCore.SIGNAL("buttonClicked(QAbstractButton *)"),
                     self.on_prompt_button)

        browseButtonGroup = QtGui.QButtonGroup(self)
        self.connect(browseButtonGroup,
                     QtCore.SIGNAL("buttonClicked(QAbstractButton *)"),
                     self.on_browse_button)

        self.txt = {}
        self.lbl = {}
        #butt = {}
        #buttP = {}
        for fKey, title, description in self.path_keys:

            grp = QtGui.QGroupBox("%s" % (title))
            #fnt = grp.font()
            #fnt.setBold(True)
            #grp.setFont(fnt)
            vBox.addWidget(grp)
            vb = QtGui.QVBoxLayout()
            grp.setLayout(vb)

            lbl = QtGui.QLabel(description)
            vb.addWidget(lbl)

            pth = settings.value(fKey)
            self.txt[fKey] = QtGui.QLineEdit(pth)  #setval.toString())
            self.txt[fKey].setReadOnly(True)
            vb.addWidget(self.txt[fKey])

            hBox = QtGui.QHBoxLayout()
            vb.addLayout(hBox)

            self.lbl[fKey] = QtGui.QLabel("-")
            hBox.addWidget(self.lbl[fKey])
            self.check_file(fKey)

            buttP = QtGui.QToolButton(self)
            #buttP[fKey].setIcon(dIcon(dIco.Green))
            buttP.setText("Prompt")
            buttP.setProperty("ki", QtCore.QVariant(fKey))
            buttP.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
            hBox.addWidget(buttP)
            buttP.setVisible(False)
            promptButtonGroup.addButton(buttP)

            buttB = QtGui.QToolButton(self)
            #butt[fKey].setIcon(dIcon(dIco.Green))
            buttB.setText("Browse")
            buttB.setProperty("ki", QtCore.QVariant(fKey))
            buttB.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
            hBox.addWidget(buttB)
            browseButtonGroup.addButton(buttB)

        vBox.addStretch(10)

        #########################################
        ## Save Cancel Buttons
        buttonBox = QtGui.QHBoxLayout()
        mainLayout.addLayout(buttonBox)
        buttonBox.addStretch(20)

        cancelButton = GenericWidgets.CancelButton(self, "Cancel")
        buttonBox.addWidget(cancelButton)

        saveButton = GenericWidgets.SaveButton(self)
        buttonBox.addWidget(saveButton)