The logger method get_conversation_for_date has previously been
converted to return a list of named tuples. Now pass these tuples on to
the method that actually inserts the conversation's messages into the
textbuffer. Also rename two related methods in the history window:
- _add_lines_for_date => _load_conversation
- _add_new_line => _add_message
The get_conversation_for_date method in the logger module returns a
list of bare tuples. Knowledge of how to pack and unpack the many
individual components of the tuples is split between the caller and
the callee, making the method hard to maintain and ugly to use.
Therefore, convert the method to return named tuple instead.
The get_search_results_for_query method in the logger module returns a
list of bare tuples. Knowledge of how to pack and unpack the many
indidual components of the tuples is scattered across both the callers
and the callee, making the method hard to maintain and ugly to use.
Therefore, convert the method to return named tuples instead.
Currently, there are no enumerations using the enum module which reuse
values/need aliases. Add the @unique decorator to all enum classes as a
safety net for future modifications.
Currently, the additional_data column is not correctly loaded from the
log database in the logger module's methods get_last_conversation_lines
and get_conversation_for_date. While the JSON data in the column is
parsed, the parsed value is not saved, because the code assumes that
changes to a loop variable are reflected in the list that is iterated
over. Instead, the unparsed JSON string is returned. Fix this by building
a separate list with the JSON string replaced by the parsed JSON object.
When the roster window active it can be filtered by starting to type.
If the window behavior "single window for everything" is selected,
trying to abort the filtering by pressing the ESC key also closes a chat
window. Fix this behavior by stopping event propagation in case the ESC
key is pressed while roster filtering is active.
Fixes issue #8548.
Notifications for a JID are removed when we see activity
in the form of a sent carbon copie from one of our other devices.
If we receive such carbon copies we can conclude that the message
we received earlier was answered from one of our other devices.
the 'query-tooltip' event does essentially the same
as the 'motion-notify-event' but supplys us with coordinates,
which lets us get rid of deprecated get_client_pointer()
The 'query-tooltip' event does essentially the same as the
'motion-notify-event' but supplys us with coordinates,
which lets us get rid of deprecated get_client_pointer()
Add a connect_tooltip() method that allows other classes
that use HtmlTextView to provide their own tooltip method
Commit d75ebd95e5 modified the return value of logger.py's method
get_search_results_for_query by appending another component to the
tuple. Because of this unpacking the tuple in the command system's grep
command failed.
ChatControlBase was split from ChatControl into its own module in commit
80221afc2c. With this split the import of the CommandContainer modules
was removed as well, likely because their members are not referenced
anywhere. However, importing these modules even when they are not used
directly is crucial because the contained CommandContainers are only
registered with the command system when their definitions are evaluated.
Import the modules with CommandContainers in chat_control_base.py to fix
the command system. Also add a comment stating more clearly why the
imports need to be kept around.
The definition of various constants was refactored to use enumerations
in commit 2fbadc91e9. One reference in the command system was not
changed to use the new enum, however.
Do not reload the conversation in the history window when the user
selects another search result from the same day. Just clearing the
previous highlighting is enough. This prevents flickering and provides
a much more pleasant user experience.