Page 4 of 7

Re: @notify

Posted: Wed Oct 09, 2013 7:46 pm
by Leency
# плохой разделитель, лучше реже используемый символ, вроде |.
Ок, пусть будет "bAutoClose", но я всё равно сомневаюсь в его целесообразности, т.к. показ ошибок требующих _обязательного_ внимания пользователя не задача @notify в принципе, а программы которая выявила эту ошибку. В этом случае должно быть сообщение в той программе "Ошибка такая-то" и кнопка "Ок" (увидел, понял).

Re: @notify

Posted: Wed Oct 09, 2013 8:09 pm
by yogev_ezra
Leency wrote:# плохой разделитель, лучше реже используемый символ, вроде |.
А если символ не обрабатывать, а выводить как есть? Если @notify сама выведет chr(13),chr(10) - строчка сама не переведётся?

Code: Select all

nmsg db "Title", 13, 10, "String", 0
Вот так не получится само собой 2 строки?
Leency wrote:Ок, пусть будет "bAutoClose", но я всё равно сомневаюсь в его целесообразности, т.к. показ ошибок требующих _обязательного_ внимания пользователя не задача @notify в принципе, а программы которая выявила эту ошибку. В этом случае должно быть сообщение в той программе "Ошибка такая-то" и кнопка "Ок" (увидел, понял).
Ну если эта возможность не добавляет много работы к уже существующей функциональности, то вреда от неё точно не будет, а польза определённо есть.

Re: @notify

Posted: Wed Oct 09, 2013 8:26 pm
by SoUrcerer
yogev, нет, две строчки не получится :)

Re: @notify

Posted: Wed Oct 09, 2013 8:58 pm
by e-andrew
Пока что без автозакрытия и флага на него

Posted: Wed Oct 09, 2013 8:59 pm
by punk_joker
Лучше исходник прикреплять

Re: @notify

Posted: Wed Oct 09, 2013 10:15 pm
by e-andrew
@notify
asm-версия 0.8b
  • • Убрана кнопка закрытия, для закрытия нужно кликнуть на само уведомление
  • • Добавлено автозакрытие через некоторое время (зависит от длины текста).
  • • Дублирование уведомления в BOARD
Автозакрытие можно отключить, дописав в конце уведомления знак "~".
Например:

Code: Select all

@notify Hello, World!!!~
Для закрытия такого уведомления нужно кликнуть по нему.

Планируется добавить полупрозрачность(под вопросом).
Пишите свои предложения.

Re: @notify

Posted: Wed Oct 09, 2013 10:20 pm
by punk_joker
Такой надо сразу на SVN и в автозборку

Re: @notify

Posted: Wed Oct 09, 2013 10:34 pm
by Leency
Нужно чтобы программа появлялась сверху экрана.
Я так понимаю, отступ сделан на тот случай, если панель задач сверху. Это решается функцией получения клиентской области экрана.

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

>> Автозакрытие можно отключить, дописав в конце уведомления знак "~".
А вот это - оличное решение.

Re: @notify

Posted: Wed Oct 09, 2013 10:47 pm
by Akyltist

Code: Select all

mcall   8, <edi, 10>, <4, 10>, 0x40000001, 0x00AAAAAA

Code: Select all

mcall   8, <edi, 10>, <4, 10>, 0x60000001, 0x00AAAAAA
если 29-й бит edx установлен - не рисовать рамку при нажатии на кнопку
если 30-й бит edx установлен - не прорисовывать кнопку

Re: @notify

Posted: Wed Oct 09, 2013 10:52 pm
by e-andrew
Исправлю, спасибо. Проверьте текст, а то я не уверен, правильно ли я написал

Re: @notify

Posted: Thu Oct 10, 2013 7:55 pm
by e-andrew
Вообщем все. Нефига не все. Сейчас буду пилить многострочность Пока делал, многое узнал.

@notify

Отличия от предыдущей версии (той что от Leency):
  • Изменен внешний вид приложения:
    • Убрана полупрозрачность
    • Сдвиг окошка от края
  • Уведомление закрывается по клику
  • Учет местонахождения панели при расчёте координат (уведомление не налезает на панель)
  • Дублирование уведомлений в BOARD с указанием времени
  • Возможность добавления важных уведомлений (то есть тех, которые по истечению времени сами не закроются).
  • Код написан на FASM, что теоретически должно сделать программу быстрее и меньше по размеру. Правда же такова, что размер уменьшился всего на 400 байт.
Для вызова важных уведомлений нужно в конец текста дописать символ "~"
Пример

Code: Select all

// Данное уведомление закроется после определенного промежутка времени
@notify Привет, мир!
// А это закроется только после того, как пользователь его увидит и нажмет на него
@notify Привет, мир!~

Re: @notify

Posted: Thu Oct 10, 2013 8:23 pm
by yogev_ezra
eAndrew wrote:Вообщем все. Нефига не все. Сейчас буду пилить многострочность Пока делал, многое узнал.
Всё-таки очень хотелось бы ещё поддержку многострочности, пусть даже через знак #, если тебе так удобно.
eAndrew « Thu Oct 10, 2013 8:12 pm » если я сделаю многострочность, то скорость запуска немного замедлится, так как теперь нужно будет бежать по каждому пикселю по высоте. нормально?
eAndrew « Thu Oct 10, 2013 8:13 pm » я это уже реализовывал, но потом удалил, так что особых трудностей не возникнет
eAndrew « Thu Oct 10, 2013 8:13 pm » в качестве символа перевода будет \n (0xA)
yogev_ezra « Thu Oct 10, 2013 8:14 pm » eAndrew: \n гораздо лучше, конечно. Я просто понял, что тебе такой значок не удаётся сделать.
eAndrew « Thu Oct 10, 2013 8:16 pm » Просто я незнаю, как асм будет обрабатывать "qwe\nrty", как строку "qwe\nrty", а не "qwe*новая строка*rty"
eAndrew wrote:Код написан на FASM, что теоретически должно сделать программу быстрее и меньше по размеру. Правда же такова, что размер уменьшился всего на 400 байт.
А во время сравнения размеров ты учёл ещё паковку kpack?
eAndrew « Thu Oct 10, 2013 8:07 pm » что за kpack?
yogev_ezra « Thu Oct 10, 2013 8:09 pm » eAndrew: Родной архиватор KolibriOS. Ты, наверное, сравнивал размер заархивированного @notify на C-- с незаархивированным своим на ASM.
yogev_ezra « Thu Oct 10, 2013 8:10 pm » eAndrew: Если твою версию тоже заархивировать, она станет ещё в 1.5-2 раза меньше.
eAndrew « Thu Oct 10, 2013 8:10 pm » так тут еще и архиватор есть.... *свист*)
eAndrew « Thu Oct 10, 2013 8:10 pm » и программа не замедляется?
yogev_ezra « Thu Oct 10, 2013 8:14 pm » eAndrew: Для программ на 1KB замедление из-за архиватора на микросекунды, человеческим глазом незаметно и даже компьютером не всегда удаётся померять. Для больших программ - да, заметно, например для FPLAY замедление на 5-10 секунд. Но, поскольку архиватор работает только во время запуска программы, а программы вроде FPLAY запускают один раз и потом пользуются много раз, то эту разницу можно принять.
yogev_ezra « Thu Oct 10, 2013 8:16 pm » eAndrew: Вот программы, которые часто запускаются и сразу же закрываются, если они ещё и большие, то лучше не архивировать, конечно. Например, если б @notify была размером с FPLAY, то при её предназначении, конечно, лучше её не архивировать. Но так как она занимает 1KB, то всё нормально и можно архивировать.

Re: @notify

Posted: Thu Oct 10, 2013 9:40 pm
by Akyltist
а можно я внесу поддержку многострочности?) прямо сюда, прямо сегодня!!!

вопросов собственно несколько:

Нужен ли вообще разделитель, могу просто основываясь на длинне данных делить на слова и выводить?
всем подойдет разделитель 0x13, если нужен разделитель?
и какое выравнивание делать, по центру или по левому краю с отступом?

Re: @notify

Posted: Thu Oct 10, 2013 10:08 pm
by e-andrew
Делай, если хочешь). Разделитель 0x13, выравнивание у меня по левому, но наверное будет лучше сделать по правому. Только никак не могу рассчитать ширину окна.

Re: @notify

Posted: Thu Oct 10, 2013 10:14 pm
by yogev_ezra
eAndrew wrote:Делай, если хочешь). Разделитель 0x13, выравнивание у меня по левому, но наверное будет лучше сделать по правому. Только никак не могу рассчитать ширину окна.
Как уже заметила CleverMouse, правильный разделитель 0x0A (10 decimal).