Commit Graph

11335 Commits

Author SHA1 Message Date
Philipp Hörist 6b75f4ab35 Choose MAM namespace and save it 2017-04-18 17:50:15 +02:00
Philipp Hörist f8a028b553 Add/Modify Events to handle all MAM namespaces 2017-04-18 17:48:58 +02:00
Philipp Hörist 1d2320b0bb Add aesgcm to valid uri schemes 2017-04-15 12:02:44 +02:00
Emmanuel Gil Peyrot f6739730af Implement chatstate in MUC, as defined in XEP-0085 §5.5. 2017-04-14 16:58:04 +01:00
Philipp Hörist 78b562f7a5 Make PGP encoding configurable
python-gnupg uses latin1 as default encoding because GPG itself uses
latin1 as default.
We should not override this default with getpreferredencoding, because
getpreferredencoding maybe returns something else than what GPG is configured
on that system.

Example: On Windows
GPG is run in default mode with 'latin1'
getpreferredencoding returns 'cp1252'

The approach would be now to default to latin1 as it is GPGs default.
And if the User sets a different ecoding for GPG he has to set it in
Gajim aswell.
2017-04-12 22:50:02 +02:00
Philipp Hörist a2785ba396 Add version check for python-gnupg 2017-04-12 22:39:55 +02:00
Philipp Hörist a51ea32dc6 Refactor exception handling for logger
- Handle exceptions inside write() instead of propagating the
    exception
- Add error message to exception
- Add dispatch() method in logger
2017-04-12 22:30:55 +02:00
Philipp Hörist 54eb1cbbb8 Simplify log_message()
- Pass EventObj instead of variables
- decrease indent level
- check all conditions inside log_message() not before calling
- fixed bug where gc private messages where not logged with the correct jid
2017-04-12 22:30:28 +02:00
André Apitzsch 4725858ab1 zeroconf: 'to' is of type JID and no string
use a class method to remove the resource from JID
2017-04-10 23:53:54 +02:00
André Apitzsch c058a1e125 zeroconf: string.letters has been removed with Python 3
use ascii_letters which should be sufficient
2017-04-10 23:48:52 +02:00
Philipp Hörist bbb5c0f50d Simplify sending message
- Dont use callbacks, they have no gain in that situation and make the code hard to read
- pass the whole object to a new Event instead of many vars
2017-04-06 23:21:19 +02:00
Philipp Hörist 298ba4d939 Fix Last Message Correction for PGP messages 2017-04-04 23:21:11 +02:00
Philipp Hörist caba5e1723 Rename _on_continue_message()
_build_message_stanza is a better fitting name
2017-04-04 21:55:16 +02:00
Philipp Hörist 28a3a58ea9 Refactor encrypting PGP Message
- Add a _encrypt_message() and _finished_encrypt() method
- Handle Fallback body text in _on_continue_message() where we build the Stanza
2017-04-04 21:31:00 +02:00
Philipp Hörist d344c24a2a Pass EventObject around instead of many vars
This makes it much easier to read and modify
2017-04-04 21:30:48 +02:00
Philipp Hörist 1a5d6fbf30 Merge branch 'various-cleanups' into 'master'
Various small cleanups, with focus on logger and history window

See merge request !77
2017-03-31 16:44:32 +02:00
Markus Böhme 21d15dec29 Use the same named tuple for related methods for conversation loading
Both methods get_conversation_for_date and search_log in the logger
module are related to the loading of conversations and both return a
list of messages from the log. Therefore, it makes sense that both of
them have the same return type.

Remove the named tuple type specific to search_log and convert the
method to return tuples of type Message instead. As a side effect of
this change, search_log now also returns values from the additional_data
column in the log database.
2017-03-30 22:19:40 +02:00
Markus Böhme e735bfe7ab Make conversation loading in the history window use named tuples
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
2017-03-30 21:57:44 +02:00
Markus Böhme 65e926c181 Convert get_conversation_for_date to return named tuples
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.
2017-03-30 21:24:31 +02:00
Markus Böhme 08f4e17158 Rename method get_search_results_for_query to search_log 2017-03-30 21:23:03 +02:00
Markus Böhme d612e80a47 Convert get_search_results_for_query to return named tuples
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.
2017-03-30 21:23:03 +02:00
Philipp Hörist 2f1cad1c81 Merge branch 'allow-ibb-to-bare-jid' into 'master'
Allow IBB FT to bare JIDs again

Closes #8581

See merge request !71
2017-03-29 15:29:08 +02:00
Markus Böhme 167cf02afd Fix typo across codebase (change "tupple" to "tuple") 2017-03-29 10:56:31 +02:00
Markus Böhme 8df8486def Add @unique decorator to all enumerations
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.
2017-03-29 10:56:31 +02:00
Stephen Paul Weber c110d8af60 Allow IBB FT to bare JIDs again
Currently works on released gajim, but not on nightly.

This explicit check for resource in the to-jid just returns if there is no
resource. It doesn't even cancel the file transfer or anything, it just
stops... which looks to the user like a file transfer hang.  Removing
the check makes Gajim work as expected.

Closes #8581
2017-03-28 19:11:18 -05:00
Philipp Hörist 5cc92efcb6 Drop messages from invalid JIDs silently 2017-03-27 20:35:14 +02:00
Philipp Hörist 7d204b37c9 Add extension point for hyperlink handling 2017-03-26 21:06:00 +02:00
Philipp Hörist 6b34ea957e Merge branch 'fix-additional_data-loading' into 'master'
Fix loading of additional_data column from log database

See merge request !72
2017-03-25 22:19:29 +01:00
Markus Böhme d9ab39b03f Fix loading of additional_data column from log database
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.
2017-03-25 18:58:35 +01:00
Markus Böhme c8e990f85e Do not close chat window on ESC key when roster filtering is active
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.
2017-03-25 14:24:30 +01:00
Philipp Hörist ba0408855c Fix regression from ad9370af 2017-03-24 23:35:08 +01:00
Philipp Hörist 1e33af7053 Fix KeyError when privacy list is received 2017-03-14 22:32:28 +01:00
Philipp Hörist a0a036f3eb Decline active list when going visible
Declining the active list will switch us to the default list
2017-03-14 22:32:05 +01:00
Philipp Hörist 2c23b36ac3 Remove redundant method 2017-03-14 22:31:43 +01:00
Philipp Hörist 9f5c13b5bb Dont set default list active on block
There could be another list active (eg. invisible)
If we block someone while invisible, setting the default list
active would make us visible again
2017-03-14 22:31:23 +01:00
Philipp Hörist 25b933e294 Dont try to set empty privacy default list
This will result in a conflict stanza because an active
default list cant be deleted

Decline the use of default list first, then delete the list
2017-03-14 22:31:07 +01:00
Philipp Hörist 63335357be Use push event to query privacy list after edit 2017-03-14 22:30:52 +01:00
Philipp Hörist 18e29ebc55 Add blocked contacts always to the default list 2017-03-14 22:30:16 +01:00
Philipp Hörist 5377fc82f7 Dont block contacts only partially
This is needed for better interop with XEP-0191.
The Server doesnt deliver a partial blocked contact as blocked
to a XEP-0191 Client.
2017-03-14 22:29:50 +01:00
Philipp Hörist 4966b4bf06 Remove notifications on receiving own sent carbon copies
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.
2017-03-14 22:17:48 +01:00
Philipp Hörist 142f2214ea Dont notify on own sent carbon copies 2017-03-14 22:17:16 +01:00
Philipp Hörist 69022ab100 Dont treat MAM results as unread messages
Fixes #8544
2017-03-13 23:21:33 +01:00
Philipp Hörist c75c45bc8a Add new Columns to Logs.db 2017-03-13 19:33:16 +01:00
Philipp Hörist 8547d2b4f9 Simplify scrolling in conversation textview 2017-03-11 22:11:02 +01:00
Philipp Hörist 1e06db9fa6 Remove smooth scrolling
GTK3+ does smooth scrolling in ScrolledWindows on its own
2017-03-11 22:11:01 +01:00
Philipp Hörist 3f38ccc3a5 Simplify import and move to the top 2017-03-11 22:11:00 +01:00
Philipp Hörist 8af80a6189 Dont change mouse cursor on leave event
GTK does this on itself
2017-03-08 19:46:39 +01:00
Philipp Hörist 209154edb2 Refactor showing tooltip in ConversationTextview
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()
2017-03-08 16:14:07 +01:00
Philipp Hörist c61efaa2c5 Replace deprecated Gdk.Cursor.new() 2017-03-07 22:06:44 +01:00
Philipp Hörist 6de3120d43 Refactor showing tooltip in HtmlTextView
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
2017-03-07 22:06:31 +01:00
Markus Böhme 0189305495 Fix grep command in chat window
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.
2017-03-07 16:48:32 +01:00
Markus Böhme ceb7772b5b Correct some typos in command system comments 2017-03-07 16:46:12 +01:00
Markus Böhme f1ee561b9b Fix broken command system by importing CommandContainer modules
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.
2017-03-07 16:46:12 +01:00
Markus Böhme 432ec7ff7d Fix usage of logger constants in command system
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.
2017-03-07 16:46:05 +01:00
Philipp Hörist c02260c4d1 Move CSS Code into gajim.css 2017-03-04 09:53:14 +01:00
Philipp Hörist 9bcad9a233 Style GroupChatControl Banner with CSS 2017-03-04 01:24:28 +01:00
Philipp Hörist fc6b50d953 Create CheckButtons with mnemonics 2017-03-04 01:06:38 +01:00
Philipp Hörist a44be8e6b6 Merge branch 'master' into 'master'
CSS Styling

See merge request !62
2017-03-04 00:24:48 +01:00
Philipp Hörist 840cb365e8 Use unicode path for plugins
non-unicode path is marked as deprecated
2017-03-04 00:19:35 +01:00
Philipp Hörist b5c98864ad Add commandline option to show warnings 2017-03-04 00:19:04 +01:00
Philipp Hörist 1b975172d6 Merge branch 'history-highlighting' into 'master'
Highlight all paragraphs of a message in the history window

See merge request !46
2017-03-03 23:45:06 +01:00
Markus Böhme deebe38438 Prevent unnecessary reloading of conversations in the history window
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.
2017-03-03 17:29:05 +01:00
Philipp Hörist 0abb26ae36 Dont use depracted override_font() 2017-03-03 00:11:23 +01:00
Philipp Hörist 9ecabd561e Dont use depracted override_color() 2017-03-03 00:00:22 +01:00
Philipp Hörist e00341e83e Dont use depracted override_background_color() 2017-03-02 23:58:21 +01:00
Philipp Hörist 516a18eb5d Add CSS Provider and convert config values to css 2017-03-02 23:57:05 +01:00
Markus Böhme d75ebd95e5 Rework message highlighting in the history window to not use timestamps
Search results in the history window to are scrolled to and highlighted
once the user clicks on one of them. Messages are searched by text in
the log database, but then looked up in the history text buffer via a
visible or invisible timestamp obtained from the database record.

Timestamps in the history text buffer, depending on user configuration,
may only have a coarse granularity. Philipp Hörist discovered that this
may lead to the highlighting of the wrong line in the history text view
and proposed an alternative solution that is implemented in this patch.

Timestamps are abolished as a means of searching messages. Instead, add
a mark with the unique message id (log line id) at the start of every
message in the history text buffer when the conversation is loaded.
After fetching the search results from the database this id can be used
to unambiguously find the corresponding message in the history text
buffer.
2017-03-02 23:55:18 +01:00
Philipp Hörist 8157cb38ec Fix verbose logging 2017-03-01 16:33:09 +01:00
Philipp Hörist 54502446a3 Lookup action in correct window Fixes #8560 2017-02-28 16:49:01 +01:00
Philipp Hörist 8a1a326bae Add extension point in plugins window 2017-02-25 19:21:21 +01:00
Philipp Hörist ddf60b01b3 Parse log arguments earlier 2017-02-25 17:21:03 +01:00
Philipp Hörist 5c11e240b1 Reload plugins if already loaded 2017-02-23 17:57:11 +01:00
Philipp Hörist 8e8605615f Add scanning single plugins 2017-02-23 17:56:19 +01:00
Markus Böhme 665898864f Remove dead code in logger.py method get_search_results_for_query
The method get_search_results_for_query provides a means to search via a
passed in SQL query. This feature has been unused and dead since its initial
commit back in 2005 (commit e542fff69f), so just remove it.
2017-02-22 14:55:44 +01:00
Markus Böhme 65c6a1e7e5 Remove unnecessary code in message highlighting in the history window
The message to be highlighted is searched via an already formatted
timestamp, and the match contains the whole timestamp with any
preceding characters (like "["). Therefore, calling backward_char on
the start iterator of the match just goes back to the previous line
and is not needed.
2017-02-22 12:56:31 +01:00
Markus Böhme d9a2251582 Highlight all paragraphs of a search result in the history window
A single message may span multiple paragraphs. Highlight all paragraphs
of a search result because a keyword could be in any of them.

Every message already has the 'eol' tag on its newline character.
Highlight from the start of a search match up to the next 'eol' tag.
2017-02-22 12:56:31 +01:00
Markus Böhme 2e026335de Simplify appending new line in history window
ConversationTextview provides an abstraction for adding text with tags.
Use it instead of directly accessing its backing text buffer.
2017-02-22 12:56:31 +01:00
Philipp Hörist a606d0ed7d Activate PluginInstaller in plugin window init 2017-02-19 18:13:10 +01:00
Philipp Hörist dd3a2f3abc Fix endless loop in various CellRenderers
context.get_background_color() first calls the CellRenderer to render
the cell before giving back the color.

When we call this inside a CellRenderer, this is an endless loop
2017-02-19 18:07:06 +01:00
Philipp Hörist 4a7e54347c Merge branch 'appmenu' into 'master'
Port application menu to GMenu

See merge request !52
2017-02-13 00:52:53 +01:00
Philipp Hörist 09f54f97d0 Use platform identifier with better granularity
Fixes #8542
2017-02-12 19:09:49 +01:00
Philipp Hörist 50514393f5 Fix key error on removing account 2017-02-12 19:09:48 +01:00
Philipp Hörist d24bed12ce Dont try to select iter if there is none 2017-02-12 19:09:48 +01:00
Philipp Hörist 6f8452667d Port application menu to GMenu 2017-02-12 18:17:27 +01:00
Philipp Hörist 2a599d1e89 Fix constants usage in history manager 2017-02-12 16:45:56 +01:00
Philipp Hörist aaef09fc54 Remove old gtk2 code 2017-02-12 16:45:56 +01:00
Philipp Hörist 7814f07bd3 Merge branch 'master' into 'master'
Refactor Gajim startup

See merge request !56
2017-02-11 23:44:19 +01:00
Philipp Hörist 33c9a1c584 Simplify module import 2017-02-11 23:40:42 +01:00
Philipp Hörist 5789c8a870 Start Interface after remote cmdline handling
Because otherwise we would lose log information
from Interface, because logging levels are set after
startup
2017-02-11 23:31:06 +01:00
Philipp Hörist 271af70885 Update Authors 2017-02-11 21:32:13 +01:00
Philipp Hörist 5215641c05 Move GajimApplication into gajim.py 2017-02-11 21:25:43 +01:00
Philipp Hörist 2ea30b3d55 Move nbxmpp import test into do_startup 2017-02-11 21:18:10 +01:00
Philipp Hörist 4bf65a4039 Handle version option in Gtk.Application 2017-02-11 21:09:31 +01:00
Philipp Hörist f9269d5ce0 Save log file into config dir when frozen 2017-02-11 21:07:11 +01:00
Johannes 'josch' Schauer f5eb35cba3 Use more gender neutral language 2017-02-11 20:05:30 +01:00
Philipp Hörist e30527f8ce Move Gajim startup code into do_startup 2017-02-11 19:38:45 +01:00
Philipp Hörist 819bee1253 Handle some commandline options only locally 2017-02-11 18:08:52 +01:00
Philipp Hörist 26aa0382d3 Merge branch 'pylint' into 'master'
Add a pylint configuration file and fix a few of the issues found

See merge request !54
2017-02-11 17:54:19 +01:00
Emmanuel Gil Peyrot a4387e8489 Use “… is not …” everywhere instead of “not … is …”. 2017-02-11 02:40:10 +00:00
Emmanuel Gil Peyrot eb51184a95 Fix a few things in common.connection_handlers_events. 2017-02-11 02:40:07 +00:00