Re: Плагин "OSD"
Posted: 17 Feb 2010, 8:27 Wed
Korney San , Ленин жив ? 

WestByte Software support board
https://downloadmaster.net/wbforum/
В коме, но ещё жив. Скоро думаю выводить из.marcipan wrote:Korney San , Ленин жив ?
Скорее, его разработка ещё ПОКА приостановлена.Qwertiy wrote:Этот плагин ещё в разработке? Мне бы очень пригодился...
А что бы Вы хотели ещё?Qwertiy wrote:нашёл ссылки только на DMOSDalpha.zip (работает, но возможностей маловато)
Хорошо что "ПОКА"Korney San wrote:Скорее, его разработка ещё ПОКА приостановлена.Qwertiy wrote:Этот плагин ещё в разработке? Мне бы очень пригодился...![]()
В этой теме перечислены уже внесённые изменения, но более новая версия принципиально не работает... Но и после неё тоже есть перечисленные внесённые изменения/исправления.Korney San wrote:А что бы Вы хотели ещё?Qwertiy wrote:нашёл ссылки только на DMOSDalpha.zip (работает, но возможностей маловато)
Эмм... не вижу особого смысла, потому что актуальность индивидуального слежения за закачкой пропадает сразу после её скачивания. Не могли бы Вы объяснить подробнее, чего Вы хотите этим добиться? Составление и вывод списка в настройки будет утяжелять плагин...Qwertiy wrote:1. Возможность слежения за перечисленными закачками. Т. е. есть сделать две вкладки (а лучше кнопка для переключения - экономия места на форме и более красивый вид) - на одной отображается выбранное крупным шрифтом, на другой есть список со всеми закачками, в котором отмечаются те, которые надо отображать + флажки (или другие элементы) для групповых изменений выделения (все загружаемые, все ожидающие и т. д.).
Активных секций не могу, я могу вывести цифру, которая в документации обозначена как "максимальное к-во секций которое может быть открыто закачкой с указанным ID".Qwertiy wrote:2. Вместо буквы З (которая, вероятно, является сокращением "Закачивается") увидеть число активных секций файла, для остальных типов использовать некоторую букву, как сейчас.
Скорость легко, со временем сложнее. Если для скорости закачка на паузе ничего не даёт (скорость = 0), то для времени - что брать: текущее оставшееся время (=0) или то, которое было до остановки? Если до остановки - его надо в момент остановки где-то запоминать, чтобы потом собрать полноценную статистику... слава богу, соответствующий сервис давно написан.Qwertiy wrote:3. Показывать скорось закачки по каждому файлу и суммарную (как это сделано в основном окне DM). То же относится к оставшемуся времени.
Тут проще задать что-то вроде "обновлять цифру раз в, с" с шагом 5, тогда получается "простая" формулаQwertiy wrote:4. Показывать проценты с соответствующей точностью - должно быть видно, что они меняются, т. к. при большом размере файла и небольшой скорости закачки изменение 0.1% может занимать несколько минут. Подразумевается, что точность определяется динамически в зависимости от скорости и размера файла. Хотя не уверен в необходимости этого пункта при реализации пункта 3.
Code: Select all
десятичных цифр = ceil ( log ( ( размер файла, байт / скорость, байт/с ) / ( 100 * период обновления, с ) )
Вроде было несложно, можно сделать.Qwertiy wrote:5. Возможность перемещения формы по экрану перетаскиванием.
Трудности с вычислением, что конкретно в данной области - инфа о файле или другая инфа, кроме того, текст может переносится по строкам...Qwertiy wrote:6. Возможность открыть окно загрузки файла (или сам файл, если он скачан) двойным щелчком по соответствующей области формы.
Можно сделать.Qwertiy wrote:7. Флажок Allways on top на основной вкладке.
0, 0 я точно ставил, вот весь экран не пробовал - проверю.Qwertiy wrote:8. Возможность занять весь экран формой - что-то у меня не получилось поставить соответствующий размер вручную, как и положение с координатами (0,0).
Что значит "нестандартное поведение мыши" ?Qwertiy wrote:9. Нормальную форму (можно со стилем границы None) - мне не нравится нестандартное поведение мыши с тем, что используется сейчас...
Общий или индивидуально по закачкам? Во втором случае смотрите ответ к п.6.Qwertiy wrote:А показывать индикатор загрузки возможно? Если да, то было бы прекрасно его увидеть (возможно даже, в качестве фона надписи)...
Кажется, Вы меня немного неверно поняли... Я не имел в виду сохраняемые настройки. Просто во время работы плагина переключиться на список всех закачек и отметить в нём, какие из них надо отображать независимо от их состояния. Просто в списках есть куча всего, и если я скачиваю несколько файлов, особенно с файлообменников, то я хочу видеть их реальное состояние (закачка/пауза/ошибка) - но только этих нескольких файлов, а не десятка файлов в состоянии паузы или ошибки, которые меня в данный момент не интересуют.Korney San wrote:Эмм... не вижу особого смысла, потому что актуальность индивидуального слежения за закачкой пропадает сразу после её скачивания. Не могли бы Вы объяснить подробнее, чего Вы хотите этим добиться? Составление и вывод списка в настройки будет утяжелять плагин...Qwertiy wrote:1. Возможность слежения за перечисленными закачками. Т. е. есть сделать две вкладки (а лучше кнопка для переключения - экономия места на форме и более красивый вид) - на одной отображается выбранное крупным шрифтом, на другой есть список со всеми закачками, в котором отмечаются те, которые надо отображать + флажки (или другие элементы) для групповых изменений выделения (все загружаемые, все ожидающие и т. д.).
Конечно, вещь полезная, но как-то неестественно отображать ограничение первым... Пусть остаётся как есть "З", а максимальное количество секций можно сунуть куда-нибудь ещё.Korney San wrote:Активных секций не могу, я могу вывести цифру, которая в документации обозначена как "максимальное к-во секций которое может быть открыто закачкой с указанным ID".Qwertiy wrote:2. Вместо буквы З (которая, вероятно, является сокращением "Закачивается") увидеть число активных секций файла, для остальных типов использовать некоторую букву, как сейчас.
Если закачка на паузе, то не отображать ни скорость, ни время... А если она не на паузе, но реальная скорость 0, то сказать, что время для неё бесконечно (вывести знак бесконечности 0x221E или буквами INF).Korney San wrote:Скорость легко, со временем сложнее. Если для скорости закачка на паузе ничего не даёт (скорость = 0), то для времени - что брать: текущее оставшееся время (=0) или то, которое было до остановки? Если до остановки - его надо в момент остановки где-то запоминать, чтобы потом собрать полноценную статистику... слава богу, соответствующий сервис давно написан.Qwertiy wrote:3. Показывать скорось закачки по каждому файлу и суммарную (как это сделано в основном окне DM). То же относится к оставшемуся времени.
Подумал, что не стоит менять количество цифр во время работы - это либо сложно, либо может оказаться нежелательным при скачках скорости... Может, проще задать в настройках размер, который будет служить некой единицей изменения и считать количество знаков исходя из него и размера файла?Korney San wrote:Тут проще задать что-то вроде "обновлять цифру раз в, с" с шагом 5, тогда получается "простая" формулаQwertiy wrote:4. Показывать проценты с соответствующей точностью - должно быть видно, что они меняются, т. к. при большом размере файла и небольшой скорости закачки изменение 0.1% может занимать несколько минут. Подразумевается, что точность определяется динамически в зависимости от скорости и размера файла. Хотя не уверен в необходимости этого пункта при реализации пункта 3.Code: Select all
десятичных цифр = ceil ( log ( ( размер файла, байт / скорость, байт/с ) / ( 100 * период обновления, с ) )
Насколько я знаю, это делается установкой флага в MouseDoun, перемещением формы в MouseMove (если флаг установлен) и снятием флага в MouseUp. Хотя не приходилось писать такое для формы (но перетаскивание кнопок по форме делал)...Korney San wrote:Вроде было несложно, можно сделать.Qwertiy wrote:5. Возможность перемещения формы по экрану перетаскиванием.
См. ниже...Korney San wrote:Трудности с вычислением, что конкретно в данной области - инфа о файле или другая инфа, кроме того, текст может переносится по строкам...Qwertiy wrote:6. Возможность открыть окно загрузки файла (или сам файл, если он скачан) двойным щелчком по соответствующей области формы.
(0,0) сейчас работает... Наверное, какой-то глюк был... На счёт размера - а в каких единицах он указывается?Korney San wrote:0, 0 я точно ставил, вот весь экран не пробовал - проверю.Qwertiy wrote:8. Возможность занять весь экран формой - что-то у меня не получилось поставить соответствующий размер вручную, как и положение с координатами (0,0).
Действия, производимые мышью над формой передаются тому, что находится под формой.Korney San wrote:Что значит "нестандартное поведение мыши" ?Qwertiy wrote:9. Нормальную форму (можно со стилем границы None) - мне не нравится нестандартное поведение мыши с тем, что используется сейчас...
Не на тот Вы пункт ссылаетесь, наверное... Имелся в виду индикатор загрузки для каждого из файлов, причём не просто ProgressBar, а именно такой индикатор, как в окне закачки DM...Korney San wrote:Общий или индивидуально по закачкам? Во втором случае смотрите ответ к п.6.Qwertiy wrote:А показывать индикатор загрузки возможно? Если да, то было бы прекрасно его увидеть (возможно даже, в качестве фона надписи)...
Почему же, вполне понял. Буду делать два режима: по состоянию (имеющийся) и по ID (то, что хотите Вы).Qwertiy wrote:Кажется, Вы меня немного неверно поняли... Я не имел в виду сохраняемые настройки. Просто во время работы плагина переключиться на список всех закачек и отметить в нём, какие из них надо отображать независимо от их состояния. Просто в списках есть куча всего, и если я скачиваю несколько файлов, особенно с файлообменников, то я хочу видеть их реальное состояние (закачка/пауза/ошибка) - но только этих нескольких файлов, а не десятка файлов в состоянии паузы или ошибки, которые меня в данный момент не интересуют.
Увы, плагинам доступна далеко не вся информация. Например, приоритет закачки можно узнать, только прочитав xml-список закачек...Qwertiy wrote:Конечно, вещь полезная, но как-то неестественно отображать ограничение первым... Пусть остаётся как есть "З", а максимальное количество секций можно сунуть куда-нибудь ещё.
Если время бесконечно, то сумма времён - что?Qwertiy wrote:Если закачка на паузе, то не отображать ни скорость, ни время... А если она не на паузе, но реальная скорость 0, то сказать, что время для неё бесконечно (вывести знак бесконечности 0x221E или буквами INF).
В этом случае найдётся человек, который спросит "А почему именно эта цифра?". В моём же случае есть какая-никакая аргументированная зависимость.Qwertiy wrote:Подумал, что не стоит менять количество цифр во время работы - это либо сложно, либо может оказаться нежелательным при скачках скорости... Может, проще задать в настройках размер, который будет служить некой единицей изменения и считать количество знаков исходя из него и размера файла?
А что делать с классом, у которого нет этих событий и который работает через сообщения Windows?Qwertiy wrote:Насколько я знаю, это делается установкой флага в MouseDoun, перемещением формы в MouseMove (если флаг установлен) и снятием флага в MouseUp. Хотя не приходилось писать такое для формы (но перетаскивание кнопок по форме делал)...
В пикселях экрана.Qwertiy wrote:(0,0) сейчас работает... Наверное, какой-то глюк был... На счёт размера - а в каких единицах он указывается?
Отличное видео. Чем записывали? И чем у Вас сделана "звёздочка" при щелчке мышью?Qwertiy wrote:Действия, производимые мышью над формой передаются тому, что находится под формой.
Кроме того, при появлении окна заметно, что форма закрывает его после некоторой задержки, что не является естественным поведением для формы с OllwaysOnTop = True.
Сплошная полоса-то?Qwertiy wrote:Имелся в виду индикатор загрузки для каждого из файлов, причём не просто ProgressBar, а именно такой индикатор, как в окне закачки DM...
После этих слов я вижу три варианта.Qwertiy wrote:Теперь о том, как я бы это сделал (быстрый вариант - с использованием Dock, хотя можно лучше).
С чего бы? В Delphi есть функция переноса по словам.Qwertiy wrote:будут проблемы с автоматическим переносом текста...
Только они должны быть не двумя режимами, а совмещены в один. Т. е. сначала отображаются отмеченные закачки, затем (если помечен флажок Загружаемые) загружаемые (но отсутствующие в списке отмеченных) и т. д. по категориям.Korney San wrote:Почему же, вполне понял. Буду делать два режима: по состоянию (имеющийся) и по ID (то, что хотите Вы).
А откуда сумма времён? Посмотрите, как считает DM: общее время - это время, за которое с текущей суммарной скоростью закачается объём, равный сумме недокачанного по всем активным закачкам... Если суммарная скорость равна 0 (бывает), то бесконечность.Korney San wrote:Если время бесконечно, то сумма времён - что?![]()
Если Вы можете определить, с какими именно закачками работает Auto Switch, то для них можно сделать так... Я им не пользуюсь и считаю неестественным учитывать закачки в состоянии паузы.Korney San wrote:И я немного неточно сказал, я имел в виду закачки в состоянии "очередь", которые скачивались (были скорость и время), потом останавливались и были запущены вновь, т.е. скорость и время =0 (например, у меня на работе постоянно работает Auto Switch). Теоретически, в общей сумме должно учитываться время, остававшееся на момент остановки такой закачки - она ведь никуда не делась и будет скачиваться, как только до неё дойдёт очередь (каламбур, да).
А в моём работает принцип "Не нравится - поменяй"Korney San wrote:В этом случае найдётся человек, который спросит "А почему именно эта цифра?". В моём же случае есть какая-никакая аргументированная зависимость.Qwertiy wrote:Подумал, что не стоит менять количество цифр во время работы - это либо сложно, либо может оказаться нежелательным при скачках скорости... Может, проще задать в настройках размер, который будет служить некой единицей изменения и считать количество знаков исходя из него и размера файла?
Поменять на другой...Korney San wrote:А что делать с классом, у которого нет этих событий и который работает через сообщения Windows?
Я не понимаю, почему нужно именно OSD... Чем плоха обыкновенная форма?Korney San wrote:OSD и должен быть таким - это не обычная форма, это область вывода информации, не влияющая на работу остального. Поэтому она и пропускает "сквозь себя" все щелчки. Другое дело, что в хороших программах эта особенность выключается при нажатии определённой клавиши (обычно Ctrl), позволяя таскать форму и изменять её размер. Я посчитал, что это пока лишнее.
А перерисовывается форма каждые 5 секунд, при обновлении информации.
Как и написано в левом верхнем углу - незарегистрированной версией HyperCam 3Korney San wrote:Отличное видео. Чем записывали? И чем у Вас сделана "звёздочка" при щелчке мышью?
Не назвал бы я его сплошной полосой... Вот это:Korney San wrote:Сплошная полоса-то?Qwertiy wrote:Имелся в виду индикатор загрузки для каждого из файлов, причём не просто ProgressBar, а именно такой индикатор, как в окне закачки DM...
На Делфи я не пишу... Если бы был пример плагина на VB.NET, C#, VB6 или C++, то я бы попробовал сделать плагин...Korney San wrote:После этих слов я вижу три варианта.
1. Сделайте форму, как она видится Вам. Я прицеплю всё остальное. (простой вариант)
2. Я могу выслать Вам исходники (модуля OSD или всего плагина). Вы сделаете свою версию.
3. Объединим первые два - давайте работать над плагином вместе. Связь по ICQ, Jabber (GoogleTalk) или MRA.
Я имел в виду, что кнопка с AutoSize=True и Dock=Top текст по словам сама не переносит...Korney San wrote:С чего бы? В Delphi есть функция переноса по словам.Qwertiy wrote:будут проблемы с автоматическим переносом текста...
Можно и так.Qwertiy wrote:Т. е. сначала отображаются отмеченные закачки, затем (если помечен флажок Загружаемые) загружаемые (но отсутствующие в списке отмеченных) и т. д. по категориям.
Ожидающих = в очереди?Qwertiy wrote:Забыл сказать: Хотелось бы дополнительную опцию для ожидающих закачек: количество, размер, время в одной строке.
Блин, а я турбовелосипед изобретаю...Qwertiy wrote:А откуда сумма времён? Посмотрите, как считает DM: общее время - это время, за которое с текущей суммарной скоростью закачается объём, равный сумме недокачанного по всем активным закачкам... Если суммарная скорость равна 0 (бывает), то бесконечность.
Как всегда, надо вывести нечто среднее.Qwertiy wrote:А в моём работает принцип "Не нравится - поменяй"
Я программист-любитель. Поэтому у меня два способа: найти готовый модуль и допилить под себя (заодно узнать много нового) - быстро, либо вдумчиво перелопатить гору литературы и сайтов, чтобы написать свой - медленно. Обычно удаётся пойти первым вариантом.Qwertiy wrote:Поменять на другой...Korney San wrote:А что делать с классом, у которого нет этих событий и который работает через сообщения Windows?
Я неточно выразился. OSD - вид информационного окна (если говорить по-русски), который не должен взаимодействовать с органами ввода данных (пока не потребуется специально). В этом его отличие от обычного информационного окна, которое можно закрыть, свернуть и т.д.Qwertiy wrote:Я не понимаю, почему нужно именно OSD... Чем плоха обыкновенная форма?
Спасибо, опробую.Qwertiy wrote:Как и написано в левом верхнем углу - незарегистрированной версией HyperCam 3Она же и ставит звёздочки.
Сразу нет. Повторюсь - плагин не может получить специфических данных.Qwertiy wrote:Не назвал бы я его сплошной полосой... Вот это:
Где-то на форуме была ссылка на недоделанный вариант под C++...Qwertiy wrote:На Делфи я не пишу... Если бы был пример плагина на VB.NET, C#, VB6 или C++, то я бы попробовал сделать плагин...
Korney San wrote:Ожидающих = в очереди?
А в чём преимущество этого отличия? Почему нельзя использовать обыкновенное окно?Korney San wrote:Я неточно выразился. OSD - вид информационного окна (если говорить по-русски), который не должен взаимодействовать с органами ввода данных (пока не потребуется специально). В этом его отличие от обычного информационного окна, которое можно закрыть, свернуть и т.д.Qwertiy wrote:Я не понимаю, почему нужно именно OSD... Чем плоха обыкновенная форма?
Собственно, ждал такого ответа с самого начала... Жаль.Korney San wrote:Сразу нет. Повторюсь - плагин не может получить специфических данных.Qwertiy wrote:Не назвал бы я его сплошной полосой... Вот это:
Проще самому попытаться сделать... Только время на это надо...Korney San wrote:Где-то на форуме была ссылка на недоделанный вариант под C++...Qwertiy wrote:На Делфи я не пишу... Если бы был пример плагина на VB.NET, C#, VB6 или C++, то я бы попробовал сделать плагин...
Таки да.Qwertiy wrote:Korney San wrote:Ожидающих = в очереди?
Окно МОЖНО использовать, но тогда теряется преимущество OSD - возможность работать СКВОЗЬ выводимую информацию. Ближайший аналог - HUD на самолётах: лётчик видит информацию приборов прямо на стекле кабины, вместе с окружающим ландшафтом.Qwertiy wrote:А в чём преимущество этого отличия? Почему нельзя использовать обыкновенное окно?
Это не я. Чесслово.Qwertiy wrote:Собственно, ждал такого ответа с самого начала... Жаль.
Вопрос в том, нужно ли это отличие именно для этого плагина. Лично я не уверен в том, что это - преимущество...Korney San wrote:Окно МОЖНО использовать, но тогда теряется преимущество OSD - возможность работать СКВОЗЬ выводимую информацию. Ближайший аналог - HUD на самолётах: лётчик видит информацию приборов прямо на стекле кабины, вместе с окружающим ландшафтом.Qwertiy wrote:А в чём преимущество этого отличия? Почему нельзя использовать обыкновенное окно?
Это не вопрос, это спор о технологии вывода информации на экран. Если окно имеет органы управления и реагирует на нажатия - это (в названиях) InfoWindow, если нет - OSD. Прозрачность для OSD обязательна, для InfoWindow опциональна.Qwertiy wrote:Вопрос в том, нужно ли это отличие именно для этого плагина. Лично я не уверен в том, что это - преимущество...
Красиво. Но это потребует создания новой формы вывода на экран.Qwertiy wrote:Теперь о том, что мне хочется.