Commit graph

1849 commits

Author SHA1 Message Date
mathieui
09254dabc7 Fix the roster offline show toggle 2014-04-01 23:18:44 +02:00
mathieui
02d9fd9ad4 Fix #2462 (wrong timezone in the logs)
Now everything in the logs is in UTC time, and is converted when read

(also, actually return the logs after loading them instead of not doing
anything)
2014-04-01 00:03:29 +02:00
mathieui
a0c7155140 Fix a traceback with broken roster items
only happens with buggy servers (hello ejabberd)
2014-03-31 22:19:42 +02:00
mathieui
c537485c0d Fix #2493 (private tab displaying a join on /nick) 2014-03-28 01:01:24 +01:00
mathieui
f7294b29e4 Improve dynamic conversation tabs
Add color to the info messages
Unlock the tab when the locked resource goes offline
2014-03-28 00:53:18 +01:00
mathieui
c2d9151f38 Returning the value fetched with RawconfigParser.getint is actually quite useful
…………………………
2014-03-28 00:30:12 +01:00
mathieui
0ee19d51eb When doing a self.config.set in a plugin, save the config too 2014-03-27 23:09:13 +01:00
mathieui
8d4202501d Use RawConfigParser.get{int,bool,float} whenever possible
config.get('option', 'value').lower() == 'value' is just ugly and
stupid, especially for bool.

One if in basetabs:556 was also missing a comparison, leading to True
whenever the option was set.
2014-03-24 23:25:06 +01:00
mathieui
6b1e3dd4ac Allow opening a static conversation even when a (dynamic) conversation with the contact is already open 2014-03-23 01:06:15 +01:00
mathieui
5c9dd44037 Add jid info to the unlock messages 2014-03-23 00:47:05 +01:00
mathieui
fba511e266 Notify the user whenever the lock state of a dynamic conversation changes 2014-03-23 00:38:33 +01:00
mathieui
186803d9a9 Fix formatting, some typos, and unused code, and add docstrings
- No idea why subclasses of ConversationTab were working before
    (info_header was overriden with None in __init__)
- Or why the date parsing worked (“Exeception”)
- Some more reformatting with pylint indications
- Document each module in the tabs module
2014-03-23 00:15:01 +01:00
mathieui
918e15d178 Fix a hidden traceback (NS_MUC_USER not exported in tabs/) 2014-03-22 17:20:15 +01:00
mathieui
1c621caae1 split the "tabs" module into separate files
- todo: write a common import file to avoid duplicating the imports
2014-03-19 02:22:25 +01:00
mathieui
be74128cb7 small refactor
- add a get_tabs(cls) method to avoid manual filtering
- move some stuff to avoid cyclic dependency hell between tab classes
2014-03-19 01:04:51 +01:00
mathieui
109b4aa1f4 Parse message timezones correctly 2014-02-23 20:30:55 +01:00
mathieui
d165f13a81
Bump dev version 2014-02-22 14:28:08 +01:00
Emmanuel Gil Peyrot
a64dd02118 Remove the dependency on poezio from xhtml.py 2014-02-22 01:11:57 +01:00
Emmanuel Gil Peyrot
9240bc3964 Move the XHTML-IM parser to SAX, to make it output a correct formatting, fixes #2239 and many more 2014-02-22 00:56:14 +01:00
mathieui
8ca738e8a9 Fix #2474 (bans aren’t logged) 2014-02-22 00:19:22 +01:00
mathieui
a9f0607123 Fix #2470 (server_cycle joining the wrong room with domain-only muc) 2014-02-20 08:39:40 +01:00
mathieui
35f3f53334 Fix a traceback in the commandinput
When the connection lags and the user presses tab,
poezio will insert a tab inside the input, wich has now
a specific formatting. This caused poezio to crash.
2014-02-17 21:44:40 +01:00
mathieui
4645bd7a2f Documentation update
ssl page (img & ref)
theming (compile errors, format and typos)
2014-02-17 20:21:54 +01:00
mathieui
384fd3e029 Call on_gain_focus on the new current tab after closing a tab 2014-02-14 00:59:59 +01:00
Mathieu Pasquet
05a9e03d53 Add a configurable way of setting cipher suites
And put reasonable defaults
2014-02-13 00:50:32 +01:00
mathieui
7e3efccb53 Fix #2407 (unencrypted connections)
Add a force_encryption option set to true by default.
2014-02-13 00:48:19 +01:00
mathieui
f43f06214e Fix #2458 (correctly display non-groupchat room messages) 2014-02-12 23:36:58 +01:00
mathieui
0320ee16d4 Remove the simple blocking warning (useless) 2014-02-04 20:17:03 +01:00
mathieui
2b9fb90ca7 Fix #2418 (Wrong character count in input with copy/pasted tabulations)
- Replace tabulations in the input by highlighted “t”s
- More readable, and less messy to deal with.
2014-02-03 23:57:18 +01:00
mathieui
199ac46d90 Fix #2208 (time_marker shows an useless timestamp) 2014-02-03 23:37:22 +01:00
mathieui
fe4404d3f0 Fix #2424 (actualize --MORE-- when doing /topic) 2014-02-03 22:51:08 +01:00
Florent Le Coz
925ea453f3 Do not crash on /names with invalid affiliations 2014-02-03 21:35:58 +01:00
mathieui
20e5c69503 Do not unlock a tab when receiving a presence from the same resource
(makes OTR bug)
2014-02-03 08:40:32 +01:00
mathieui
bf682651e0 Date the log records (error.log or debug logs) 2014-02-01 23:33:45 +01:00
mathieui
7c0cf0c8be Fix #2441 (don’t send chatstates in a non-chatstate conv)
Also enable chatstates when we receive them from our contacts.
2014-02-01 19:10:50 +01:00
mathieui
3fe044d5b8 Fix #2437 (show version in /self) 2014-02-01 18:34:43 +01:00
Mathieu Pasquet
b4b8f2a455 Fix #2430 (whatever) 2014-02-01 18:27:43 +01:00
Mathieu Pasquet
0153106145 Also do not send empty <replace/> with each message 2014-02-01 18:20:46 +01:00
Mathieu Pasquet
8fbf50fa8e Fix #2443 (:) 2014-02-01 17:57:24 +01:00
Mathieu Pasquet
c16fc9c3e9 Fix #2445 (autcorrect not showing in private convs) 2014-02-01 17:54:31 +01:00
Mathieu Pasquet
ccb3abd704 Exit on SIGPIPE 2014-01-30 18:23:44 +01:00
Mathieu Pasquet
bee12fd22b Fix the nickname with carbons 2014-01-30 15:16:49 +01:00
Mathieu Pasquet
7e4a565517 Fix a traceback when opening an empty log file 2014-01-29 16:44:43 +01:00
Mathieu Pasquet
8a44d31e85 Add a logging option to the OTR plugin
It is tab-specific and off by default.
2014-01-29 16:41:57 +01:00
Mathieu Pasquet
2ac24d6883 Provide a more standardized fingerprint representation
(also includes silent modification of the hash already
in the config)
2014-01-28 18:54:46 +01:00
mathieui
f9e70fa656 Previous commit with get/set 2013-12-28 17:16:35 +01:00
mathieui
83b44c863e Fix #2281 (display iq results when sent with /rawxml) 2013-12-28 16:57:36 +01:00
mathieui
91392c721f Fix #2414 (don’t use /tmp/dummy in the logging config) 2013-12-28 16:31:42 +01:00
Mathieu Pasquet
c0e010e2cd Write the config to a tmp file before a final copy
(should prevent some conditions leading to config
corruption happenning when poezio cannot write anymore)
2013-12-04 01:14:28 +01:00
Mathieu Pasquet
4a7e18cd03 Handle signals differently than /quit
- do not save the config (only for roster and stuff)
- do not except that resetting the curses state will work everytime
2013-12-04 00:11:44 +01:00
Mathieu Pasquet
0ad9712d0c refactor the texts in core to be more readable and fix some typos 2013-11-26 18:37:06 +01:00
Mathieu Pasquet
66d6c34f41 Fix a tb 2013-11-14 21:31:57 +01:00
Mathieu Pasquet
ff9478259d Add a /password command in the RosterTab
Thanks to Florob for the initial input
2013-11-14 21:26:19 +01:00
Florent Le Coz
0c507859fb On kick, get the actor 'nick', before trying the 'jid'
'nick' attribute has been introduced recently in the XEP. We still try the
'jid' attribute for backward compatibility. And also we don’t traceback
anymore if any of these fields is not present.
2013-11-13 00:42:08 +01:00
Florent Le Coz
e02f93a8ef Increase the number of chars to "jump" when the cursor goes out of the input 2013-10-21 00:41:50 +02:00
Florent Le Coz
32308646de And I forgot to scp this file :x 2013-10-21 00:22:39 +02:00
Florent Le Coz
b12a6b3ba9 Improve the input a lot
Noticeable changes:

- The input "view" is smarter, it always move to a decent position so we can
  see enough text around the cursor.
- The cursor goes at the end of the input when pasting some long text
- The formatting chars (^C and o, b, a, 1, 2, 3 etc) are now visible in the
  input. This makes it a lot easier to know where these special characters
  are, to change them and efficiently edit our text (we just lose a little,
  on the cosmetic side, but who cares)
- The code is actually a lot simpler in the functions to move the cursor,
  insert/delete chars: we do not have to deal with special cases where the
  formatting characters are actually composed of two chars.

fixes #2183
2013-10-20 23:42:13 +02:00
Mathieu Pasquet
dd4f8661a9 Fix #2358 (/correct is broken in private conversations) 2013-10-06 22:45:38 +02:00
Mathieu Pasquet
0124ac1b06 Give help about tab-specific command first in /help
(the tab-specific commands were executed first, but their help wasn’t
given first)
2013-10-06 19:52:57 +02:00
Mathieu Pasquet
08ce5c6d00 , 2013-10-06 18:55:16 +02:00
Mathieu Pasquet
030d4b4b2a Fix #2361 (extract the PEP list directly from the XEPs) 2013-10-06 18:44:41 +02:00
Mathieu Pasquet
11c93a12a3 Fix a refresh issue in the roster 2013-10-06 18:09:33 +02:00
Mathieu Pasquet
8e63ad3a08 Fix #2373 (/message creates duplicate tabs) 2013-10-06 18:03:38 +02:00
Mathieu Pasquet
9c775da5f7 Fix #2369 (black nick color) 2013-09-19 00:28:11 +02:00
Mathieu Pasquet
40af34ad7c Fix #2372 (traceback on space in roster after disconnect)
selected_row wasn’t reset
2013-09-19 00:19:42 +02:00
Mathieu Pasquet
b245ff6e2d Fix /export 2013-09-16 13:08:28 +02:00
Florent Le Coz
099d1d1c2c TIL splitlines() 2013-09-06 17:35:50 +02:00
Florent Le Coz
4b662ffa67 Much more efficient and clean way to get the last n messages from history 2013-09-06 14:24:05 +02:00
mathieui
cb8884bae4 quote a completed word if it has \ in it 2013-08-16 17:49:05 +02:00
mathieui
1a92c51ddf Fix an issue with shlex
(well, sort of fix)
2013-08-16 16:21:54 +02:00
mathieui
7820f98568 Move shlex to poezio_shlex to avoid conflicts with the stdlib 2013-08-15 01:07:47 +02:00
mathieui
6f2cca61d4 Remove debug 2013-08-13 07:39:12 +02:00
mathieui
a724be0e72 Typo 2013-08-10 23:24:35 +02:00
mathieui
74de91e2bf Fix potential issues with import paths 2013-08-10 15:51:35 +02:00
mathieui
518f933fb8 Fix #2343 2013-08-10 01:50:03 +02:00
mathieui
64c1a09023 Fix #2337 (search the themes the same way than plugins)
- Load the themes from:
    1 - The sources found in the directory ../data/themes/ (if it
    exists)
    2 - The user-defined dir (or ~/.local/blah)
    3 - The poezio_themes package if found

- Also fix some potential issues with the plugins importer
2013-08-10 00:24:27 +02:00
mathieui
2fe84a1188 Fix a crash for python < 3.3 2013-08-06 22:23:47 +02:00
mathieui
3e7353758e Fix the folder creation for roster changes 2013-08-06 19:07:44 +02:00
mathieui
e40a3d72f5 Add a specific /invite command for the MucTab 2013-08-05 23:29:36 +02:00
mathieui
406454fdd0 Fix common.shell_split with empty strings 2013-08-05 19:45:08 +02:00
mathieui
feb101f158 Fix some refresh quirks 2013-08-04 15:29:43 +02:00
mathieui
416ceddbe4 Add the same pluggable "information element" to the PrivateTab 2013-08-04 15:28:35 +02:00
mathieui
d01f6208d6 If plugins removed the message body in a callback, don’t send it 2013-08-04 14:50:58 +02:00
mathieui
1496876136 Add the name of the plugin when loading it fails 2013-08-04 14:50:58 +02:00
mathieui
e5e63d4725 Prevent messages with typ=0 from being logged
(new typ value)
2013-08-04 14:50:57 +02:00
mathieui
7538093a07 Do not load logs if use_logs is false 2013-08-04 11:21:28 +02:00
mathieui
135ef1b364 Fix a traceback on get_logs 2013-08-04 11:06:05 +02:00
mathieui
decb2bb27e Remove test code added by accident 2013-08-03 19:30:09 +02:00
mathieui
31c2e23c4c Logs errors by default, in a dedicated file
- log_errors option, true by default
- errors go in log_dir/errors.log (so $XDG_DATA_HOME/errors.log
    by default)

This should help a lot for debugging, and provide a way for people
to easily give debug traces without useless or personal infos.
2013-08-03 19:27:25 +02:00
mathieui
6fbb2f8593 Fix #2317 (/join completion is broken)
Also add an override parameter to new_completion so that the
completion does not care if the list matches the previous input
or not.
2013-08-02 22:00:53 +02:00
mathieui
bb59771d99 Fix #2049 (get the current completed argument)
A command argument can now be completed even if it isn’t the last
one in the input.

- Add a new method Input.new_completion
    Almost like the old auto_completion method, except taht it takes
    another argument: argument_position, which is the argument to be
    completed.
- Methods using the old completion method still work
- All completion methods in poezio now use the new one if necessary
- Further details can be found in the docstring of new_completion
2013-08-01 20:17:12 +02:00
mathieui
2744234d52 Move /clear_infos to /clear for consistency 2013-08-01 12:38:46 +02:00
mathieui
2730d8a2b5 ref #2318 (fix correction when the server doesn’t send back the same ids)
This will only work if the message ids are the same across all
participants…
2013-08-01 01:04:35 +02:00
mathieui
890945d037 Fix #2334 (wrong character length for formatting chars) 2013-07-31 23:56:49 +02:00
mathieui
19135d4a76 Fix #2306 (none, to, and from subscriptions should be more visible)
Added a configuration option and some theme variables.
2013-07-31 23:43:19 +02:00
mathieui
b249dad73d Fix #2341 (/message <bare/resource> doesn’t open a new tab…)
If a tab with the given fulljid is not found, then a new tab
will be opened, even if we are in discussion with the bare jid.
2013-07-30 20:47:12 +02:00
mathieui
cbcac03510 Fix #2335 (crash on /cycle with room without userpart) 2013-07-29 19:31:33 +02:00
mathieui
d64a95bd3b Fix an import broken with the last sleekxmpp update 2013-07-29 07:23:12 +02:00
mathieui
33a9f1434f Fix contact removal 2013-07-24 21:34:14 +02:00
Florent Le Coz
9b51377185 Correctly use Py_ssize_t instead of int, fix a segfault on some architectures 2013-07-07 20:25:58 +02:00
mathieui
cae5f64931 Move backwards in the input the same way we move forward (ref #2183) 2013-07-03 00:21:13 +02:00
mathieui
697e311ce7 Fix the repr() of messages for logging 2013-07-01 22:10:30 +02:00
mathieui
8fe39540a4 Fix an issue with roster loading
(why did that even work before)
2013-07-01 17:58:49 +02:00
mathieui
f8aa0f9826 Fix #2329 (display the info buffer in the muclisttab)
also fix some typos in the comments, and a refresh issue with the input
2013-06-30 19:36:32 +02:00
mathieui
bafecae0d3 Clear the XML Tab buffer when closing 2013-06-30 18:57:52 +02:00
Florent Le Coz
1a6dbad881 Better comments in poopt 2013-06-27 15:54:19 +02:00
mathieui
ec49a7b05d Ignore errors on PEP publishing (fix #2322)
(since we can’t do anything about them anyway)
2013-06-26 22:49:18 +02:00
Florent Le Coz
1ae7ff10d3 Nicer comments 2013-06-25 01:18:28 +02:00
Florent Le Coz
b7fbfb7f47 Aaaand that’s static 2013-06-25 01:17:20 +02:00
Florent Le Coz
1d9d085d15 Do not open a tab on Enter when searching in the roster
Often, we search people but don’t actually want to open a tab with them
(maybe the users wants to talk to a specific resource, or see the contact’s
status, or things like that)
To open a tab to talk to this contact, the user just need to type Enter twice
2013-06-25 01:10:33 +02:00
Florent Le Coz
f8c0d12750 Workaround for a bug (?) where wcwidth returns -1 for valid printable chars
For example 😆
2013-06-25 01:08:16 +02:00
mathieui
f4a4b79986 fix #2327 (don’t include chatrooms in the roster)
it might be a little slower than before (more checks)
2013-06-24 23:22:42 +02:00
mathieui
b70c154ff6 Fix /w completion 2013-06-24 15:54:39 +02:00
mathieui
6a5423d5f5 Fix #2294 (fix /w priority)
Now each different match has a different priority.
It might need some tuning to have the desired result.
2013-06-22 20:02:11 +02:00
mathieui
6c046fe161 Parse the new log format to display it. (ref #2311)
Archiving old logs is recommended before running this update,
just in case.
2013-06-22 00:17:55 +02:00
Florent Le Coz
d81568eebe Use a logical order of arguments in the poopt functions, now 2013-06-20 23:28:40 +02:00
Florent Le Coz
ee0c29ada1 Use the correct arguments in PyArg_ParseTuple 2013-06-20 23:26:29 +02:00
Florent Le Coz
7d555a62f2 Little logic change 2013-06-20 23:25:53 +02:00
Florent Le Coz
5b4048000e Use cut_by_columns to properly cut nicks in the UserWin window 2013-06-20 22:30:08 +02:00
Florent Le Coz
da6c11603c Add a poopt function to cut a string by the number of columns it takes 2013-06-20 22:17:43 +02:00
Florent Le Coz
a92163d173 Fix some compilation warnings in the poopt module 2013-06-20 22:06:33 +02:00
Florent Le Coz
637b5552e8 Remove the now useless (and fucking slow) wcwidth python implementation 2013-06-19 22:27:15 +02:00
Florent Le Coz
0d7fedceea And actually use poopt.wcswidth to properly count the nicks' size
see #2142
2013-06-19 22:19:17 +02:00
Florent Le Coz
cbe0007249 Exposes the wcswidth function in the poopt module
see #2142
2013-06-19 22:19:08 +02:00
Florent Le Coz
0bcd420602 Consider the number of columns of each characters in the poopt module
Some characters take 0 columns, others take 1 or 2 (full-width characters)

fixes #2142
2013-06-19 22:18:50 +02:00
mathieui
d269617788 Revert 9eaffe1369 because of 3.1 compat 2013-06-19 12:16:28 +02:00
Florent Le Coz
54af1f16a4 Let the user disable the auto-ping by setting connection_check_interval to 0 2013-06-18 20:38:16 +02:00
Florent Le Coz
4d73c29836 Add config_change handlers for the two keepalive options
We can now change the keepalive values with /set, without restarting
2013-06-18 20:37:57 +02:00
Florent Le Coz
39fa811374 Trigger config_change handlers when the config has changed using a USR1 signal 2013-06-18 20:37:04 +02:00
Florent Le Coz
ef9672c0fd Add the possibility to watch the changes of a config value
Using add_configuration_handler() we can now set a callback to be called
whenever a given option value is changed using /set
2013-06-18 20:36:23 +02:00
Florent Le Coz
06d5ecb879 Message to join the room with an other nick only if the room is not joined yet
Because that message doesn’t make any sense if you are in the room and you
get a nick conflict from the /nick command.
2013-06-18 20:32:17 +02:00
mathieui
c8700dd06e Fail properly when the config can’t be parsed. 2013-06-16 14:50:04 +02:00
mathieui
2b7676194f Fix #2320 (TB on /info with an off-roster contact) 2013-06-14 20:36:04 +02:00
mathieui
833faa4f37 Improve the roster search
- now case-insensitive
- search in the bare jid instead of userpart only (and still in roster
  names)
- do not display groups when searching
- display offline contacts
- do not expand resources if they were before the search
2013-06-13 01:00:53 +02:00
mathieui
2b4c06b6f8 Fix #2315 (send pings to the server every minute to check the connection)
add two new options:
connection_timeout_delay and connection_check_interval
2013-06-11 00:03:48 +02:00
mathieui
97d3690aea Implement Message Carbons (XEP-280)
- Add an option enable_carbons (defaults to false)
- Make a disco on non-roster entites to determine if the message
  commes from a muc private chat or not.
2013-06-10 23:49:10 +02:00
mathieui
4220c36021 Fix addstr_colored with colors that start with a -1 2013-06-10 20:53:16 +02:00
mathieui
2ab2eaf269 Lock on one forgotten curses operation 2013-06-09 17:12:39 +02:00
mathieui
d5ae6966f9 Fix #2301 2013-06-09 17:02:54 +02:00
mathieui
2668df740b Fix #1892 (keep the contact selected in the roster) 2013-06-09 15:36:50 +02:00
mathieui
103d097acf Fix #2183 (do not scroll one char at a time when you reach the end)
Now it scrolls horizontally of 1/4 the size of the input
2013-06-09 15:18:39 +02:00
mathieui
9d5fddf5ba Use the new format in the roster log too (ref #2311)
(and add the pep events and invites to it)
2013-06-09 12:56:51 +02:00
mathieui
71b6404b04 Adopt the mcabber log format (Fix #2311) 2013-06-09 03:47:16 +02:00
mathieui
9eaffe1369 Fix the os.makedirs calls so that they don’t traceback for nothing 2013-06-09 03:45:10 +02:00
mathieui
9b8ed569bb Fix the regex for text attributes 2013-06-08 23:51:47 +02:00
mathieui
26ea842cee Add a way to format background colors in a string
(also add colors to the /info command in MUCs)
2013-06-08 17:36:02 +02:00
mathieui
545e67c500 Fix setting autojoin with /bookmark 2013-06-08 12:28:07 +02:00
Florent Le Coz
463ec5ca0d Accept NULL bytes in strings to be cut by the poopt module
fix #2296
2013-06-07 00:04:01 +02:00
Florent Le Coz
032d2b711b Add a M-k keyboard shortcut to escape the next keyboard shortcut
fix #2227
2013-06-06 22:58:29 +02:00
Florent Le Coz
834546ac77 Do not traceback when receiving malformed XML in a xhtml-im body 2013-06-06 22:53:43 +02:00
mathieui
9e8860cd6a Fix joining a domain-only room
(e.g. “/join @conference.prosody.im”)
- If the current tab is a MUC the @ prefix is mandatory as there is no
     way to tell if the user meant a room name or a domain.

- If it is not a MUC, then the @ prefix is not mandatory (but works
  anyway)
2013-06-05 20:44:27 +02:00
mathieui
ae009318b2 Fix #2299 (invalid characters causing a TB)
any character beyond 0x110000 does not exist and should be dropped
2013-06-04 13:20:59 +02:00
mathieui
0abc789403 Do not block on roster operations (and do not traceback on errors) #2315 2013-06-03 23:13:10 +02:00
mathieui
0dcc6f9cc4 Fix the caps updating (“do not verify” message in swift) 2013-06-01 21:43:15 +02:00
mathieui
4ee7708b14 Small workaround for the default config location 2013-05-29 15:32:25 +02:00
mathieui
2b42c6a3ea Update setup.py to use distutils
(use new default directory, install the plugins as a separate
python module…)
2013-05-26 20:13:39 +02:00
Florent Le Coz
1b9dc72d14 Fix a traceback (plugin_manager) 2013-05-24 22:13:56 +02:00
Florent Le Coz
3356cac9ce Fix a stupid traceback (common.datetime_tuple) 2013-05-24 21:52:12 +02:00
mathieui
0255968049 Fix a tb on "/ban " 2013-05-17 19:30:52 +02:00
mathieui
69af684494 Fix a traceback on /role completion if the tab is not connected
(also add outcast to the completed roles)
2013-05-17 11:53:32 +02:00
mathieui
ee8de89f9e Fix #2307 (commandinput history) 2013-05-16 16:08:30 +02:00
mathieui
06e368f66e Fix the parser for the rainbow plugin 2013-05-16 15:35:59 +02:00
mathieui
785b21ff02 Fix #2229 (prevent correction if the 2 fulljid differ)
(Except in MUC, where we check the User object for that)
2013-05-15 19:04:56 +02:00
mathieui
55dfc625b3 Fix a traceback on /nick [tab]
(introduced in 686352d22b, because a
nick bookmark can now be None)
2013-05-15 13:17:24 +02:00
mathieui
58174d1bf1 Sort users in /names 2013-05-15 12:56:24 +02:00
mathieui
9de322bea3 Rewrite the poezio colors parser (also Fix #2279)
The parser now handles text with multiple style attributes
(e.g. bold, underlined and red text).
2013-05-14 22:29:45 +02:00
mathieui
7f1562c4c2 Actually use it. 2013-05-11 21:43:45 +02:00
mathieui
a1ef835a37 Handle the roster order cache as a real cache
When an external (or internal) event may cause the order of the
cache to be modified, or new elements to be added, schedule it
for a rebuild. Otherwise, don’t, and only rebuild it when
refreshing (that should improve refresh speed a lot).

Also, if the position in the roster is further than the total size
of the roster, go back to the top instead of displaying an empty
window with “+++”.
2013-05-11 20:51:11 +02:00
mathieui
dde153e85b Reverse the plugin loading path 2013-05-11 12:00:37 +02:00
mathieui
3d8c91dcb0 Fix the reason in the ban message 2013-05-11 00:33:06 +02:00
mathieui
686352d22b Do not add a nick to each bookmarked room 2013-05-10 14:55:50 +02:00
mathieui
6767d04a1d Fix #2295 (sanitize commands given to /help)
remove starting slashes and starting and trailing spaces
2013-05-10 13:41:13 +02:00
mathieui
ca8b67fca9 Fix #2131 (Input cursor when pasting text) 2013-05-10 00:49:38 +02:00
mathieui
60388686a5 Fix the exit message 2013-05-09 22:29:26 +02:00
Florent Le Coz
ffe33c5da3 Add a little workaround for MUC servers that do not send the 110 status 2013-05-09 13:20:46 +02:00
Florent Le Coz
53170fd4f2 Add the 'changing_nick' event 2013-05-09 13:18:44 +02:00
Florent Le Coz
38af82501c Fix a crash introduce something like 5-6 commits ago, np. 2013-05-09 13:18:44 +02:00
mathieui
3eece64062 Fix #2284 (don’t send always send an inactive chatstate with /w) 2013-05-06 20:48:37 +02:00
mathieui
48614d6cf0 Fix #2286
Also fix the copy of the default config if -f is used
2013-05-06 20:23:33 +02:00
Florent Le Coz
ea5bfbfca4 Fix a typo "on on an unknown platform" 2013-05-01 19:38:47 +02:00
Florent Le Coz
beb374f7e3 Make Alt+backspace work on my freebsd 2013-05-01 19:03:32 +02:00
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