Ejemplo n.º 1
0
    def __init__(self, menuProject, toolbar):
        QObject.__init__(self)

        runAction = menuProject.addAction(
            QIcon(resources.IMAGES['play']),
            self.tr("Run Project (%1)").arg(
                resources.get_shortcut("Run-project").toString(
                    QKeySequence.NativeText)))
        #        debugAction = menuProject.addAction(
        #            QIcon(resources.IMAGES['debug']),
        #            self.tr("Debug Project (%1)").arg(
        #                resources.get_shortcut("Debug").toString(
        #                    QKeySequence.NativeText)))
        runFileAction = menuProject.addAction(
            QIcon(resources.IMAGES['file-run']),
            self.tr("Run File (%1)").arg(
                resources.get_shortcut("Run-file").toString(
                    QKeySequence.NativeText)))
        stopAction = menuProject.addAction(
            QIcon(resources.IMAGES['stop']),
            self.tr("Stop (%1)").arg(
                resources.get_shortcut("Stop-execution").toString(
                    QKeySequence.NativeText)))
        menuProject.addSeparator()
        projectPropertiesAction = menuProject.addAction(
            self.tr("Open Project Properties"))
        menuProject.addSeparator()
        previewAction = menuProject.addAction(
            QIcon(resources.IMAGES['preview-web']),
            self.tr("Preview Web in Default Browser"))
        #        diagramView = menuProject.addAction(self.tr("Diagram View"))

        self.toolbar_items = {
            'run-project': runAction,
            'run-file': runFileAction,
            'stop': stopAction,
            'preview-web': previewAction
        }

        self.connect(runAction, SIGNAL("triggered()"),
                     actions.Actions().execute_project)
        self.connect(runFileAction, SIGNAL("triggered()"),
                     actions.Actions().execute_file)
        self.connect(stopAction, SIGNAL("triggered()"),
                     actions.Actions().kill_execution)
        self.connect(previewAction, SIGNAL("triggered()"),
                     actions.Actions().preview_in_browser)
        self.connect(projectPropertiesAction, SIGNAL("triggered()"),
                     actions.Actions().open_project_properties)
Ejemplo n.º 2
0
 def __init__(self):
     QObject.__init__(self)
     self._explorer = explorer_container.ExplorerContainer()
     self._action = actions.Actions()
     self.connect(self._explorer, SIGNAL("projectOpened(QString)"),
                  self._projectOpened)
     self.connect(self._action, SIGNAL("projectExecuted(QString)"),
                  self._projectExecuted)
Ejemplo n.º 3
0
 def save(self):
     """
     Save all shortcuts to settings
     """
     settings = QSettings(resources.SETTINGS_PATH, QSettings.IniFormat)
     settings.beginGroup("shortcuts")
     for index in range(self.result_widget.topLevelItemCount()):
         item = self.result_widget.topLevelItem(index)
         shortcut_keys = item.text(1)
         shortcut_name = item.text(2)
         settings.setValue(shortcut_name, shortcut_keys)
     settings.endGroup()
     actions.Actions().update_shortcuts()
Ejemplo n.º 4
0
 def save(self):
     """
     Save all shortcuts to settings
     """
     settings = IDE.ninja_settings()
     settings.beginGroup("shortcuts")
     for index in range(self.result_widget.topLevelItemCount()):
         item = self.result_widget.topLevelItem(index)
         shortcut_keys = item.text(1)
         shortcut_name = item.text(2)
         settings.setValue(shortcut_name, shortcut_keys)
     settings.endGroup()
     actions.Actions().update_shortcuts()
Ejemplo n.º 5
0
 def __init__(self):
     QObject.__init__(self)
     self._main = main_container.MainContainer()
     self._action = actions.Actions()
     self._explorer = explorer_container.ExplorerContainer()
     #Connect signals
     self.connect(self._main, SIGNAL("editorKeyPressEvent(QEvent)"),
                  self._keyPressEvent)
     self.connect(self._main, SIGNAL("beforeFileSaved(QString)"),
                  self._beforeFileSaved)
     self.connect(self._main, SIGNAL("fileSaved(QString)"), self._fileSaved)
     self.connect(self._main, SIGNAL("currentTabChanged(QString)"),
                  self._currentTabChanged)
     self.connect(self._action, SIGNAL("fileExecuted(QString)"),
                  self._fileExecuted)
     self.connect(self._main, SIGNAL("fileOpened(QString)"),
                  self._fileOpened)
Ejemplo n.º 6
0
    def __init__(self, start_server=False):
        QMainWindow.__init__(self)
        self.setWindowTitle('NINJA-IDE {Ninja-IDE Is Not Just Another IDE}')
        self.setMinimumSize(700, 500)
        #Load the size and the position of the main window
        self.load_window_geometry()

        #Start server if needed
        self.s_listener = None
        if start_server:
            self.s_listener = QLocalServer()
            self.s_listener.listen("ninja_ide")
            self.connect(self.s_listener, SIGNAL("newConnection()"),
                         self._process_connection)

        #Profile handler
        self.profile = None
        #Opacity
        self.opacity = settings.MAX_OPACITY

        #Define Actions object before the UI
        self.actions = actions.Actions()
        #StatusBar
        self.status = status_bar.StatusBar(self)
        self.status.hide()
        self.setStatusBar(self.status)
        #Main Widget - Create first than everything else
        self.central = central_widget.CentralWidget(self)
        self.load_ui(self.central)
        self.setCentralWidget(self.central)

        #ToolBar
        self.toolbar = QToolBar(self)
        self.toolbar.setToolTip(self.tr("Press and Drag to Move"))
        self.toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.addToolBar(settings.TOOLBAR_AREA, self.toolbar)
        if settings.HIDE_TOOLBAR:
            self.toolbar.hide()

        #Install Shortcuts after the UI has been initialized
        self.actions.install_shortcuts(self)
        self.connect(self.mainContainer, SIGNAL("currentTabChanged(QString)"),
                     self.actions.update_explorer)

        #Menu
        menubar = self.menuBar()
        file_ = menubar.addMenu(self.tr("&File"))
        edit = menubar.addMenu(self.tr("&Edit"))
        view = menubar.addMenu(self.tr("&View"))
        source = menubar.addMenu(self.tr("&Source"))
        project = menubar.addMenu(self.tr("&Project"))
        self.pluginsMenu = menubar.addMenu(self.tr("&Addins"))
        about = menubar.addMenu(self.tr("Abou&t"))

        #The order of the icons in the toolbar is defined by this calls
        self._menuFile = menu_file.MenuFile(file_, self.toolbar, self)
        self._menuView = menu_view.MenuView(view, self.toolbar, self)
        self._menuEdit = menu_edit.MenuEdit(edit, self.toolbar)
        self._menuSource = menu_source.MenuSource(source)
        self._menuProject = menu_project.MenuProject(project, self.toolbar)
        self._menuPlugins = menu_plugins.MenuPlugins(self.pluginsMenu)
        self._menuAbout = menu_about.MenuAbout(about)

        self.load_toolbar()

        #Plugin Manager
        services = {
            'editor': plugin_services.MainService(),
            'toolbar': plugin_services.ToolbarService(self.toolbar),
            'menuApp': plugin_services.MenuAppService(self.pluginsMenu),
            'explorer': plugin_services.ExplorerService(),
            'misc': plugin_services.MiscContainerService(self.misc)
        }
        serviceLocator = plugin_manager.ServiceLocator(services)
        self.plugin_manager = plugin_manager.PluginManager(
            resources.PLUGINS, serviceLocator)
        self.plugin_manager.discover()
        #load all plugins!
        self.plugin_manager.load_all()

        #Tray Icon
        self.trayIcon = updates.TrayIconUpdates(self)
        self.trayIcon.show()

        self.connect(self._menuFile, SIGNAL("openFile(QString)"),
                     self.mainContainer.open_file)
        self.connect(self.mainContainer, SIGNAL("fileSaved(QString)"),
                     self.show_status_message)
        self.connect(self.mainContainer,
                     SIGNAL("recentTabsModified(QStringList)"),
                     self._menuFile.update_recent_files)
Ejemplo n.º 7
0
    def __init__(self, menuSource):
        QObject.__init__(self)

        indentMoreAction = menuSource.addAction(
            QIcon(resources.IMAGES['indent-more']),
            (self.trUtf8("Indent More (%s)") %
             QKeySequence(Qt.Key_Tab).toString(QKeySequence.NativeText)))
        indentLessAction = menuSource.addAction(
            QIcon(resources.IMAGES['indent-less']),
            (self.trUtf8("Indent Less (%s)") %
             resources.get_shortcut("Indent-less").toString(
                 QKeySequence.NativeText)))
        menuSource.addSeparator()
        commentAction = menuSource.addAction(
            QIcon(resources.IMAGES['comment-code']),
            (self.trUtf8("Comment (%s)") %
             resources.get_shortcut("Comment").toString(
                 QKeySequence.NativeText)))
        unCommentAction = menuSource.addAction(
            QIcon(resources.IMAGES['uncomment-code']),
            (self.trUtf8("Uncomment (%s)") %
             resources.get_shortcut("Uncomment").toString(
                 QKeySequence.NativeText)))
        horizontalLineAction = menuSource.addAction(
            (self.trUtf8("Insert Horizontal Line (%s)") %
             resources.get_shortcut("Horizontal-line").toString(
                 QKeySequence.NativeText)))
        titleCommentAction = menuSource.addAction(
            (self.trUtf8("Insert Title Comment (%s)") %
             resources.get_shortcut("Title-comment").toString(
                 QKeySequence.NativeText)))
        countCodeLinesAction = menuSource.addAction(
            self.trUtf8("Count Code Lines"))
        menuSource.addSeparator()
        #        tellTaleAction = menuSource.addAction(
        #            self.trUtf8("Tell me a Tale of Code"))
        #        tellTaleAction.setEnabled(False)
        goToDefinitionAction = menuSource.addAction(
            QIcon(resources.IMAGES['go-to-definition']),
            (self.trUtf8("Go To Definition (%s or %s+Click)") %
             (resources.get_shortcut("Go-to-definition").toString(
                 QKeySequence.NativeText), settings.OS_KEY)))
        insertImport = menuSource.addAction(
            QIcon(resources.IMAGES['insert-import']),
            (self.trUtf8("Insert &Import (%s)") %
             resources.get_shortcut("Import").toString(
                 QKeySequence.NativeText)))
        menu_debugging = menuSource.addMenu(self.trUtf8("Debugging Tricks"))
        insertPrints = menu_debugging.addAction(
            self.trUtf8("Insert Prints per selected line."))
        insertPdb = menu_debugging.addAction(
            self.trUtf8("Insert pdb.set_trace()"))
        #        organizeImportsAction = menuSource.addAction(
        #            self.trUtf8("&Organize Imports"))
        #        removeUnusedImportsAction = menuSource.addAction(
        #            self.trUtf8("Remove Unused &Imports"))
        #        extractMethodAction = menuSource.addAction(
        #            self.trUtf8("Extract selected &code as Method"))
        menuSource.addSeparator()
        removeTrailingSpaces = menuSource.addAction(
            self.trUtf8("&Remove Trailing Spaces"))
        replaceTabsSpaces = menuSource.addAction(
            self.trUtf8("Replace Tabs With &Spaces"))
        moveUp = menuSource.addAction(
            (self.trUtf8("Move &Up (%s)") %
             resources.get_shortcut("Move-up").toString(
                 QKeySequence.NativeText)))
        moveDown = menuSource.addAction(
            (self.trUtf8("Move &Down (%s)") %
             resources.get_shortcut("Move-down").toString(
                 QKeySequence.NativeText)))
        duplicate = menuSource.addAction(
            (self.trUtf8("Duplica&te (%s)") %
             resources.get_shortcut("Duplicate").toString(
                 QKeySequence.NativeText)))
        remove = menuSource.addAction(
            (self.trUtf8("&Remove Line (%s)") %
             resources.get_shortcut("Remove-line").toString(
                 QKeySequence.NativeText)))

        self.toolbar_items = {
            'indent-more': indentMoreAction,
            'indent-less': indentLessAction,
            'comment': commentAction,
            'uncomment': unCommentAction,
            'go-to-definition': goToDefinitionAction,
            'insert-import': insertImport
        }

        self.connect(goToDefinitionAction, SIGNAL("triggered()"),
                     actions.Actions().editor_go_to_definition)
        self.connect(countCodeLinesAction, SIGNAL("triggered()"),
                     actions.Actions().count_file_code_lines)
        self.connect(insertImport, SIGNAL("triggered()"),
                     actions.Actions().import_from_everywhere)
        self.connect(indentMoreAction, SIGNAL("triggered()"),
                     actions.Actions().editor_indent_more)
        self.connect(indentLessAction, SIGNAL("triggered()"),
                     actions.Actions().editor_indent_less)
        self.connect(commentAction, SIGNAL("triggered()"),
                     actions.Actions().editor_comment)
        self.connect(unCommentAction, SIGNAL("triggered()"),
                     actions.Actions().editor_uncomment)
        self.connect(horizontalLineAction, SIGNAL("triggered()"),
                     actions.Actions().editor_insert_horizontal_line)
        self.connect(titleCommentAction, SIGNAL("triggered()"),
                     actions.Actions().editor_insert_title_comment)
        #        QObject.connect(removeUnusedImportsAction, SIGNAL("triggered()"),
        #        lambda: self._main._central.obtain_editor().remove_unused_imports())
        ##        QObject.connect(addMissingImportsAction, SIGNAL("triggered()"),
        #        lambda: self._main._central.obtain_editor().add_missing_imports())
        #        QObject.connect(organizeImportsAction, SIGNAL("triggered()"),
        #        lambda: self._main._central.obtain_editor().organize_imports())
        #        QObject.connect(extractMethodAction, SIGNAL("triggered()"),
        #        lambda: self._main._central.obtain_editor().extract_method())
        self.connect(moveUp, SIGNAL("triggered()"),
                     actions.Actions().editor_move_up)
        self.connect(moveDown, SIGNAL("triggered()"),
                     actions.Actions().editor_move_down)
        self.connect(duplicate, SIGNAL("triggered()"),
                     actions.Actions().editor_duplicate)
        self.connect(replaceTabsSpaces, SIGNAL("triggered()"),
                     actions.Actions().editor_replace_tabs_with_spaces)
        self.connect(removeTrailingSpaces, SIGNAL("triggered()"),
                     actions.Actions().editor_remove_trailing_spaces)
        self.connect(remove, SIGNAL("triggered()"),
                     actions.Actions().editor_remove_line)
        self.connect(insertPrints, SIGNAL("triggered()"),
                     actions.Actions().editor_insert_debugging_prints)
        self.connect(insertPdb, SIGNAL("triggered()"),
                     actions.Actions().editor_insert_pdb)