Commit graph

1518 commits

Author SHA1 Message Date
Florent Le Coz
ea12f4ccce Document the new event 2013-05-01 18:44:14 +02:00
Florent Le Coz
e8f5c21fcd Lets plugins change the presence BEFORE joining a muc, with a new plugin event 2013-05-01 18:39:33 +02:00
Florent Le Coz
fb21f337e7 Take into account the nick given by the MUC when joining a room.
This way, if the MUC service decides to give us an other nick than the one
we asked it works properly.
2013-05-01 18:37:27 +02:00
mathieui
9661854611 Typo 2013-04-23 12:37:47 +02:00
mathieui
62787af607 Actually use the deprecated method for versions INFERIOR to 3.2 2013-04-19 23:55:54 +02:00
mathieui
93cdac01ae Use ''.join(str) instead of str += …
Should improve speed on xhtml parsing, but be noticeable only
with *heavy* (e.g. 1000chars with the rainbow plugin) xhtml stanzas.
2013-04-18 19:54:13 +02:00
mathieui
9fd15cc2a2 Use importlib for python 3.3 to load plugins
(also probably fix the I/O operation on closed file issue when using
imp)
2013-04-16 18:49:03 +02:00
mathieui
e5f219d43e Do not attempt to log things when use_log = false 2013-04-06 11:45:34 +02:00
mathieui
91b960b797 Handle I/O errors better
- Do not crash because of low disk space
- Notify the user whenever it happens
- A few functions now return a boolean instead of nothing
- Config.silent_set is Config.set_and_save without toggle and returning
  strings. It is used whenever we don’t need set_and_save
- Config.set_and_save now returns a tuple (that can be passed directly
  to core.information())

TODO: display the precise error to the user (instead of “unable to…”)
2013-04-05 23:57:53 +02:00
mathieui
16268ba964 Consistency 2013-04-05 15:24:04 +02:00
mathieui
26fa83dd9a Add an option to choose between shared and separate input history
- separate_history, defaults to false
2013-04-04 01:11:56 +02:00
mathieui
8a5a5bb644 Fix #2255 (search in input history)
- The input is split in two parts: on the left is what the user enters,
    on the right is the first match (the right part has a different
    color)
- Start and cancel a search with ^R
- Validate a search with enter, then press another time enter to send

- CommandInput and MessageInput now inherit from the HistoryInput class
  and share some methods
2013-04-04 01:03:18 +02:00
mathieui
e8fae6f24c Fix #2275, ref #2229
- Refactor the message handlers to be more readable
- Add a group_corrections tab-specific option (#2229)
- Fix issues with /correct in private tabs and conversation tabs
2013-03-31 16:33:10 +02:00
mathieui
f58cd588c2 Fix some PEP issues 2013-03-30 02:22:36 +01:00
mathieui
3f3d1a0a54 Fix the help of /gaming 2013-03-28 10:49:44 +01:00
mathieui
098bc9028a Typo/traceback 2013-03-28 10:47:49 +01:00
Florent Le Coz
347e82b552 Add a (per-tab) notif_messages option to ignore MUC’s normal messages 2013-03-28 01:44:05 +01:00
Florent Le Coz
bbe041fd58 Catch CorrectionError to avoid tracebacking when /correct fails 2013-03-16 12:16:11 +01:00
Florent Le Coz
ad04d32b48 On /exit, save the config earlier. 2013-03-16 11:58:47 +01:00
mathieui
57ce4b6fdf Fix #2265
also:
- fix Message.__str__/repr
- fix a traceback with user gaming
2013-03-13 22:49:19 +01:00
mathieui
d797b1fd65 Implement user gaming (xep-0196)
- configuration options
- theming options
- /gaming
2013-03-12 16:12:47 +01:00
mathieui
cec1151ecb Fix #1839 (User mood/activity)
- Added as always new theming variables:
    CHAR_ROSTER_MOOD, CHAR_ROSTER_ACTIVITY (a SNOWMAN!)
    COLOR_ROSTER_MOOD, COLOR_ROSTER_ACTIVITY
- Added two new notification types in Theme.INFO_COLORS (mood/activity)
- Added new configuration options:
    display_mood/activity/tune_notifications (those can be set for a
    specific JID)
    enable_user_tune/nick/activity/mood
- Added /activity and /mood commands, with completions
- Moved the old /activity to /last_activity
- Details are show in the ContactInfoWin if there is room, or with "i"
  on a contact in the roster.
2013-03-11 23:06:52 +01:00
mathieui
d2d0416214 Fix #1841 (User nickname)
- add a use_pep_nick boolean option
- use it as a nickname for roster contacts, but it does not
    supercede the user-defined handle
- send a <nick/> at the beginning of a normal chat
- not implemented in MUC (wontfix)
2013-03-11 17:54:29 +01:00
mathieui
34af8f69c7 Add a receive_user_tune option (fix #2261) 2013-03-11 11:43:32 +01:00
mathieui
71c35eb279 Implement XEP-0118 (Fix #1840)
- Add new theming options
- Show the tune in the roster (both in contact line and infowin)
- add an option to show tunes as info messages
2013-03-11 02:04:20 +01:00
mathieui
eb2e5825bc Disable plugins on exit 2013-03-10 23:58:20 +01:00
mathieui
c33ee919ff Fix #2241 2013-03-10 22:58:42 +01:00
mathieui
d87834760f Fix #2122 (coloration of long messages)
- Add a “prepend” attribute to the Line tuple

I’m not sure of the impact of this on performance (we parse the message
yet another time)
2013-03-10 18:35:51 +01:00
mathieui
f00dd1b8fe Fix #2254
(add a new theming option, too)
2013-03-09 22:38:31 +01:00
mathieui
9885203c67 Update the plugins to use the PluginAPI
Also:
- Add get_conversation_messages() to PluginAPI
- Make plugins_autoload colon-separated instead of space-separated
    (for consistency)
- Replace a JID() with a safeJID() in the uptime plugin
2013-03-08 22:53:35 +01:00
mathieui
dbde08a526 Document with sphinx timed_events, common, and add methods to PluginAPI
- add methods related to timed events to the PluginAPI
- remove parse_command_args_to_alias because str.format does that, and
  better
→ update the alias plugin
2013-03-08 19:39:34 +01:00
mathieui
0a2bd90c6d Fix PluginAPI.run_command() 2013-03-08 16:55:27 +01:00
mathieui
370cc874c2 Introduce a new way for plugins to interact with poezio
- Try to reduce the use of the “core” object in the plugins
- New “api” member for each BasePlugin which is a wrapper around
    the unique PluginAPI object. (instead of having the methods
    directly in BasePlugin and then calling the PluginManager)
- Documented methods with rst (for sphinx)
2013-03-06 22:57:41 +01:00
mathieui
cbf563583c FIX XHTML ISSUES DUE TO A SLEEKXMPP UPDATE
(THE NAMESPACE WAS NOT PRESENT ANYMORE)
2013-03-06 22:53:42 +01:00
mathieui
3f71405efd Add a CHAR_NEW_TEXT_SEPARATOR theming option 2013-03-06 22:34:41 +01:00
mathieui
993c960aa6 Rename 'normal_chatstate' event to 'conversation_chatstate'
for consistency
2013-03-05 00:15:56 +01:00
mathieui
d99c09ffc3 Make /affiliation and /role non-blocking (fix #2235) 2013-03-04 16:20:07 +01:00
mathieui
f40cfe2669 Add a show_s2s_errors config option (cf #2182) 2013-03-04 16:01:35 +01:00
mathieui
f7204ab0a3 Fix /xhtml 2013-03-04 11:41:19 +01:00
mathieui
1e9e2112f7 Fix #2126 (per-server configuration sections)
(also move replace_key_with_bound() to core.py, to prevent having
common.py depending of config.py)
2013-03-04 00:23:58 +01:00
mathieui
fb7586f049 Fix #1923 (caps) 2013-03-03 13:47:11 +01:00
mathieui
3d98f48ba2 Fix #2182 (show s2s errors)
- Add the theming options COLOR_ROSTER_ERROR, CHAR_ROSTER_ERRROR, and
    CHAR_ROSTER_ASKED
2013-03-03 13:13:15 +01:00
mathieui
e861290d10 Add a plugins_conf_dir option 2013-03-03 00:24:18 +01:00
mathieui
98850ff877 Fix #2132 (/disconnect) 2013-03-02 19:50:59 +01:00
mathieui
dbba6b5e1a Fix /reconnect 2013-03-02 19:45:24 +01:00
mathieui
6afc1f915c Fix #2226 (TB on /activity) 2013-03-01 01:54:54 +01:00
mathieui
b2aa3abf50 Remove a debug that floods too much 2013-02-28 22:54:15 +01:00
mathieui
5a0cec9717 Fix a traceback due to a sleekxmpp API change
- remove the help message for people still using the old custom
    sleekxmpp repo
2013-02-28 22:44:07 +01:00
mathieui
abfd50aacd Fix signal handling
- reload the config/theme with SIGUSR1
- quit properly with SIGHUP/SIGTERM
2013-02-28 22:23:25 +01:00
mathieui
de11a00a8e Improve XEP-0308 support
- Prevent correction of delayed messages
- Prevent correction of messages by someone else in a MUC (and in a
  private tab)
- Messages with unauthorized corrections (above) or wrong message id
  will be displayed as normal messages

TODO: restrict the corrections to the same fullJID (only in direct
"normal" conversations, because we can know in private an muc tabs, via
the User object)
2013-02-27 22:09:14 +01:00
mathieui
f1831cc0ec Fix the background color of some messages 2013-02-21 21:50:05 +01:00
mathieui
23a1b4c353 Fix a potential traceback on /ignore
(if the room was not joined)
2013-02-15 21:22:08 +01:00
mathieui
f4c275eb07 Add an indicator of the number of participants
(like in weechat)
2013-02-13 21:29:14 +01:00
mathieui
14183c49c5 Do not add a space after /unignore completion 2013-02-11 22:23:44 +01:00
mathieui
27d85a0961 Fix the folding of contacts in multiple groups
(add a defaultdict to keep the folded state in each group)
2013-02-03 23:55:13 +01:00
Florent Le Coz
a76b016f95 Add a key (Alt+d) de delete the next word in the input. 2013-02-03 22:17:22 +01:00
Florent Le Coz
dd9f6936be Remove some useless keys, and change the keys to scroll the info win.
M-d and M-c become M-D and M-C
2013-02-03 22:15:10 +01:00
mathieui
f0b03ceee7 Fix a traceback on the completion of /correct
when no message has been sent yet
2013-02-03 19:53:32 +01:00
Florent Le Coz
edd82fef9b Fix a tb on /accept. Make sure jid is a JID object, not an str. 2013-01-29 17:34:26 +01:00
Florent Le Coz
73ebce5c91 make the options in the config files case sensitive. 2013-01-29 08:04:46 +01:00
Florent Le Coz
e0136e785a scroll_to_separator now scrolls to the top if there’s no separator. 2013-01-29 07:58:20 +01:00
Florent Le Coz
13b5ab4b65 Makes next_hl and prev_hl work after a scroll_to_separator.
This makes it easy to review all the highlights after the separator was
placed, using M-h, M-n, M-n, M-n…

We just add a counter of highlights which is incremented each time there’s
an hl, and set to zero when we reset the separator. We use that counter to
set hl_pos when we scroll to the separator.
2013-01-29 07:58:20 +01:00
mathieui
80f689b2fa Do not open new useless tabs with /message 2013-01-28 19:34:53 +01:00
mathieui
0c19f49e98 fix the completion of jids for /message 2013-01-28 19:08:42 +01:00
Florent Le Coz
6aa2a05f01 Remove a single trailing space. hihi. 2013-01-26 05:35:07 +01:00
Florent Le Coz
d6fec9775a Add an /unlock command to manually unlock a DynamicConversationTab. 2013-01-26 05:35:07 +01:00
Florent Le Coz
dd2a6d1d65 Implement XEP 296 for locking resource in conversations.
With a few specific behaviours: When manually opening a conversation with a
bare jid, we open a normal conversation that follows the XEP (locked and
unlocked accordingly). If the user manually opens a conversation with a
fulljid (by selecting a specific resource in the roster, or by specifying a
fulljid to the /message command), we open a special tab that doesn’t follow
the XEP (it is always locked to the same resource, and cannot be unlocked).

When a message is received, unless a special tab has been manually opened by
the other with that specific resource, we always send the messages to a uniq
normal tab, unlocking or locking it according to the XEP.

This means that only one tab can be opened with a given contact, unless the
user specifically chooses to open a special tab for a specific resource.

fixes #2159
2013-01-26 05:35:07 +01:00
mathieui
61f469bc12 Don’t rebuild the lines on resize when the width has not changed
- because it is an heavy operation, and it is useless, since the lines
  only change when the width changes.
2013-01-23 09:29:28 +01:00
mathieui
6a81c021e1 Fix it for real. 2013-01-21 19:45:19 +01:00
mathieui
43e01ce4a6 Fix a traceback when a tab failed to be joined in the first place 2013-01-21 19:34:44 +01:00
mathieui
1bf61cde38 Break the ugly roster refresh loop into two
- The code is more understandable
- The number of iterations may have slightly increased
- Less things are done inside the lock, so the overall experience should
  be smoother
2013-01-21 19:23:23 +01:00
mathieui
bedf225749 Fix get_version and get_room_form 2013-01-19 16:20:17 +01:00
mathieui
3755b51430 Use the new command scheme in plugins too
(while staying backwards-compatible)
2013-01-18 23:25:33 +01:00
mathieui
b3341c6327 Open tabs for rooms without autojoin (but do not join them) 2013-01-18 23:25:33 +01:00
mathieui
40ff60ab24 Fix a (hidden) traceback
Do not traceback when we receive a chatstate from someone not in our
roster.
2013-01-17 18:17:44 +01:00
Florent Le Coz
8ab4fc05c3 Refresh the rooster when canceling the search.
fixes #2195
2013-01-17 17:51:25 +01:00
mathieui
c5cc462963 Move to the upstream SleekXMPP
- remove the decline command that is not in the trunk (and mediated
  declines are supported nowhere anyway)
- change a bit xhtml-im support
- change the bookmarks management a bit
- Add a verification to avoid crashing when poezio will be launched the
  next time
- Fix the (unrelated) bug when setting a jid affiliation
2013-01-17 17:37:06 +01:00
mathieui
b06240ee7b Improve the xml tab
fix refresh bugs, display the scrolling status, add an info bar, add the
global info win
2013-01-11 19:54:30 +01:00
mathieui
b0fbbc9fa9 Fix the behaviour of /move_tab 2013-01-07 23:41:34 +01:00
Florent Le Coz
229d56456b fix a tb on /accept 2013-01-07 17:30:08 +01:00
mathieui
2ea8673a04 Improve the help system (#1986)
TODO: change the plugin API to take advantage of this
This change is backwards-compatible (as in “should not break anything”)
2013-01-06 17:36:14 +01:00
mathieui
4873bab740 Do not display messages if they have an empty body after the hook 2013-01-05 15:55:45 +01:00
mathieui
15fce04294 Do not display the messages with type=headline and an empty body
(thanks, jappix)
2013-01-04 10:11:58 +01:00
mathieui
68c6c06095 Prevent a RuntimeError when there are too many revisions on a message
Python recursion sucks, and namedtuple.repr() uses that, so I rewrote
__str__ and __repr__ in order to make it the iterative way instead.
2013-01-02 20:36:38 +01:00
mathieui
ea1851e00d Iterate over the messages from the end, not from the start
(the corrected message is way more likely to be recent)
2013-01-02 19:32:32 +01:00
mathieui
d0a8304e55 Add the save_status, status, and status_message options
(the name show is not intuitive, so I used status and status_message)
- The status is send when connecting, and is the same used when joining
  rooms
- save_status is true by default, and will make poezio save the status
  whenever it changes
- status and status_message are empty by default
2013-01-02 19:07:36 +01:00
mathieui
c04fbadf2f Add a default color for “Warning” messages 2013-01-02 01:48:55 +01:00
mathieui
17d0527cf8 Fix a traceback with corrections 2013-01-02 01:36:53 +01:00
mathieui
677b944d38 Fix a TB on /move_tab 2013-01-02 01:19:47 +01:00
mathieui
a1607c4c6e Fix #2082 (xml:lang)
This is now already done in sleekxmpp, so I added a “lang” configuration
option. TODO: use the locale of the system.
2012-12-31 14:00:09 +01:00
mathieui
d15c4e0b58 Fix #2138 (send xhtml with /say and /correct) 2012-12-31 03:02:18 +01:00
mathieui
26ecafc6e5 Fix #2161 2012-12-31 02:22:28 +01:00
mathieui
f1d2aa67d0 Fix #2158
Fix /accept for transports.
I think there are more people who use transports than people who have
\2f into a legitimate JID. So I believe this is ok.
2012-12-30 19:43:07 +01:00
mathieui
d66cf8e1fe Typo 2012-12-30 19:31:27 +01:00
mathieui
80c79d8b79 Fix #2189 Fix #2139 - Make /correct work properly in all chat tabs
#2189 wasn’t crashing, but well.
Also fix a crash with the separator and /correct
2012-12-30 19:27:59 +01:00
mathieui
7ec85ae328 Fix #2143 Fix #2056
Show headline messages in the info buffer, and show error messages (or
other errors) with a special style.
2012-12-30 17:40:27 +01:00
mathieui
0f9b37b8a8 Do not rebuild everything in order to modify a message
(should fix the “leak” on /correct, and make it faster)
2012-12-30 14:54:54 +01:00
Emmanuel Gil Peyrot
65e097f410 Display the number of revisions of a corrected message. 2012-12-29 13:14:50 +01:00
Emmanuel Gil Peyrot
590afbd4bc Fix /correct and /me highlights, and handle /correct a bit better. 2012-12-29 13:14:50 +01:00
mathieui
dc4e0302b4 Fix #1977 2012-12-28 20:44:49 +01:00