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"), )
def edit_comment(parent, passage_entry): tag_passage( parent, passage_entry, 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)
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 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)
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
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)
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
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
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
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 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
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()
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"])