Exemple #1
0
	def do_delete_comment(self, event):
		delete_comment = wx.MessageBox(
			_("Are you sure you want to delete this comment?"),
			_("Delete Comment"), 
			wx.YES_NO,
			parent=None)

		if delete_comment == wx.YES:
			self.hide_tooltip()
			self.passage_entry.parent.remove_passage(self.passage_entry)
			get_primary_passage_list_manager().save()
def comment_on_passage(parent, passage):
	tag_passage(
		parent,
		passage,
		get_primary_passage_list_manager().comments_special_topic,
		title=_("Comment on %s"),
	)
Exemple #3
0
def edit_comment(parent, passage_entry):
    tag_passage(
        parent,
        passage_entry,
        get_primary_passage_list_manager().comments_special_topic,
        title=_("Comment on %s"),
    )
Exemple #4
0
def comment_on_passage(parent, passage):
    tag_passage(
        parent,
        passage,
        get_primary_passage_list_manager().comments_special_topic,
        title=_("Comment on %s"),
    )
	def __init__(self, parent):
		super(ManageTopicsFrame, self).__init__(parent)
		attach_unknown_control("topic_tree", lambda parent: TopicTree(self, parent), self)
		attach_unknown_control("topic_selector", TopicSelector, self)
		attach_unknown_control("passage_list_ctrl", lambda parent: PassageListCtrl(self, parent), self)
		self.SetIcons(guiconfig.icons)
		self._manager = get_primary_passage_list_manager()
		self._operations_context = OperationsContext(self)
		self._operations_manager = ManageTopicsOperations(
				passage_list_manager=self._manager,
				context=self._operations_context
			)
		self._operations_manager.undo_available_changed_observers \
				+= self._undo_available_changed
		self._operations_manager.paste_available_changed_observers \
				+= self._paste_available_changed
		self._paste_available_changed()
		self._undo_available_changed()
		self._selected_topic = None
		# The topic that currently has passages displayed in the passage list
		# control.
		self._passage_list_topic = None
		self.is_passage_selected = False
		self.selected_passages = []
		self.topic_selector.topic_changed_observers.add_observer(self._set_selected_topic)
		self._setup_item_details_panel()
		self._init_passage_list_ctrl_headers()
		self._setup_passage_list_ctrl()
		self._setup_topic_tree()
		self._bind_events()
		self.Size = (725, 590)
		self.passage_list_splitter.SashGravity = 1.0
		wx.CallAfter(self.passage_list_splitter.SetSashPosition, 340)
		self._set_selected_topic(self._manager)
Exemple #6
0
 def __init__(self, parent, passage_entry, show_topic, title,
              is_new_passage):
     super(TagPassageDialog, self).__init__(parent)
     self._show_topic = show_topic
     self.is_new_passage = is_new_passage
     attach_unknown_control("topic_selector", TopicSelector, self)
     if show_topic:
         self.topic_selector.selected_topic = passage_list.settings.last_selected_topic
         wx.CallAfter(self.topic_selector.SetFocus)
     else:
         flex_sizer = self.Sizer.Children[0].Sizer
         flex_sizer.Show(2, False)
         flex_sizer.Show(3, False)
         flex_sizer.Layout()
         self.comment_text.SetFocus()
     self._passage_entry = passage_entry
     self._manager = get_primary_passage_list_manager()
     self._bindEvents()
     self.passage_verse_key = self._passage_entry.passage
     passage_str = self.passage_verse_key.GetBestRange(userOutput=True)
     self.passage_text.Value = passage_str
     self.comment_text.Value = self._passage_entry.comment
     if title is None:
         title = _("Tag %s")
     self.Title = title % passage_str
     self.Size = (355, 282)
	def __init__(self, parent, passage_entry, show_topic, title, is_new_passage):
		super(TagPassageDialog, self).__init__(parent)
		self._show_topic = show_topic
		self.is_new_passage = is_new_passage
		attach_unknown_control("topic_selector", TopicSelector, self)
		if show_topic:
			self.topic_selector.selected_topic = passage_list.settings.last_selected_topic
			wx.CallAfter(self.topic_selector.SetFocus)
		else:
			flex_sizer = self.Sizer.Children[0].Sizer
			flex_sizer.Show(2, False)
			flex_sizer.Show(3, False)
			flex_sizer.Layout()
			self.comment_text.SetFocus()
		self._passage_entry = passage_entry
		self._manager = get_primary_passage_list_manager()
		self._bindEvents()
		self.passage_verse_key = self._passage_entry.passage
		passage_str = self.passage_verse_key.GetBestRange(userOutput=True)
		self.passage_text.Value = passage_str
		self.comment_text.Value = self._passage_entry.comment
		if title is None:
			title = _("Tag %s")
		self.Title = title % passage_str
		self.Size = (355, 282)
def edit_comment(parent, passage_entry):
	tag_passage(
		parent,
		passage_entry,
		get_primary_passage_list_manager().comments_special_topic,
		title=_("Comment on %s"),
	)
Exemple #9
0
	def insert_tags(self, osis_ref, verse_key, exclude_topic_tag):
		"""Generates and returns all the passage tags for the given verse."""
		manager = passage_list.get_primary_passage_list_manager()
		passage_tags = "".join(
			self.get_passage_topic_div(passage)
			for passage in manager.get_all_passage_entries_for_verse(verse_key)
			if (self.get_tag_type_to_show(passage, exclude_topic_tag) == "passage_tag")
		)
		return u'<span class="passage_tag_container" osisRef="%s">%s</span>' % (osis_ref, passage_tags)
Exemple #10
0
	def check_if_topic_management_is_available(self):
		from passage_list import get_primary_passage_list_manager
		is_available = not get_primary_passage_list_manager().has_error_on_loading

		if not is_available:
			wx.MessageBox(_(u"Topic management is currently not available due to an error."),
				_(u"Error in Topic Management"), wx.OK | wx.ICON_ERROR, self)

		return is_available
Exemple #11
0
 def insert_tags(self, osis_ref, verse_key, exclude_topic_tag):
     """Generates and returns all the passage tags for the given verse."""
     manager = passage_list.get_primary_passage_list_manager()
     passage_tags = "".join(
         self.get_passage_topic_div(passage)
         for passage in manager.get_all_passage_entries_for_verse(verse_key)
         if (self.get_tag_type_to_show(passage, exclude_topic_tag) ==
             "passage_tag"))
     return u'<span class="passage_tag_container" osisRef="%s">%s</span>' % (
         osis_ref, passage_tags)
Exemple #12
0
 def __init__(self, parent):
     super(TopicSelector, self).__init__(parent, style=wx.TE_PROCESS_ENTER)
     self._manager = get_primary_passage_list_manager()
     self._dropdown = wx.PopupWindow(self)
     self._setup_list()
     self._selected_topic = None
     self.topic_changed_observers = ObserverList()
     # Called when return is pressed and the drop down is not shown.
     self.return_pressed_observers = ObserverList()
     self._bind_events()
     self.selected_topic = self._manager
Exemple #13
0
	def get_tag_type_to_show(self, passage, exclude_topic_tag=None):
		topic = passage.parent
		if (topic is not None
				and topic.parent is not None
				and topic is not exclude_topic_tag):
			if topic.can_display_tag:
				return "passage_tag"
			elif topic is passage_list.get_primary_passage_list_manager().comments_special_topic:
				return "usercomment"

		return None
Exemple #14
0
    def get_tag_type_to_show(self, passage, exclude_topic_tag=None):
        topic = passage.parent
        if (topic is not None and topic.parent is not None
                and topic is not exclude_topic_tag):
            if topic.can_display_tag:
                return "passage_tag"
            elif topic is passage_list.get_primary_passage_list_manager(
            ).comments_special_topic:
                return "usercomment"

        return None
Exemple #15
0
	def __init__(self, parent):
		super(TopicSelector, self).__init__(parent, style=wx.TE_PROCESS_ENTER)
		self._manager = get_primary_passage_list_manager()
		self._dropdown = wx.PopupWindow(self)
		self._setup_list()
		self._selected_topic = None
		self.topic_changed_observers = ObserverList() 
		# Called when return is pressed and the drop down is not shown.
		self.return_pressed_observers = ObserverList()
		self._bind_events()
		self.selected_topic = self._manager
Exemple #16
0
    def get_user_comments(self, osis_ref, verse_key):
        if not isinstance(self, Bible):
            return u""

        manager = passage_list.get_primary_passage_list_manager()

        comments = u"".join(
            self.get_user_comment_div(passage_entry) for passage_entry in
            manager.get_all_passage_entries_for_verse(verse_key)
            if (self.get_tag_type_to_show(passage_entry) == "usercomment"))
        return u'<span class="usercomment_container" osisRef="%s">%s</span>' % (
            osis_ref, comments)
Exemple #17
0
    def check_if_topic_management_is_available(self):
        from passage_list import get_primary_passage_list_manager
        is_available = not get_primary_passage_list_manager(
        ).has_error_on_loading

        if not is_available:
            wx.MessageBox(
                _(u"Topic management is currently not available due to an error."
                  ), _(u"Error in Topic Management"), wx.OK | wx.ICON_ERROR,
                self)

        return is_available
Exemple #18
0
	def get_user_comments(self, osis_ref, verse_key):
		if not isinstance(self, Bible):
			return u""

		manager = passage_list.get_primary_passage_list_manager()

		comments = u"".join(
			self.get_user_comment_div(passage_entry)
			for passage_entry in manager.get_all_passage_entries_for_verse(verse_key)
			if (self.get_tag_type_to_show(passage_entry) == "usercomment")
		)
		return u'<span class="usercomment_container" osisRef="%s">%s</span>' % (osis_ref, comments)
def tag_passage(parent, passage, topic_to_apply=None, title=None):
	"""Allows the user to tag the given passage.

	This shows the passage tagging dialog (modally), and allows the user to
	act on it.

	If the topic that the user enters does not exist, then a new topic will
	be created.
	"""
	editing_comment = isinstance(passage, PassageEntry)
	if editing_comment:
		passage_entry = passage
	else:
		passage_entry = PassageEntry(passage)
	dialog = TagPassageDialog(
		parent,
		passage_entry,
		show_topic=(topic_to_apply is None),
		title=title,
		is_new_passage=not editing_comment,
	)
	if dialog.ShowModal() == wx.ID_OK:
		passage_entry.comment = dialog.comment_text.GetValue()
		if topic_to_apply is None:
			dialog.topic_selector.maybe_create_topic_from_text()
			topic = dialog.topic_selector.selected_topic
			passage_list.settings.last_selected_topic = topic
		else:
			topic = topic_to_apply

		if not editing_comment:
			topic.add_passage(passage_entry)

		get_primary_passage_list_manager().save()

	dialog.Destroy()
Exemple #20
0
def tag_passage(parent, passage, topic_to_apply=None, title=None):
    """Allows the user to tag the given passage.

	This shows the passage tagging dialog (modally), and allows the user to
	act on it.

	If the topic that the user enters does not exist, then a new topic will
	be created.
	"""
    editing_comment = isinstance(passage, PassageEntry)
    if editing_comment:
        passage_entry = passage
    else:
        passage_entry = PassageEntry(passage)
    dialog = TagPassageDialog(
        parent,
        passage_entry,
        show_topic=(topic_to_apply is None),
        title=title,
        is_new_passage=not editing_comment,
    )
    if dialog.ShowModal() == wx.ID_OK:
        passage_entry.comment = dialog.comment_text.GetValue()
        if topic_to_apply is None:
            dialog.topic_selector.maybe_create_topic_from_text()
            topic = dialog.topic_selector.selected_topic
            passage_list.settings.last_selected_topic = topic
        else:
            topic = topic_to_apply

        if not editing_comment:
            topic.add_passage(passage_entry)

        get_primary_passage_list_manager().save()

    dialog.Destroy()
Exemple #21
0
	def get_last_selected_topic(self):
		from passage_list import get_primary_passage_list_manager
		return get_primary_passage_list_manager().find_topic_by_path(
				topic_settings["last_selected_topic"])