[#] Caesium
spline(station13, 1) — All
2015-08-27 13:07:32


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

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

Решение с избранными сообщениями с одной стороны не очень удачное, а с другой - это позволяет держать избранное прямо в стандартной базе.

[#] Caesium
spline(station13, 1) — All
2015-08-28 09:19:17


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

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

[#] Re: Caesium
vit01(mira, 1) — spline
2015-08-28 10:07:13


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

Видимо, на андроиде из-за этого чуть изменилось поведение :)

Клавиша End теперь увеличивает номер прочитанного сообщения на единицу и выходит в список эх. Раньше не увеличивала.

[#] Re: Caesium
vit01(mira, 1) — spline
2015-08-28 12:26:40


> Копать надо в сторону Esc-последовательностей на андроиде или в том ncurses, который у тебя на аппарате. Суть в том, что всякие там функциональные клавиши, Home, End и прочие PageUp'ы через такие вот последовательности обрабатывают. То есть ловится esc или из-за медленной отправки сканкода или из-за кривости терминала.

Подключился к телефону по ssh. Полёт цезия нормальный, значит дело в терминале. Перепробовал 3 терминала на телефоне в разных режимах эмуляции, всё без толку с Home/End. Значит придётся просто заменить клавиши, т.к. Esc последовательности просто криво идут.

Кстати, обнаружил ещё, что получение сообщений нельзя запустить во время чтения эхи.
Также нашёл вот такую ошибку при нажатии на PageDown: http://ii-net.tk/ii/files/9zw8f4k0tXEoeZyFB0Ax.png

[#] Re: Caesium
spline(station13, 1) — vit01
2015-08-28 10:18:28


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

Насчёт увеличения номера сообщения. Это нормальное поведение. То есть, если я читал-читал, а потом вышел, то я увижу не последнее прочитанное мной сообщение, а то, которое сразу за ним.

[#] Re: Caesium
vit01(mira, 1) — spline
2015-08-28 16:23:26


> Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.

Я и не предлагал брать это в апстрим. Клиент твой, сочетания клавиш твои. Просто уточнил, что буду делать при создании Caesium-FixEsc патча.

[#] Re: Caesium
vit01(mira, 1) — spline
2015-08-29 14:48:42


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

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

Ещё собирался сделать вынос параметров сочетаний клавиш наверх скрипта, но это и без учёта андроидов полезно будет :)

[#] Re: Caesium
spline(station13, 1) — vit01
2015-08-28 13:10:29


>Значит придётся просто заменить клавиши, т.к. Esc последовательности просто криво идут.
Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.

>Кстати, обнаружил ещё, что получение сообщений нельзя запустить во время чтения эхи.
Это описано в README. И это очень правильно, ящитаю. Изначально я вообще хотел разделить на разные приложения мейлер, тоссер и ридер, но потом передумал.

>Также нашёл вот такую ошибку при нажатии на PageDown: http://ii-net.tk/ii/files/9zw8f4k0tXEoeZyFB0Ax.png
Поправил. Глупая в сущности ошибка.

[#] Re: Caesium
spline(station13, 1) — vit01
2015-08-29 13:43:51


>> Это я в апстрим не возьму. Клиент никогда не позиционировался как приложение для мобильных платформ и затачивался строго на *NIX на десктопе/лаптопе.
>Я и не предлагал брать это в апстрим. Клиент твой, сочетания клавиш твои. Просто уточнил, что буду делать при создании Caesium-FixEsc патча.
Патч вышли. Патчи буду рядом складывать, чтобы пользователь сам патчил при желании =)

[#] Re: Caesium
vit01(mira, 1) — vit01
2015-08-29 17:44:40


Патч для юзерфрендли-переопределения клавиш (ничего своего не заменял, клавиши все дефолтные):

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:

Это пока не все клавиши, просто некоторые там введены числом, и я ещё не смотрел, что они делают.

[#] Re: Caesium
vit01(mira, 1) — spline
2015-08-30 17:37:30


> Пожалуй, оформлю это себе в виде модуля позже =)
Тогда подожду пока с патчем андроидовским. Там ведь совсем чуть-чуть надо, просто хочу, чтобы это в коде красивее выглядело :)

[#] Re: Caesium
spline(station13, 1) — vit01
2015-08-30 17:25:02


>Патч для юзерфрендли-переопределения клавиш (ничего своего не заменял, клавиши все дефолтные):

Пожалуй, оформлю это себе в виде модуля позже =)