Exemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        QTreeWidget.__init__(self, *args, **kwargs)
        self._focusProxy = scrollProxy(self)

        self.setHeaderLabel('Behavior Trees')
        self.setAlternatingRowColors(True)
        self.setAnimated(True)
        self.header().close()

        self.highlighted = []
        self.mb = None
        self.__grab = False
        self.__grabFullRefname = ''
        self.__grabSentSignal = False
        self.__project = None
        self.__treesWidgets = dict()

        self.editingItem = None
        self.editingText = ''

        self.itemDoubleClicked.connect(self.__onDoubleClick)
        self.itemChanged.connect(self.onItemChange)
        self.currentItemChanged.connect(self.__onCurrentChanged)

        self._icons = {
            'copy': QIcon(joinPath(globals.applicationIconsPath, 'copy3.png')),
            'edit': QIcon(joinPath(globals.applicationIconsPath, 'page_edit.png')),
            'cancel': QIcon(joinPath(globals.applicationIconsPath, 'cancel-1.png')),
            'add': QIcon(joinPath(globals.applicationIconsPath, 'chart_add.png')),
            'add2': QIcon(joinPath(globals.applicationIconsPath, 'chart_add2.png'))
        }

        globals.behaviorTreeSignals.treeOpened.connect(self.__onTreeOpen)
        globals.behaviorTreeSignals.treeClosed.connect(self.__onTreeClose)
        globals.behaviorTreeSignals.treeRootChanged.connect(self.__onTreeRootChange)
Exemplo n.º 2
0
 def __init__(self, node, parent=None):
     TL_AbstractItem.__init__(self, parent)
     self.node = node
     self.path = node.path()
     self.__inactiveIcon = QIcon(joinPath(globals.applicationIconsPath, 'tree70.png'))
     self.__activeIcon = QIcon(joinPath(globals.applicationIconsPath, 'tree71.png'))
     self.update()
     self.setIcon(0, self.__inactiveIcon)
Exemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        """ Constructor
        mode - ...
        parent - QWidget
        """

        QTreeWidget.__init__(self, *args, **kwargs)
        self._focusProxy = scrollProxy(self)
        globalLanguage.languageChanged.connect(self.__onLanguageChange)

        self.setAlternatingRowColors(True)
        self.setAnimated(True)
        # self.itemExpanded.connect(self.onItemExpanded)

        self.__externalSelect = False
        self.__libraries = None
        self.__alphabet = None
        self.__libWidgets = dict()
        self.__tempLib = None
        self.__changed = False
        self.__cleaning = False
        self.__grab = False
        self.__grabbedItemLibrary = ''
        self.__grabbedItemNodename = ''
        self.__grabSentSignal = False

        self._editingItem = None
        self._editingText = ''
        self._editingInternal = False

        self.headers = ['Nodes']  # ['Available nodes','Path']
        self.setHeaderLabels(self.headers)
        self.header().close()

        self.__onLanguageChange(globalLanguage.language)

        # self.itemSelectionChanged.connect(self.__onSelectionChanged)
        self.itemChanged.connect(self.__onItemChange)
        self.currentItemChanged.connect(self.__onCurrentChanged)

        self._icons = {
            'delete': QIcon(joinPath(globals.applicationIconsPath, 'cancel-1.png')),
            'add': QIcon(joinPath(globals.applicationIconsPath, 'add-3.png')),
            'copy': QIcon(joinPath(globals.applicationIconsPath, 'copy3.png')),
            'paste': QIcon(joinPath(globals.applicationIconsPath, 'paste3.png')),
            'binary': QIcon(joinPath(globals.applicationIconsPath, 'binary-1.png')),
            'book': QIcon(joinPath(globals.applicationIconsPath, 'book_open.png')),
            'book_del': QIcon(joinPath(globals.applicationIconsPath, 'book_delete.png')),
            'book_add': QIcon(joinPath(globals.applicationIconsPath, 'book_add.png')),
            'book_edit': QIcon(joinPath(globals.applicationIconsPath, 'book_edit.png'))
        }

        globals.librarySignals.nodeAdded.connect(self.__onNodeAdd)
        globals.librarySignals.libraryExcluded.connect(self.__removeLib)
        globals.librarySignals.nodeRemoved.connect(self.__onNodeRemove)
        globals.librarySignals.libraryRenamed.connect(self.__onLibraryRename)
Exemplo n.º 4
0
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setObjectName('helpWindow')

        self._title = trStr('Behavior Studio Help', 'Справка Behavior Studio')
        QMainWindow.setWindowTitle(self, self._title.text())
        self.setWindowIcon(
            QIcon(joinPath(globals.applicationIconsPath, 'help.png')))

        # Create text window
        self.__textEdit = QTextEdit()
        self.__textEdit.setAcceptRichText(True)
        self.__textEdit.setTextInteractionFlags(Qt.TextBrowserInteraction
                                                | Qt.TextSelectableByKeyboard)
        self.__textEditFocusProxy = scrollProxy(self.__textEdit)

        # Fill table of contents
        self.__subjectHeaderLabel = trStr('Table of contents', 'Содержание')
        self.__subjectIndex = QTreeWidget()
        self.__subjectIndex.setAlternatingRowColors(True)
        self.__subjectIndex.setAnimated(True)
        self.__subjectIndex.setColumnCount(1)
        self.__subjectIndex.setHeaderLabel(self.__subjectHeaderLabel.text())
        self.__subjectFocusProxy = scrollProxy(self.__subjectIndex)

        self.__topics = []
        topItem = self.__fillContents()
        self.__subjectIndex.addTopLevelItem(topItem)

        self.__subjectIndex.currentItemChanged.connect(self.__onTopicChange)
        self.__subjectIndex.setCurrentItem(topItem)

        dock = QDockWidget()
        dock.setObjectName('helpIndex')
        dock.setAllowedAreas(Qt.LeftDockWidgetArea)
        dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
        dock.setTitleBarWidget(QWidget())
        dock.setWidget(self.__subjectIndex)
        self.addDockWidget(Qt.LeftDockWidgetArea, dock)

        dock = QDockWidget()
        dock.setObjectName('helpContents')
        dock.setAllowedAreas(Qt.RightDockWidgetArea)
        dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
        dock.setTitleBarWidget(QWidget())
        dock.setWidget(self.__textEdit)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)

        self.setStatusBar(QStatusBar())

        globalLanguage.languageChanged.connect(self.__onLanguageChange)

        self.readSettings()
Exemplo n.º 5
0
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setObjectName('helpWindow')

        self._title = trStr('Behavior Studio Help', 'Справка Behavior Studio')
        QMainWindow.setWindowTitle(self, self._title.text())
        self.setWindowIcon(QIcon(joinPath(globals.applicationIconsPath, 'help.png')))

        # Create text window
        self.__textEdit = QTextEdit()
        self.__textEdit.setAcceptRichText(True)
        self.__textEdit.setTextInteractionFlags(Qt.TextBrowserInteraction | Qt.TextSelectableByKeyboard)
        self.__textEditFocusProxy = scrollProxy(self.__textEdit)

        # Fill table of contents
        self.__subjectHeaderLabel = trStr('Table of contents', 'Содержание')
        self.__subjectIndex = QTreeWidget()
        self.__subjectIndex.setAlternatingRowColors(True)
        self.__subjectIndex.setAnimated(True)
        self.__subjectIndex.setColumnCount(1)
        self.__subjectIndex.setHeaderLabel(self.__subjectHeaderLabel.text())
        self.__subjectFocusProxy = scrollProxy(self.__subjectIndex)

        self.__topics = []
        topItem = self.__fillContents()
        self.__subjectIndex.addTopLevelItem(topItem)

        self.__subjectIndex.currentItemChanged.connect(self.__onTopicChange)
        self.__subjectIndex.setCurrentItem(topItem)

        dock = QDockWidget()
        dock.setObjectName('helpIndex')
        dock.setAllowedAreas(Qt.LeftDockWidgetArea)
        dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
        dock.setTitleBarWidget(QWidget())
        dock.setWidget(self.__subjectIndex)
        self.addDockWidget(Qt.LeftDockWidgetArea, dock)

        dock = QDockWidget()
        dock.setObjectName('helpContents')
        dock.setAllowedAreas(Qt.RightDockWidgetArea)
        dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
        dock.setTitleBarWidget(QWidget())
        dock.setWidget(self.__textEdit)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)

        self.setStatusBar(QStatusBar())

        globalLanguage.languageChanged.connect(self.__onLanguageChange)

        self.readSettings()
Exemplo n.º 6
0
def main(argv):
    # Create a Qt application
    app = QApplication(argv)
    app.setStyle('macintosh')
    setPalette(app)

    eng_package_error_message, rus_package_error_message = _checkPackages()

    if eng_package_error_message or rus_package_error_message:
        error_message = u'<font color=\"red\">Next python packages are required for running the program:</font><br/>'
        error_message += eng_package_error_message
        error_message += u'<br/><font color=\"yellow\">---------------------------------' \
                         u'-------------------------------------------------</font><br/>'
        error_message += u'<font color=\"red\">Для запуска программы необходимы следующие библиотеки для python:' \
                         u'</font><br/>'
        error_message += rus_package_error_message
        mb = QMessageBox(QMessageBox.Critical, 'Package Error', error_message,
                         QMessageBox.Ok)
        mb.exec_()
        sys.exit()

    from main_window import AppArgs, MainWindow

    start_path = os.environ.get('BEHAVIOR_STUDIO_ROOT', None)
    if start_path is None:
        globals.rootDirectory = os.getcwd()
        # globals.rootDirectory = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    else:
        globals.rootDirectory = start_path

    globals.rootDirectory = toUnixPath(os.path.normpath(globals.rootDirectory))

    # Read input args
    appArgs = AppArgs(argv)
    opts = None
    try:
        opts, args = getopt.getopt(
            argv[1:], 'hdc:', ['help', 'debug', 'config=', 'config-file='])
    except getopt.GetoptError:
        appArgs.options_error = True
        mb = QMessageBox(
            QMessageBox.Warning, 'Options Error',
            '<font color=\"red\">There are some options error!<br/>Read studio output...</font>',
            QMessageBox.Ok)
        mb.exec_()

    if not appArgs.options_error:
        for opt, arg in opts:
            if opt in ('-h', '--help'):
                infoString = 'available options:<br/>\
                -h, --help - see this hint<br/>\
                -c, --config, --config-file - set start configuration file<br/>'

                infoString += '<br/>Example:<br/><b>{0} -c config.xml</b>'.format(
                    appArgs.current_file)
                mb = QMessageBox(QMessageBox.Information, 'Options Help',
                                 infoString, QMessageBox.Ok)
                mb.exec_()
                sys.exit()
            elif opt in ('-c', '--config', '--config-file'):
                appArgs.config_file = arg
                appArgs.config_file_default = False
            elif opt in ('-d', '--debug'):
                appArgs.debug = True

    globals.applicationConfigFile = globals.processVars(
        globals.applicationConfigFile)
    appArgs.config_file = globals.processVars(appArgs.config_file)

    globals.applicationAlphabetPath = globals.processVars(
        globals.applicationAlphabetPath)
    globals.applicationShapesPath = globals.processVars(
        globals.applicationShapesPath)

    if args:
        appArgs.project_for_opening = toUnixPath(args[0])

    if not _readConfig(appArgs):  # read icons path
        mb = QMessageBox(
            QMessageBox.Critical, 'Configuration Error',
            'Can\'t load application configuration!<br/>'
            'Configuration file <b>\'{0}\'</b> does not exist.'.format(
                appArgs.config_file), QMessageBox.Ok)
        mb.exec_()
        sys.exit()

    if globals.showLogo:
        splash = QSplashScreen(
            QPixmap(joinPath(globals.applicationIconsPath, 'splash2.png')))
        splash.showMessage(
            '<h2>Behavior Studio {0}</h2>'.format(globals.strVersion),
            Qt.AlignHCenter, Qt.red)
        splash.show()
        sleep(3)
    else:
        splash = None

    # Create main window
    window = MainWindow(appArgs)
    window.show()

    if splash is not None:
        splash.finish(window)
    # window = main_window.MainStackedWindow()
    # window.hide()

    # Enter Qt application main loop
    app.exec_()
    sys.exit()
Exemplo n.º 7
0
    def __init__(self, *args, **kwargs):
        """ Constructor
        mode - ...
        parent - QWidget
        """

        QTreeWidget.__init__(self, *args, **kwargs)
        self._focusProxy = scrollProxy(self)
        globalLanguage.languageChanged.connect(self.__onLanguageChange)

        self.setAlternatingRowColors(True)
        self.setAnimated(True)
        # self.itemExpanded.connect(self.onItemExpanded)

        self.__externalSelect = False
        self.__libraries = None
        self.__alphabet = None
        self.__libWidgets = dict()
        self.__tempLib = None
        self.__changed = False
        self.__cleaning = False
        self.__grab = False
        self.__grabbedItemLibrary = ''
        self.__grabbedItemNodename = ''
        self.__grabSentSignal = False

        self._editingItem = None
        self._editingText = ''
        self._editingInternal = False

        self.headers = ['Nodes']  # ['Available nodes','Path']
        self.setHeaderLabels(self.headers)
        self.header().close()

        self.__onLanguageChange(globalLanguage.language)

        # self.itemSelectionChanged.connect(self.__onSelectionChanged)
        self.itemChanged.connect(self.__onItemChange)
        self.currentItemChanged.connect(self.__onCurrentChanged)

        self._icons = {
            'delete':
            QIcon(joinPath(globals.applicationIconsPath, 'cancel-1.png')),
            'add':
            QIcon(joinPath(globals.applicationIconsPath, 'add-3.png')),
            'copy':
            QIcon(joinPath(globals.applicationIconsPath, 'copy3.png')),
            'paste':
            QIcon(joinPath(globals.applicationIconsPath, 'paste3.png')),
            'binary':
            QIcon(joinPath(globals.applicationIconsPath, 'binary-1.png')),
            'book':
            QIcon(joinPath(globals.applicationIconsPath, 'book_open.png')),
            'book_del':
            QIcon(joinPath(globals.applicationIconsPath, 'book_delete.png')),
            'book_add':
            QIcon(joinPath(globals.applicationIconsPath, 'book_add.png')),
            'book_edit':
            QIcon(joinPath(globals.applicationIconsPath, 'book_edit.png'))
        }

        globals.librarySignals.nodeAdded.connect(self.__onNodeAdd)
        globals.librarySignals.libraryExcluded.connect(self.__removeLib)
        globals.librarySignals.nodeRemoved.connect(self.__onNodeRemove)
        globals.librarySignals.libraryRenamed.connect(self.__onLibraryRename)
Exemplo n.º 8
0
def main(argv):
    # Create a Qt application
    app = QApplication(argv)
    app.setStyle("macintosh")
    setPalette(app)

    eng_package_error_message, rus_package_error_message = _checkPackages()

    if eng_package_error_message or rus_package_error_message:
        error_message = u'<font color="red">Next python packages are required for running the program:</font><br/>'
        error_message += eng_package_error_message
        error_message += (
            u'<br/><font color="yellow">---------------------------------'
            u"-------------------------------------------------</font><br/>"
        )
        error_message += (
            u'<font color="red">Для запуска программы необходимы следующие библиотеки для python:' u"</font><br/>"
        )
        error_message += rus_package_error_message
        mb = QMessageBox(QMessageBox.Critical, "Package Error", error_message, QMessageBox.Ok)
        mb.exec_()
        sys.exit()

    from main_window import AppArgs, MainWindow

    start_path = os.environ.get("BEHAVIOR_STUDIO_ROOT", None)
    if start_path is None:
        globals.rootDirectory = os.getcwd()
        # globals.rootDirectory = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    else:
        globals.rootDirectory = start_path

    globals.rootDirectory = toUnixPath(os.path.normpath(globals.rootDirectory))

    # Read input args
    appArgs = AppArgs(argv)
    opts = None
    try:
        opts, args = getopt.getopt(argv[1:], "hdc:", ["help", "debug", "config=", "config-file="])
    except getopt.GetoptError:
        appArgs.options_error = True
        mb = QMessageBox(
            QMessageBox.Warning,
            "Options Error",
            '<font color="red">There are some options error!<br/>Read studio output...</font>',
            QMessageBox.Ok,
        )
        mb.exec_()

    if not appArgs.options_error:
        for opt, arg in opts:
            if opt in ("-h", "--help"):
                infoString = "available options:<br/>\
                -h, --help - see this hint<br/>\
                -c, --config, --config-file - set start configuration file<br/>"
                infoString += "<br/>Example:<br/><b>{0} -c config.xml</b>".format(appArgs.current_file)
                mb = QMessageBox(QMessageBox.Information, "Options Help", infoString, QMessageBox.Ok)
                mb.exec_()
                sys.exit()
            elif opt in ("-c", "--config", "--config-file"):
                appArgs.config_file = arg
                appArgs.config_file_default = False
            elif opt in ("-d", "--debug"):
                appArgs.debug = True

    globals.applicationConfigFile = globals.processVars(globals.applicationConfigFile)
    appArgs.config_file = globals.processVars(appArgs.config_file)

    globals.applicationAlphabetPath = globals.processVars(globals.applicationAlphabetPath)
    globals.applicationShapesPath = globals.processVars(globals.applicationShapesPath)

    if args:
        appArgs.project_for_opening = toUnixPath(args[0])

    if not _readConfig(appArgs):  # read icons path
        mb = QMessageBox(
            QMessageBox.Critical,
            "Configuration Error",
            "Can't load application configuration!<br/>"
            "Configuration file <b>'{0}'</b> does not exist.".format(appArgs.config_file),
            QMessageBox.Ok,
        )
        mb.exec_()
        sys.exit()

    if globals.showLogo:
        splash = QSplashScreen(QPixmap(joinPath(globals.applicationIconsPath, "splash2.png")))
        splash.showMessage("<h2>Behavior Studio {0}</h2>".format(globals.strVersion), Qt.AlignHCenter, Qt.red)
        splash.show()
        sleep(3)
    else:
        splash = None

    # Create main window
    window = MainWindow(appArgs)
    window.show()

    if splash is not None:
        splash.finish(window)
    # window = main_window.MainStackedWindow()
    # window.hide()

    # Enter Qt application main loop
    app.exec_()
    sys.exit()
Exemplo n.º 9
0
def main(argv):
    # Create a Qt application
    app = QApplication(argv)
    app.setStyle('macintosh')
    setPalette(app)

    eng_package_error_message, rus_package_error_message = _checkPackages()

    if eng_package_error_message or rus_package_error_message:
        error_message = u'<font color=\"red\">Next python packages are required for running the program:</font><br/>'
        error_message += eng_package_error_message
        error_message += u'<br/><font color=\"yellow\">---------------------------------' \
                         u'-------------------------------------------------</font><br/>'
        error_message += u'<font color=\"red\">Для запуска программы необходимы следующие библиотеки для python:' \
                         u'</font><br/>'
        error_message += rus_package_error_message
        mb = QMessageBox(QMessageBox.Critical, 'Package Error', error_message, QMessageBox.Ok)
        mb.exec_()
        sys.exit()

    from main_window import AppArgs, MainWindow

    # Read input args
    appArgs = AppArgs(argv)
    opts = None
    try:
        opts, args = getopt.getopt(argv[1:], 'hdc:', ['help', 'debug', 'config=', 'config-file='])
    except getopt.GetoptError:
        appArgs.options_error = True
        mb = QMessageBox(QMessageBox.Warning, 'Options Error',
                         '<font color=\"red\">There are some options error!<br/>Read studio output...</font>',
                         QMessageBox.Ok)
        mb.exec_()

    if not appArgs.options_error:
        for opt, arg in opts:
            if opt in ('-h', '--help'):
                infoString = 'available options:<br/>\
                -h, --help - see this hint<br/>\
                -c, --config, --config-file - set start configuration file<br/>'
                infoString += '<br/>Example:<br/><b>{0} -c config.xml</b>'.format(appArgs.current_file)
                mb = QMessageBox(QMessageBox.Information, 'Options Help', infoString, QMessageBox.Ok)
                mb.exec_()
                sys.exit()
            elif opt in ('-c', '--config', '--config-file'):
                appArgs.config_file = arg
                appArgs.config_file_default = False
            elif opt in ('-d', '--debug'):
                appArgs.debug = True

    if not _readConfig(appArgs):  # read icons path
        mb = QMessageBox(QMessageBox.Critical, 'Configuration Error',
                         'Can\'t load application configuration!<br/>'
                         'Configuration file <b>\'{0}\'</b> does not exist.'.format(appArgs.config_file),
                         QMessageBox.Ok)
        mb.exec_()
        sys.exit()

    if globals.showLogo:
        splash = QSplashScreen(QPixmap(joinPath(globals.applicationIconsPath, 'splash2.png')))
        splash.showMessage('<h2>Behavior Studio {0}</h2>'.format(globals.strVersion), Qt.AlignHCenter, Qt.red)
        splash.show()
        sleep(3)
    else:
        splash = None

    # Create main window
    window = MainWindow(appArgs)
    window.show()

    if splash is not None:
        splash.finish(window)
    # window = main_window.MainStackedWindow()
    # window.hide()

    # Enter Qt application main loop
    app.exec_()
    sys.exit()