summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG12
-rw-r--r--Makefile3
-rw-r--r--README27
-rw-r--r--doc/en/keys.txt150
-rw-r--r--doc/en/usage.txt59
-rw-r--r--src/core.py5
6 files changed, 234 insertions, 22 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 83e3b812..0769a63e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,11 +4,23 @@ http://dev.louiz.org/project/poezio/roadmap
* Poezio 0.7.2 - dev
+- Huge speed improvements in both memory usage, text
+ refresh speed and interface resize.
- Chatstate notifications (in private AND in MUCs)
- /message command to talk to any JID
- /version command to get the software version of an entity
- /bind command, and keys can be bound in the config file
- Multiline edition
+- xhtml-im messages can be sent and received
+- 256 colors support
+- themes are easier to create and load. They can use
+ up to 256 colors
+- completion now works not only at the end of the input
+- /affiliation and /role commands to administrate MUCs
+- /export command to export your roster in a file
+- data forms support (only for room configuration at the moment)
+- documentation is now written in asciidoc format
+- a *lot* of bugfixes
* Poezio 0.7.1 - 2 Feb 2010
diff --git a/Makefile b/Makefile
index 7e71edb1..1fd424ad 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,7 @@ clean:
find ./ -name \*.pyc -delete
find ./ -name \*~ -delete
find ./ -name "#*#" -delete
+ find ./ -name "*.html" -delete
install:
mkdir -p $(DESTDIR)$(prefix)
@@ -39,4 +40,4 @@ doc:
pot:
xgettext src/*.py --from-code=utf-8 --keyword=_ -o locale/poezio.pot
-.PHONY : doc \ No newline at end of file
+.PHONY : doc
diff --git a/README b/README
index 316c6339..9897e687 100644
--- a/README
+++ b/README
@@ -28,9 +28,9 @@ You need python 3.0 (and the associated devel package, to build C modules)
or higher, and the SleekXMPP python library.
In the developpement version, you’ll need this fork of SleekXMPP
http://github.com/louiz/SleekXMPP.
-Additionally, you’ll need asciidoc to build the html documentation pages.
-You can read the documentation using the .txt files, as well, if you don’t
-have asciidoc, or read it on the web.
+Additionally, you’ll need asciidoc and source-highlight to build the html
+documentation pages. To read the documentation without these dependance,
+just read the .txt files, or read it on the webpage.
The simplest way to have up-to-date dependencies and to be able to test
this developpement version is to use the update.sh script that downloads
@@ -45,13 +45,16 @@ you can then launch poezio with
$ ./launch.sh
or you can install it with (as root or with sudo)
+
$ make install
+
(`make uninstall' works, don't worry ;))
you can now simply launch `poezio'
-You can edit the config file (~/.config/poezio/poezio.cfg by default)
+You can edit the configuration file (~/.config/poezio/poezio.cfg by default)
or data/default_config.cfg (if you want to edit the config before the
-first launch). The default config file is fully commented.
+first launch). The default config file is fully commented, but you can
+also read the “configure” documentation page.
Please, see the online documentation for more information on installing,
configuring or using poezio:
@@ -140,11 +143,13 @@ we merge it to “master” as well, of course).
Thanks
=======================
= People =
- Link Mauve - Code, testing
- Gaëtan Ribémont (http://www.bonbref.com) - Logo design
- Ovart - Testing
- Koshie - Donation
- Gapan - Makefile
- FlashCode (weechat dev) - Useful advices on how to use ncurses efficiently
+ - Link Mauve - Code, testing
+ - Gaëtan Ribémont (http://www.bonbref.com) - Logo design
+ - Ovart - Testing
+ - Koshie - Donation
+ - Gapan - Makefile
+ - FlashCode (weechat dev) - Useful advices on how to use ncurses efficiently
+ - And all the people using and testing poezio, and especially the one present
+ on the jabber chatroom doing bug reports and/or feature requests.
= Project =
Gajim - send_vcard method and common.py
diff --git a/doc/en/keys.txt b/doc/en/keys.txt
index eaae961d..f4b659f7 100644
--- a/doc/en/keys.txt
+++ b/doc/en/keys.txt
@@ -7,12 +7,14 @@ configure them.
By default, most keys manipulating the input (where you type your
messages and commands) behave like emacs does.
-Note that keys are case sensitive. Ctrl-X is not the same than Ctrl-x
+NOTE: keys are case sensitive. Ctrl-X is not the same than Ctrl-x
+
Key bindings listing
--------------------
Some key bindings are available only in some tabs, others are global.
+
Global keys
~~~~~~~~~~~
These keys work in *any* tab.
@@ -21,44 +23,174 @@ These keys work in *any* tab.
*Ctrl-p*:: Go to the previous tab.
-*Alt-number*:: Go to tab number x.
+*Alt-number*:: Go to the tab with that number.
*Alt-j*:: Waits for you to type a two-digits number. Go to tab number xx.
+*Alt-e*:: Go to the tab with a higher priority (private message >
+ highlight > message > non-empty input).
+
+*Alt-z*:: Go to the previously selected tab.
+
+*Alt-r*:: Go to the roster tab.
+
+*F7*:: Shrink the information buffer.
+
+*F8*:: Grow the information buffer.
+
+*Ctrl-l*:: Refresh the screen.
+
+
Input keys
~~~~~~~~~~
These keys concern only the inputs.
+NOTE: The clipboard is common to all inputs. This lets you cut a text
+from one input to paste it into an other one.
+
*Ctrl-a*:: Move the cursor to the beginning of line.
*Ctrl-e*:: Move the cursor to the end of line.
+*Ctrl-u*:: Delete the text from the start of the input until the cursor
+ and save it to the clipboard.
+
+*Ctrl-k*:: Delete the text from the cursor until the end of the input
+ and save it to the clipboard.
+
+*Ctrl-y*:: Insert the content of the clipboard at the cursor position.
+
+
Chat tab input keys
~~~~~~~~~~~~~~~~~~~~~
-These keys work in any conversation tab (MultiUserChat, Private or Conversation tabs)
+These keys work in any conversation tab (MultiUserChat, Private or
+Conversation tabs).
*Key Up*:: Use the previous message from the message history.
*Key Down*:: Use the next message from the message history.
-*Page Up*:: Scroll up in the conversation by x lines, where x is the height of the conversation window - 1.
+*Page Up*:: Scroll up in the conversation by x lines, where x is the
+height of the conversation window - 1.
+
+*Page Down*:: Like Page Up, but down.
+
+*Alt-/*:: Complete what you’re typing using the "recent" words from the
+ current conversation, if any.
+
+*Alt-v*:: Move the separator at the bottom of the tab.
+
+
+MultiUserChat tab input keys
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+These keys work only in the MultiUserChat tab.
+
+*Alt-u*:: Scroll the user list down.
+
+*Alt-y*:: Scroll the user list up.
+
+*tabulation*:: Complete a nick.
+
+
+MultiUserChat List tab input keys
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+These keys work only in the MultiUserChat List tab (obtained with /list <server>).
+
+*Up*:: Go up one row.
+
+*Down*:: Go down one row.
+
+*j*:: Join the MultiUserChat currently selected.
+
+*J*:: Join the MultiUserChat currently selected, without giving focus to iuts tab.
+
+*Ctrl-M*:: Join the MultiUserChat currently selected (same as "j").
+
+*PageUp*:: Scroll a page of chats up.
+
+*PageDown*:: Scroll a page of messages down.
+
+
+Roster tab input keys
+~~~~~~~~~~~~~~~~~~~~~
+
+These keys work only in the Roster tab (the tab number 0).
+
+*/*:: Open a prompt for commands.
+
+*s*:: Start a search on the contacts.
+
+*S*:: Start a (slow) search with approximation on the contacts.
+
+*Alt-u*:: Move the cursor to the next group.
+
+*Alt-y*:: Move the cursor to the previous group.
+
+*Ctrl-c*:: Cancel the input (search or command)
+
+NOTE: The following will not work if you can still write things in the
+input (meaning you previously typed _s_ or _/_):
+
+*Space*:: Fold/Unfold the current item.
+
+*Up*:: Move the cursor down one contact.
+
+*Down*:: Move the cursor up one contact.
+
+*o*:: Show the offline contacts.
+
+*PageUp*:: Scroll a page of contacts up.
+
+*PageDown*:: Scroll a page of contacts down.
+
+
+Data Forms tab keys
+~~~~~~~~~~~~~~~~~~~
+*Ctrl+y*:: Validate the form, send it and close the tab.
+
+*Ctrl+g*:: Cancel that form (do not send your changes) and close the
+ tab.
+
+*Up*:: Select the next field.
+
+*Down*:: Select the previous field.
+
+*Right/Left*:: Switch between possible values, in a jid-multi,
+ list-multi, list-single or text-multi field.
+
+*Space*:: Select that option
+
+
+MultiUserChat List tab input keys
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+These keys work only in the MultiUserChat List tab (obtained with /list
+<server>).
+
+*Up*:: Go up one row.
+
+*Down*:: Go down one row.
+
+*j*:: Join the MultiUserChat currently selected.
+
+*J*:: Join the MultiUserChat currently selected, without giving focus to
+ iuts tab.
-*Page Down*:: Likfe Page Up, but down.
+*Ctrl-M*:: Join the MultiUserChat currently selected (same as _j_).
-*Alt-/*:: Complete what you’re typing using the "recent" words from the current conversation, if any.
Key configuration
-----------------
Bindings are keyboard shortcut aliases. You can use them
to define your own keys to replace the default ones.
-where ^x means Control + x
-and M-x means Alt + x
+where _^x_ means _Control + x_
+and _M-x_ means _Alt + x_
To know exactly what the code of a key is, just run
==================
python3 src/keyboard.py
==================
-And enter any keys
+And enter any key.
.Turn Alt-i into a tab key (completion, etc)
==================
diff --git a/doc/en/usage.txt b/doc/en/usage.txt
new file mode 100644
index 00000000..be6809ba
--- /dev/null
+++ b/doc/en/usage.txt
@@ -0,0 +1,59 @@
+Usage
+=====
+
+Commands
+--------
+
+Command listing
+~~~~~~~~~~~~~~~
+
+The commands are shown like this:
+
+/command <mandatory argument> [optional argument]
+
+Global commands
+^^^^^^^^^^^^^^^
+
+These commands work in *any* tab.
+
+*/join [room_name][@server][/nick] [password]*:: Join the specified room. You can specify a nickname after a slash (/). If no nickname is specified, you will use the default_nick in the configuration file. You can omit the room name: you will then join the room you're looking at (useful if you were kicked). You can also provide a room_name without specifying a server, the server of the room you're currently in will be used. You can also provide a password to join the room.
+
+- Examples:
+* /join room@server.tld
+* /join room@server.tld/John
+* /join room2
+* /join /me_again
+* /join
+* /join room@server.tld/my_nick password
+* /join / password
+
+*/exit*:: Just disconnect from the server and exit poezio.
+
+*/quit*:: Like /exit.
+
+*/next*:: Go to the next room.
+
+*/prev*:: Go to the previous room.
+
+*/win <number>*:: Go to the specified room.
+
+*/w <number>*:: Like /win.
+
+*/status <availability> [status message]*:: Set your availability and (optionaly) your status message. The <availability> argument is one of "available, chat, away, afk, dnd, busy, xa" and the optional [status] argument will be your status message.'
+
+*/bookmark [roomname][/nick]*:: Bookmark the specified room (you will then auto-join it on each poezio start). This commands uses the same syntax as /join. Type /help join for syntax examples. Note that when typing /bookmark on its own, the room will be bookmarked with the nickname you're currently using in this room (instead of default_nick).
+
+*/set <option> [value]*:: Sets the value to the option in your configuration file. You can, for example, change your default nickname by doing "/set default_nick toto" or your resource with "/set resource blabla". You can also set an empty value (nothing) by providing no [value] after <option>.
+
+*/theme*:: Reload the theme defined in the config file.
+
+*/list [server.tld]*:: Get the list of public chatrooms in the specified server.
+
+*/message <jid> [optional message]*:: Open a conversation with the specified JID (event if it is not in our roster), and send a message to him, if specified.
+
+*/version <jid>*:: Get the software version of the given JID (usually its XMPP client and Operating System).
+
+*/server_cycle [server.tld] [message]*:: Disconnect and reconnect in all the rooms of server.tld.
+
+*/bind <key> <eq>*:: Bind a key to another key or to a "command". For example, "/bind ^H KEY_UP" makes Control + h behave the same way than the Up key.
+
diff --git a/src/core.py b/src/core.py
index a9c97022..b0b4a913 100644
--- a/src/core.py
+++ b/src/core.py
@@ -114,7 +114,7 @@ class Core(object):
'available': (self.command_avail, _("Usage: /available [message]\nAvailable: Sets your availability to available and (optionaly) your status message. This is equivalent to '/status available [message]'"), None),
'bookmark': (self.command_bookmark, _("Usage: /bookmark [roomname][/nick]\nBookmark: Bookmark the specified room (you will then auto-join it on each poezio start). This commands uses the same syntaxe as /join. Type /help join for syntaxe examples. Note that when typing \"/bookmark\" on its own, the room will be bookmarked with the nickname you\'re currently using in this room (instead of default_nick)"), None),
'set': (self.command_set, _("Usage: /set <option> [value]\nSet: Sets the value to the option in your configuration file. You can, for example, change your default nickname by doing `/set default_nick toto` or your resource with `/set resource blabla`. You can also set an empty value (nothing) by providing no [value] after <option>."), None),
- 'theme': (self.command_theme, _('Usage: /theme\nTheme: Reload the theme defined in the config file.'), None),
+ 'theme': (self.command_theme, _('Usage: /theme [theme_name]\nTheme: Reload the theme defined in the config file. If theme_name is provided, set that theme before reloading it.'), None),
'list': (self.command_list, _('Usage: /list\nList: get the list of public chatrooms on the specified server'), self.completion_list),
'message': (self.command_message, _('Usage: /message <jid> [optional message]\nMessage: Open a conversation with the specified JID (even if it is not in our roster), and send a message to it, if specified'), None),
'version': (self.command_version, _('Usage: /version <jid>\nVersion: get the software version of the given JID (usually its XMPP client and Operating System)'), None),
@@ -1175,6 +1175,9 @@ class Core(object):
self.xmpp.plugin['xep_0030'].get_items(jid=server, block=False, callback=list_tab.on_muc_list_item_received)
def command_theme(self, arg):
+ args = arg.split()
+ if len(args) == 1:
+ self.command_set('theme %s' % (args[0],))
warning = theming.reload_theme()
if warning:
self.information(warning, 'Warning')