Esempio n. 1
0
    def __init__(self):
        SavedObject.__init__(self)
        QtWidgets.QGraphicsObject.__init__(self)
        # Common movement-related elements
        self._current_position = (random.random() * 150) - 75, (random.random() * 150) - 75
        self._dragged = False
        self.trees = set() # each Movable belongs to some trees, either formed by Movable
        # alone or set of Movables. Tree has abstract position adjustment information.

        # MOVE_TO -elements
        self.target_position = 0, 0
        self.adjustment = 0, 0
        self._move_counter = 0
        self._use_easing = True
        self._step = None
        self.unmoved = True  # flag to distinguish newly created nodes
        self.after_move_function = None
        self.use_adjustment = False
        self._high_priority_move = False
        self.locked_to_node = None
        # PHYSICS -elements
        self.locked = False
        self.physics_x = False
        self.physics_y = False
        self.repulsion = 0.2
        # Other
        self._visible_by_logic = True
        self._fade_anim = None
        self.is_fading_in = False
        self.is_fading_out = False
        self._hovering = False
Esempio n. 2
0
    def __init__(self):
        SavedObject.__init__(self)
        QtWidgets.QGraphicsObject.__init__(self)
        # Common movement-related elements
        self._current_position = (random.random() *
                                  150) - 75, (random.random() * 150) - 75
        self._dragged = False
        self.trees = set(
        )  # each Movable belongs to some trees, either formed by Movable
        # alone or set of Movables. Tree has abstract position adjustment information.

        # MOVE_TO -elements
        self.target_position = 0, 0
        self.adjustment = 0, 0
        self._start_position = 0, 0
        self._move_frames = 0
        self._move_counter = 0
        self._use_easing = True
        self._distance = None
        self.unmoved = True  # flag to distinguish newly created nodes
        self.after_move_function = None
        self.use_adjustment = False
        self._high_priority_move = False
        self.locked_to_node = None
        # PHYSICS -elements
        self.locked = False
        self.physics_x = False
        self.physics_y = False
        self.repulsion = 0.2
        # Other
        self._visible_by_logic = True
        self._fade_anim = None
        self.is_fading_in = False
        self.is_fading_out = False
        self._hovering = False
Esempio n. 3
0
 def __init__(self, label='', parts=None, uid='', features=None, **kw):
     """ BaseConstituent is a default constituent used in syntax.
     It is Savable, which means that the actual values are stored in separate object that is
     easily dumped to file. Extending this needs to take account if new elements should also
     be treated as savable, e.g. put them into. and make necessary property and setter.
      """
     SavedObject.__init__(self, **kw)
     self.label = label
     self.features = features or []
     self.parts = parts or []
Esempio n. 4
0
 def __init__(self):
     SavedObject.__init__(self)
     self.Constituent = classes.get('Constituent')
     self.Feature = classes.get('Feature')
     self.trees = []
     self.constituents = {}
     self.features = {}
     self.lexicon = {}
     self.rules = {}
     self.sentence = ''
     self.parser = None
     self.syntax_display_mode = 2
     for key, value in self.options.items():
         self.rules[key] = value.get('default')
Esempio n. 5
0
 def __init__(self):
     SavedObject.__init__(self)
     self.Constituent = classes.get('Constituent')
     self.Feature = classes.get('Feature')
     self.trees = []
     self.constituents = {}
     self.features = {}
     self.lexicon = {}
     self.rules = {}
     self.sentence = ''
     self.parser = None
     self.syntax_display_mode = 2
     for key, value in self.options.items():
         self.rules[key] = value.get('default')
Esempio n. 6
0
 def __init__(self, label='', parts=None, uid='', features=None, head=None, **kw):
     """ BaseConstituent is a default constituent used in syntax.
     It is Savable, which means that the actual values are stored in separate object that is
     easily dumped to file. Extending this needs to take account if new elements should also
     be treated as savable, e.g. put them into. and make necessary property and setter.
      """
     SavedObject.__init__(self, **kw)
     self.label = label
     if head:
         self.heads = [head]
     else:
         self.heads = []
     self.features = features or []
     self.parts = parts or []
Esempio n. 7
0
    def __init__(self, forest=None, start=None, end=None, edge_type='', alpha=None):
        """
        :param Node start:
        :param Node end:
        :param string edge_type:
        :param alpha: optional data for e.g. referring to third object
        """
        FadeInOut.__init__(self)
        SavedObject.__init__(self)
        QtWidgets.QGraphicsObject.__init__(self)
        self.forest = forest
        self.settings = EdgeSettings(self)
        self.edge_type = edge_type
        self.start = start
        self.start_links_to = None
        self.end_links_to = None
        self.end = end
        self.alpha = alpha
        self.start_symbol = 0
        self.curve_adjustment = None  # user's adjustments. contains (dist, angle) tuples.
        self.path = EdgePath(self)
        self.selected = False
        self._nodes_overlap = False
        self.k_tooltip = ''
        self.k_action = None
        self._is_moving = False

        self._local_drag_handle_position = None

        # ## Adjustable values, defaults to ForestSettings if None for this
        # element
        # based on the relation style

        # self.center_point = (0, 0, 0)

        # ## Derivative elements
        self._indirect_hovering = False
        self._direct_hovering = False
        self._start_node_moving = False
        self._end_node_moving = False
        self.setZValue(15)
        self.crossed_out_flag = False
        self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
        self.setAcceptHoverEvents(True)
        self.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self._visible_by_logic = False
        self.cached_edge_start_index = (0, 1)
        self.cached_edge_end_index = (0, 1)
        self.hide()
Esempio n. 8
0
 def __init__(self):
     SavedObject.__init__(self)
     self.Constituent = classes.Constituent
     self.Feature = classes.Feature
     self.input_tree = []
     self.trees = []
     self.constituents = {}
     self.features = {}
     self.lexicon = {}
     self.rules = {}
     self.input_text = ''
     self.parser = None
     self.display_mode = 0
     self.current_mode = 0
     for key, value in self.options.items():
         self.rules[key] = value.get('default')
Esempio n. 9
0
 def __init__(self, label='', parts=None, uid='', features=None, lexical_heads=None, adjunct=False, set_hosts=True,
              **kw):
     """ BaseConstituent is a default constituent used in syntax.
     It is Savable, which means that the actual values are stored in separate object that is
     easily dumped to file. Extending this needs to take account if new elements should also
     be treated as savable, e.g. put them into. and make necessary property and setter.
      """
     SavedObject.__init__(self, **kw)
     self.label = label
     self.features = features or []
     self.parts = parts or []
     self.inherited_features = features or []
     self.checked_features = []
     self.lexical_heads = list(lexical_heads) if lexical_heads else [self]
     self.adjunct = adjunct
     self.head = None
     self.gloss = ''
     if set_hosts:
         for feature in self.features:
             feature.host = self
Esempio n. 10
0
 def __init__(self, selection=None, persistent=True):
     SavedObject.__init__(self)
     QtWidgets.QGraphicsObject.__init__(self)
     # -- Fake as UIItem to make selection groups part of UI:
     self.ui_key = next_available_ui_key()
     self.ui_type = self.__class__.__name__
     self.ui_manager = ctrl.ui
     self.role = None
     self.host = None
     self.watchlist = []
     self.is_fading_in = False
     self.is_fading_out = False
     # -- end faking as UIItem
     self.selection = []
     self.selection_with_children = []
     self.persistent = persistent
     self._skip_this = not persistent
     self._selected = False
     self.points = []
     self.center_point = None
     self.outline = False
     self.fill = True
     self.color_key = ''
     self.color = None
     self.color_tr_tr = None
     self.purpose = None
     self.path = None
     self.label_item = None
     self.label_data = {}
     self.include_children = False
     self.allow_overlap = True
     self._br = None
     #self.setFlag(QtWidgets.QGraphicsObject.ItemIsMovable)
     self.setFlag(QtWidgets.QGraphicsObject.ItemIsSelectable)
     if selection:
         self.update_selection(selection)
     self.update_shape()
     self.update_colors()
Esempio n. 11
0
 def __init__(self, selection=None, persistent=True):
     SavedObject.__init__(self)
     QtWidgets.QGraphicsObject.__init__(self)
     # -- Fake as UIItem to make selection groups part of UI:
     self.ui_key = next_available_ui_key()
     self.ui_type = self.__class__.__name__
     self.ui_manager = ctrl.ui
     self.role = None
     self.host = None
     self.watchlist = []
     self.is_fading_in = False
     self.is_fading_out = False
     # -- end faking as UIItem
     self.selection = []
     self.selection_with_children = []
     self.persistent = persistent
     self._skip_this = not persistent
     self._selected = False
     self.points = []
     self.center_point = None
     self.outline = False
     self.fill = True
     self.color_key = ''
     self.color = None
     self.color_tr_tr = None
     self.purpose = None
     self.path = None
     self.label_item = None
     self.label_data = {}
     self.include_children = False
     self.allow_overlap = True
     self._br = None
     #self.setFlag(QtWidgets.QGraphicsObject.ItemIsMovable)
     self.setFlag(QtWidgets.QGraphicsObject.ItemIsSelectable)
     if selection:
         self.update_selection(selection)
     self.update_shape()
     self.update_colors()
Esempio n. 12
0
    def __init__(self, forest=None):
        FadeInOut.__init__(self)
        SavedObject.__init__(self)
        QtWidgets.QGraphicsObject.__init__(self)

        # Common movement-related elements
        self._current_position = (random.random() * 150) - 75, (random.random() * 150) - 75
        self._dragged = False

        self.k_tooltip = ''
        self.k_action = None
        # MOVE_TO -elements
        self.target_position = 0, 0
        self.adjustment = 0, 0
        self._start_position = 0, 0
        self._move_frames = 0
        self._move_counter = 0
        self._is_moving = False
        self._use_easing = True
        self._distance = None
        self.unmoved = True  # flag to distinguish newly created nodes
        self.use_adjustment = False
        self._high_priority_move = False
        self.locked_to_node = None
        # PHYSICS -elements
        self.locked = False
        self.physics_x = False
        self.physics_y = False
        self.repulsion = 0.2
        # Other
        self._visible_by_logic = True
        self._fade_anim = None
        self.is_fading_in = False
        self.is_fading_out = False
        self._direct_hovering = False
        self._indirect_hovering = False
        self.setZValue(self.preferred_z_value())
        self.forest = forest
Esempio n. 13
0
    def __init__(self, kataja_app, no_prefs=False, reset_prefs=False):
        """ KatajaMain initializes all its children and connects itself to
        be the main window of the given application. Receives launch arguments:
        :param no_prefs: bool, don't load or save preferences
        :param reset_prefs: bool, don't attempt to load preferences, use defaults instead

        """
        QtWidgets.QMainWindow.__init__(self)
        kataja_app.processEvents()
        SavedObject.__init__(self)
        self.use_tooltips = True
        self.available_plugins = {}
        self.setDockOptions(QtWidgets.QMainWindow.AnimatedDocks)
        self.setCorner(QtCore.Qt.TopLeftCorner, QtCore.Qt.LeftDockWidgetArea)
        self.setCorner(QtCore.Qt.TopRightCorner, QtCore.Qt.RightDockWidgetArea)
        self.setCorner(QtCore.Qt.BottomLeftCorner,
                       QtCore.Qt.LeftDockWidgetArea)
        self.setCorner(QtCore.Qt.BottomRightCorner,
                       QtCore.Qt.RightDockWidgetArea)
        x, y, w, h = (50, 50, 1152, 720)
        self.setMinimumSize(w, h)
        self.app = kataja_app
        self.save_prefs = not no_prefs
        self.forest = None
        self.fontdb = QtGui.QFontDatabase()
        self.color_manager = PaletteManager()
        self.settings_manager = Settings()
        self.forest_keepers = []
        self.forest_keeper = None
        ctrl.late_init(self)
        classes.late_init()
        prefs.import_node_classes(classes)
        self.syntax = SyntaxConnection()
        prefs.load_preferences(disable=reset_prefs or no_prefs)
        qt_prefs.late_init(running_environment, prefs, self.fontdb, log)
        self.settings_manager.set_prefs(prefs)
        self.color_manager.update_custom_colors()
        self.find_plugins(prefs.plugins_path
                          or running_environment.plugins_path)
        self.setWindowIcon(qt_prefs.kataja_icon)
        self.graph_scene = GraphScene(main=self, graph_view=None)
        self.graph_view = GraphView(main=self, graph_scene=self.graph_scene)
        self.graph_scene.graph_view = self.graph_view
        self.ui_manager = UIManager(self)
        self.settings_manager.set_ui_manager(self.ui_manager)
        self.ui_manager.populate_ui_elements()
        # make empty forest and forest keeper so initialisations don't fail because of their absence
        self.visualizations = VISUALIZATIONS
        self.init_forest_keepers()
        self.settings_manager.set_document(self.forest_keeper)
        kataja_app.setPalette(self.color_manager.get_qt_palette())
        self.forest = Forest()
        self.settings_manager.set_forest(self.forest)
        self.change_color_theme(prefs.color_theme, force=True)
        self.update_style_sheet()
        self.graph_scene.late_init()
        self.setCentralWidget(self.graph_view)
        self.setGeometry(x, y, w, h)
        self.setWindowTitle(self.tr("Kataja"))
        self.print_started = False
        self.show()
        self.raise_()
        kataja_app.processEvents()
        self.activateWindow()
        self.status_bar = self.statusBar()
        self.install_plugins()
        self.load_initial_treeset()
        log.info('Welcome to Kataja! (h) for help')
        #ctrl.call_watchers(self.forest_keeper, 'forest_changed')
        # toolbar = QtWidgets.QToolBar()
        # toolbar.setFixedSize(480, 40)
        # self.addToolBar(toolbar)
        gestures = [
            QtCore.Qt.TapGesture, QtCore.Qt.TapAndHoldGesture,
            QtCore.Qt.PanGesture, QtCore.Qt.PinchGesture,
            QtCore.Qt.SwipeGesture, QtCore.Qt.CustomGesture
        ]
        #for gesture in gestures:
        #    self.grabGesture(gesture)
        self.action_finished(undoable=False)
        self.forest.undo_manager.flush_pile()
Esempio n. 14
0
    def __init__(self, kataja_app, no_prefs=False, reset_prefs=False):
        """ KatajaMain initializes all its children and connects itself to
        be the main window of the given application. Receives launch arguments:
        :param no_prefs: bool, don't load or save preferences
        :param reset_prefs: bool, don't attempt to load preferences, use defaults instead

        """
        QtWidgets.QMainWindow.__init__(self)
        kataja_app.processEvents()
        SavedObject.__init__(self)
        self.use_tooltips = True
        self.available_plugins = {}
        self.setDockOptions(QtWidgets.QMainWindow.AnimatedDocks)
        self.setCorner(QtCore.Qt.TopLeftCorner, QtCore.Qt.LeftDockWidgetArea)
        self.setCorner(QtCore.Qt.TopRightCorner, QtCore.Qt.RightDockWidgetArea)
        self.setCorner(QtCore.Qt.BottomLeftCorner, QtCore.Qt.LeftDockWidgetArea)
        self.setCorner(QtCore.Qt.BottomRightCorner,
                       QtCore.Qt.RightDockWidgetArea)
        x, y, w, h = (50, 50, 1152, 720)
        self.setMinimumSize(w, h)
        self.app = kataja_app
        self.save_prefs = not no_prefs
        self.forest = None
        self.fontdb = QtGui.QFontDatabase()
        self.color_manager = PaletteManager()
        self.settings_manager = Settings()
        self.forest_keepers = []
        self.forest_keeper = None
        ctrl.late_init(self)
        classes.late_init()
        prefs.import_node_classes(classes)
        self.syntax = SyntaxConnection()
        prefs.load_preferences(disable=reset_prefs or no_prefs)
        qt_prefs.late_init(running_environment, prefs, self.fontdb, log)
        self.settings_manager.set_prefs(prefs)
        self.color_manager.update_custom_colors()
        self.find_plugins(prefs.plugins_path or running_environment.plugins_path)
        self.setWindowIcon(qt_prefs.kataja_icon)
        self.graph_scene = GraphScene(main=self, graph_view=None)
        self.graph_view = GraphView(main=self, graph_scene=self.graph_scene)
        self.graph_scene.graph_view = self.graph_view
        ctrl.add_watcher(self, 'ui_font_changed')
        self.ui_manager = UIManager(self)
        self.settings_manager.set_ui_manager(self.ui_manager)
        self.ui_manager.populate_ui_elements()
        # make empty forest and forest keeper so initialisations don't fail because of their absence
        self.visualizations = VISUALIZATIONS
        self.init_forest_keepers()
        self.settings_manager.set_document(self.forest_keeper)
        kataja_app.setPalette(self.color_manager.get_qt_palette())
        self.forest = Forest()
        self.settings_manager.set_forest(self.forest)
        self.change_color_theme(prefs.color_theme, force=True)
        self.update_style_sheet()
        self.graph_scene.late_init()
        self.setCentralWidget(self.graph_view)
        self.setGeometry(x, y, w, h)
        self.setWindowTitle(self.tr("Kataja"))
        self.print_started = False
        self.show()
        self.raise_()
        kataja_app.processEvents()
        self.activateWindow()
        self.status_bar = self.statusBar()
        self.install_plugins()
        self.load_initial_treeset()
        log.info('Welcome to Kataja! (h) for help')
        #ctrl.call_watchers(self.forest_keeper, 'forest_changed')
        # toolbar = QtWidgets.QToolBar()
        # toolbar.setFixedSize(480, 40)
        # self.addToolBar(toolbar)
        gestures = [QtCore.Qt.TapGesture, QtCore.Qt.TapAndHoldGesture, QtCore.Qt.PanGesture,
                    QtCore.Qt.PinchGesture, QtCore.Qt.SwipeGesture, QtCore.Qt.CustomGesture]
        #for gesture in gestures:
        #    self.grabGesture(gesture)
        self.action_finished(undoable=False)
        self.forest.undo_manager.flush_pile()