Сообщения в Caesium

Caesium

Очередная пачка коммитов:

* Исправлен баг с отправкой сообщений в обратном порядке.
* Добавлена функция отрисовки окон сообщений (взамен хардкода в функции сохранения).
* Добавлен функционал для работы с избранными сообщениями (через метаэху favorites).
* Получение списка сообщений для режима чтения вынесено в отдельную функцию.
* Добавлена проверка на пустую эху при опросе клавиатуры в режиме чтения.
* Теперь выйти из клиента можно и из режима чтения (после этого замечания Виктора мне стало не хватать такой штуки =)

Решение с избранными сообщениями с одной стороны не очень удачное, а с другой - это позволяет держать избранное прямо в стандартной базе.
spline to All (2015-08-27 09:07:32) [ссылка]

Caesium

Ответ на сообщение
Новые коммиты в сабже.

* Исправлен баг, вызывающий падение клиента при нажатии клавиши вправо при просмотре последнего сообщения в эхе.
* Исправлен баг, блокирующий выход из пустой эхоконференции клавишей "в право".
* Исправлен баг, в некоторых случаях приводивший к "забыванию" последнего прочитанного сообщения в эхе.
* Метаэхоконференция favorites больше не запрашивается у ноды при получении почты.
* Исправлен баг с обновлением экрана при удалении последнего избранного сообщения.
* Добавлена проверка доступности ноды. Теперь клиент не падает в случае отсутсвия связи.
spline to All (2015-08-28 05:19:17) [ссылка]

Re: Caesium

Ответ на сообщение
> * Исправлен баг, в некоторых случаях приводивший к "забыванию" последнего прочитанного сообщения в эхе.
Видимо, на андроиде из-за этого чуть изменилось поведение :)

Клавиша End теперь увеличивает номер прочитанного сообщения на единицу и выходит в список эх. Раньше не увеличивала.
vit01 to spline (2015-08-28 06:07:13) [ссылка]

Re: Caesium

Ответ на сообщение
>> * Исправлен баг, в некоторых случаях приводивший к "забыванию" последнего прочитанного сообщения в эхе.
>Видимо, на андроиде из-за этого чуть изменилось поведение :)
>Клавиша End теперь увеличивает номер прочитанного сообщения на единицу и выходит в список эх. Раньше не увеличивала.
Копать надо в сторону Esc-последовательностей на андроиде или в том ncurses, который у тебя на аппарате. Суть в том, что всякие там функциональные клавиши, Home, End и прочие PageUp'ы через такие вот последовательности обрабатывают. То есть ловится esc или из-за медленной отправки сканкода или из-за кривости терминала.

Насчёт увеличения номера сообщения. Это нормальное поведение. То есть, если я читал-читал, а потом вышел, то я увижу не последнее прочитанное мной сообщение, а то, которое сразу за ним.
spline to vit01 (2015-08-28 06:18:28) [ссылка]

Re: Caesium

Ответ на сообщение
> Копать надо в сторону Esc-последовательностей на андроиде или в том ncurses, который у тебя на аппарате. Суть в том, что всякие там функциональные клавиши, Home, End и прочие PageUp'ы через такие вот последовательности обрабатывают. То есть ловится esc или из-за медленной отправки сканкода или из-за кривости терминала.
Подключился к телефону по ssh. Полёт цезия нормальный, значит дело в терминале. Перепробовал 3 терминала на телефоне в разных режимах эмуляции, всё без толку с Home/End. Значит придётся просто заменить клавиши, т.к. Esc последовательности просто криво идут.

Кстати, обнаружил ещё, что получение сообщений нельзя запустить во время чтения эхи.
Также нашёл вот такую ошибку при нажатии на PageDown: http://ii-net.tk/ii/files/9zw8f4k0tXEoeZyFB0Ax.png
vit01 to spline (2015-08-28 08:26:40) [ссылка]

Re: Caesium

Ответ на сообщение
>Значит придётся просто заменить клавиши, т.к. Esc последовательности просто криво идут.
Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.
>Кстати, обнаружил ещё, что получение сообщений нельзя запустить во время чтения эхи.
Это описано в README. И это очень правильно, ящитаю. Изначально я вообще хотел разделить на разные приложения мейлер, тоссер и ридер, но потом передумал.
>Также нашёл вот такую ошибку при нажатии на PageDown: http://ii-net.tk/ii/files/9zw8f4k0tXEoeZyFB0Ax.png
Поправил. Глупая в сущности ошибка.
spline to vit01 (2015-08-28 09:10:29) [ссылка]

Re: Caesium

Ответ на сообщение
> Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.
Я и не предлагал брать это в апстрим. Клиент твой, сочетания клавиш твои. Просто уточнил, что буду делать при создании Caesium-FixEsc патча.
vit01 to spline (2015-08-28 12:23:26) [ссылка]

Re: Caesium

Ответ на сообщение
>> Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.
>Я и не предлагал брать это в апстрим. Клиент твой, сочетания клавиш твои. Просто уточнил, что буду делать при создании Caesium-FixEsc патча.
Патч вышли. Патчи буду рядом складывать, чтобы пользователь сам патчил при желании =)
spline to vit01 (2015-08-29 09:43:51) [ссылка]

Re: Caesium

Ответ на сообщение
Сегодня пока не получилось, ибо сижу на даче и усиленно собираю урожай =)

Но как освобожусь, напишу и выложу.

Ещё собирался сделать вынос параметров сочетаний клавиш наверх скрипта, но это и без учёта андроидов полезно будет :)
vit01 to spline (2015-08-29 10:48:42) [ссылка]

Re: Caesium

Ответ на сообщение
Патч для юзерфрендли-переопределения клавиш (ничего своего не заменял, клавиши все дефолтные):
13,32d12
< keys = {
< 	"prevmsg": curses.KEY_LEFT,
< 	"nextmsg": curses.KEY_RIGHT,
< 	"up": curses.KEY_UP,
< 	"down": curses.KEY_DOWN,
< 	"screen_up": curses.KEY_PPAGE,
< 	"screen_down": curses.KEY_NPAGE,
< 	"firstmsg": curses.KEY_HOME,
< 	"lastmsg": curses.KEY_END,
< 	"fetch_mail": [ord("g"), ord("G")],
< 	"send_mail": [ord("s"), ord("S")],
< 	"enter_echo": [10, curses.KEY_RIGHT],
< 	"exit_client": curses.KEY_F10,
< 	"savemsg": [ord("w"), ord("W")],
< 	"save_favorites": [ord("f"), ord("F")],
< 	"answer": [ord("q"), ord("Q")],
< 	"deletemsg": curses.KEY_DC,
< 
< }
< 
313c293
<         elif key == keys["up"] and cursor > 0:
---
>         elif key == curses.KEY_UP and cursor > 0:
317c297
<         elif key == keys["down"] and cursor < len(echoareas) - 1:
---
>         elif key == curses.KEY_DOWN and cursor < len(echoareas) - 1:
321c301
<         elif key == keys["screen_up"]:
---
>         elif key == curses.KEY_PPAGE:
327c307
<         elif key == keys["screen_down"]:
---
>         elif key == curses.KEY_NPAGE:
333c313
<         elif key == keys["firstmsg"]:
---
>         elif key == curses.KEY_HOME:
336c316
<         elif key == keys["lastmsg"]:
---
>         elif key == curses.KEY_END:
340c320
<         elif key in keys["fetch_mail"]:
---
>         elif key == ord("g") or key == ord("G"):
342c322
<         elif key in keys["send_mail"]:
---
>         elif key == ord("s") or key == ord("S"):
358c338
<         elif key in keys["enter_echo"]:
---
>         elif key == 10 or key == curses.KEY_RIGHT:
370c350
<         elif key == keys["exit_client"]:
---
>         elif key == curses.KEY_F10:
569c549
<         elif key == keys["prevmsg"] and msgn > 0:
---
>         elif key == curses.KEY_LEFT and msgn > 0:
575c555
<         elif key == keys["nextmsg"] and msgn < len(msgids) - 1:
---
>         elif key == curses.KEY_RIGHT and msgn < len(msgids) - 1:
581c561
<         elif key == keys["nextmsg"] and (msgn == len(msgids) - 1 or len(msgids) == 0):
---
>         elif key == curses.KEY_RIGHT and (msgn == len(msgids) - 1 or len(msgids) == 0):
584c564
<         elif key == keys["up"] and y > 0:
---
>         elif key == curses.KEY_UP and y > 0:
587c567
<         elif key == keys["screen_up"]:
---
>         elif key == curses.KEY_PPAGE:
592c572
<         elif key == keys["screen_down"]:
---
>         elif key == curses.KEY_NPAGE:
597c577
<         elif key == keys["down"]:
---
>         elif key == curses.KEY_DOWN:
601c581
<         elif key == keys["firstmsg"]:
---
>         elif key == curses.KEY_HOME:
607c587
<         elif key == keys["lastmsg"]:
---
>         elif key == curses.KEY_END:
621c601
<         elif key in keys["savemsg"]:
---
>         elif key == ord("w") or key == ord("W"):
623c603
<         elif key in keys["save_favorites"]:
---
>         elif key == ord("f") or key == ord("F"):
625c605
<         elif not archive and (key in keys["answer"]):
---
>         elif not archive and (key == ord ("q") or key == ord("Q")):
642c622
<         elif favorites and key == keys["deletemsg"]:
---
>         elif favorites and key == curses.KEY_DC:
654c634
<         elif key == keys["exit_client"]:
---
>         elif key == curses.KEY_F10:
Это пока не все клавиши, просто некоторые там введены числом, и я ещё не смотрел, что они делают.
vit01 to vit01 (2015-08-29 13:44:40) [ссылка]

Re: Caesium

Ответ на сообщение
>Патч для юзерфрендли-переопределения клавиш (ничего своего не заменял, клавиши все дефолтные):
Пожалуй, оформлю это себе в виде модуля позже =)
spline to vit01 (2015-08-30 13:25:02) [ссылка]

Re: Caesium

Ответ на сообщение
> Пожалуй, оформлю это себе в виде модуля позже =)
Тогда подожду пока с патчем андроидовским. Там ведь совсем чуть-чуть надо, просто хочу, чтобы это в коде красивее выглядело :)
vit01 to spline (2015-08-30 13:37:30) [ссылка]