Пожелания или дополнения к библиотеке
|
|
electrik | Дата: Вторник, 04.01.2022, 20:18 | Сообщение # 31 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Привет. Давно не пользовался Window9. Не помню в какой ветке я писал про навигацию с клавиатуры. Сейчас поставил последнюю версию и офигел! Огромное спасибо, это очень ценно, теперь, наконец табы и шифт табы работают. С радиокнопками немного странная навигация, но возможно, я ещё не разобрался со стилями. Неужели, я опять приду к своему любимому FreeBasic! Я уже лет 7 на пурике сижу, из-за gui и некоторыхх плюшек. НО всё равно FBC интересней и более гибкий. Надо снова возрождать написание плюшек для FreeBasic. Смотрел, исходники Window9, она со времён трёх летней давности была неплохо переписана? Есть предложение, что публиковалось на форуме по поводу Map, запихать в window9. Так же думаю, можно и очереди, короче, все алгоритмы которые могут быть весьма полезны. QT - тоже начинался как gui, а сейчас оброс всякой кроссплатформенной всячиной.
|
|
| |
haav | Дата: Среда, 05.01.2022, 04:49 | Сообщение # 32 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Цитата electrik ( ) С радиокнопками немного странная навигация, но возможно, я ещё не разобрался со стилями.
Работа с табами по клавише TAB идет жестко сверху->вправо->вниз , не обращая внимания ни на номера гаджетов , ни на группы кнопок. При желании , я могу создать какую-нибудь функцию , которая будет устанавливать поведение переключения по TAB например по номерам гаджетов. Или макрос ввести , чтобы при компиляции библиотеки устанавливалось нужное поведение. Пока только ты обратил внимание на это , другие пользователи судя по всему вообще не используют TABSTOP или их устраивает такое поведение. Если тебе это нужно , напиши как тебе лучше , мне не долго это сделать. Макрос вообще дело 5 минут. А как в PB на винде вообще радиокнопки между собой переключаются? При использовании TAB , фокус попадает только на текущую выделенную кнопку из группы , но как переключить на другую кнопку из группы я так и не понял. Ни стрелки , ни табы не помогают. Может конечно у меня версия PB старая и в ней это не работало нормально.
Цитата Смотрел, исходники Window9, она со времён трёх летней давности была неплохо переписана?
Да , кое-что добавлено , исправлено
Цитата Есть предложение, что публиковалось на форуме по поводу Map, запихать в window9.
Я тут писал контейнеры: https://users.freebasic-portal.de/freebas....ers.zip
Но добавлять их в библиотеку не буду , не так часто эти контейнеры требуются. Если понадобится , можно просто подключить готовые файлы , те что в архиве. И кстати , если говорить про контейнеры , то несмотря даже на английскую справку , на оф. форуме ими практически никто не заинтересовался. Или я плохо сделал , или это просто нахрен никому не нужно. Так зачем я буду это пихать в GUI библиотеку? Я когда писал еще на пурике , очень мало видел исходников с MAP , хоть там это встроено на уровне компилятора.
Цитата Я уже лет 7 на пурике сижу, из-за gui и некоторыхх плюшек.
Чем похвастаешь в плане проектов на пурике?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Среда, 05.01.2022, 13:46 | Сообщение # 33 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата haav ( ) Или я плохо сделал , или это просто нахрен никому не нужно. Я использую vector в этом варианте: https://users.freebasic-portal.de/freebasicru/vector.html В containers vector гораздо медленнее почему-то
|
|
| |
haav | Дата: Среда, 05.01.2022, 17:59 | Сообщение # 34 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Цитата WQ ( ) В containers vector гораздо медленнее почему-то
Да , есть такое дело. Хотелось сделать более удобным использование , но это сказывается на производительности. Эх , если бы в макросредствах FB были необязательные параметры как в MASM. А так пришлось костыли лепить , а они тоже "кушать хотят". Вот за последнее время столько всяких макросов в FB сделали , я бы их все поменял бы не глядя на возможность использовать макросы с необязательными параметрами.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Четверг, 06.01.2022, 03:24 | Сообщение # 35 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| По поводу навигации с клавиатуры, я посмотрю и потом точно скажу как должно работать. Ну а похвастаться, самое большое что я написал на пурике, но это не имеет отношения к GUI - Newfon Sapi и RU_TTS_SAPI. Это подключённые синтезаторы речи к speech api. В них я активно юзаю мапы чтобы находить отдельные символы когда неизвестно сколько их будет и в какой последовательности. Так же у меня на мапах реализован словарь ударений. Весь COM реализован на пурике. Интерфейсы - это конечно удобно, но имитировать множественное наследование, когда этим не пользовался ну такое. В 2017 году с другом пол года писали программу для воспроизведения музыки с VK, но потом API прикрыли, и проект как родился так и здох. Мои знакомые реверс инженирингом нашли как подцепиться, но желание уже пропало, ибо править каждый месяц изменения в VK не охото. А так, восновном пишу всякую мелочёвку, которая не заслуживает внимания. Как любой добравшийся до простого GUI, написал заготовку двух панельного файлового менеджера. Там заюзаны виртуальные ListView.
|
|
| |
haav | Дата: Четверг, 06.01.2022, 07:12 | Сообщение # 36 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Я решил , что все таки макрос лучше. Внес изменения в исходный код. Поведение будет следующим:
1) Если в файле window9.bi установлен макрос w9TabStopSortByGadget , то переключение TABSTOP будет по номерам гаджетов. 2) Если в файле window9.bi не установлен макрос , то переключение будет по координатам сверху->вправо->вниз.
В данный момент исходный код обновлен на sourceforge. Бинарные собранные библиотеки не обновлял (они работают по координатам). Конечно же это только для Windows.
Для использования переключения по номерам гаджетов нужно раскомментировать строку в файле window9.bi:
'#define w9TabStopSortByGadget
и собрать библиотеку заново из исходных кодов.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
haav | Дата: Четверг, 06.01.2022, 18:15 | Сообщение # 37 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| @WQ
Спасибо за сообщение о тормознутости. Мне кажется , что я ускорил работу MAP и VECTOR. Нашел банальное решение по оптимизации (и почему только раньше так не сделал...).
Будь добр , проверь на своих примерах скорость работы по отношению к тому варианту, который ты использовал.
Если скорость будет сопоставимой , я думаю тебе новый вариант больше понравится. Удобство и возможности там на порядок выше: поддержка типа STRING с автоматически выделяемой памятью. Так же при желании память автоматически выделяется для данных у типов zstring ptr , wstring ptr. Поддержка выделения памяти для пользовательских типов, у которых память может быть подсчитана на этапе компиляции.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Пятница, 07.01.2022, 14:11 | Сообщение # 38 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата haav ( ) Спасибо за сообщение о тормознутости. Мне кажется , что я ускорил работу MAP и VECTOR. Нашел банальное решение по оптимизации (и почему только раньше так не сделал...).Будь добр , проверь на своих примерах скорость работы по отношению к тому варианту, который ты использовал.
Если скорость будет сопоставимой , я думаю тебе новый вариант больше понравится. Удобство и возможности там на порядок выше: поддержка типа STRING с автоматически выделяемой памятью. Так же при желании память автоматически выделяется для данных у типов zstring ptr , wstring ptr. Поддержка выделения памяти для пользовательских типов, у которых память может быть подсчитана на этапе компиляции. Да, создание вектора стало в несколько раз быстрее, при больших размерах вектора серьезная разница Конечно, в таком виде удобнее, пока я использовал в виде макроса только с типами byte и long, но поддержка zstring и т.д. тоже пригодится Во многих случаях можно будет заменить массив, там, где нужно добавлять-удалять элементы
|
|
| |
electrik | Дата: Воскресенье, 09.01.2022, 13:38 | Сообщение # 39 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Я ещё не собирал window9 с исходников, друг пробовал. Он пока новичёк во FreeBasic и столкнулся с проблемой, что не может найти zlib для x64. В поставке с FreeBasic, есть либа только в x86. Я глянул тут на сайте, получается, что она тоже для x86. Думаю, для таких случаев надо перевыложить комплект, чтобы народ не парился.
|
|
| |
haav | Дата: Воскресенье, 09.01.2022, 14:44 | Сообщение # 40 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Цитата electrik ( ) В поставке с FreeBasic, есть либа только в x86. Я глянул тут на сайте, получается, что она тоже для x86.
Выложил сюда
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Среда, 26.01.2022, 01:28 | Сообщение # 41 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Привет. Чтобы фокус не застревал в EditorGadget, нужно сделать модификацию. Я как всегда со своими табами и шифт табами. Расскажу как оно работает в пурике. Если EditorGadget только для чтения, тогда таб и шифт таб работают как обычно. если EditorGadget включён для ввода, таб - ставит табуляцию, а шифт таб уходит на предыдущий элемент. Вообще можно было бы сделать разное поведение, к примеру доп флаг, который будет выключать возможность ставить табуляцию, и переходить на следующий элемент, но при этом, у меня будет многострочное поле для редактирования. По умолчанию убирать установку значка табуляции не надо, ибо такое поведение заложено в многострочных полях, и думаю, есть у кого-то привычки такого использования. А вот опционально - ну как получится.
Ещё раз огромное спасибо, что вносишь правки.
|
|
| |
haav | Дата: Среда, 26.01.2022, 03:52 | Сообщение # 42 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Есть 3 сочетания:
TAB - простая табуляция SHIFT+TAB - обратная табуляция CTRL+TAB - табуляция , которая принудительно выбрасывает из редакторов RICHEDIT , SCINTILLA
Так что , никаких модификаций делать не требуется.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Среда, 26.01.2022, 11:17 | Сообщение # 43 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Ну в принципе, и так можно. Но всё же, если возможно сделать так, если редактор установлен только для чтения, то навигация идёт обычным путём. Ты же не можешь поставить табуляцию в редактор только для чтения, и логично, когда из него выбрасываешься не по CTRL+TAB, а Tab и Shift+tab.
|
|
| |
haav | Дата: Среда, 26.01.2022, 14:14 | Сообщение # 44 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Цитата electrik ( ) Ну в принципе, и так можно. Но всё же, если возможно сделать так, если редактор установлен только для чтения, то навигация идёт обычным путём. Ты же не можешь поставить табуляцию в редактор только для чтения, и логично, когда из него выбрасываешься не по CTRL+TAB, а Tab и Shift+tab. Сделано. Архивы обновлены.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Среда, 26.01.2022, 16:23 | Сообщение # 45 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Блин, ну оперативно! А у тебя есть яндекс деньги или что-нибудь. Ты бы сделал на сайте раздел "Копилочка на пиво" ну или на кофе." Думаю, народ бы немножко задонатил.Добавлено (26.01.2022, 16:59) --------------------------------------------- Ну и ещё одно пожелание, но это как захочешь. А что если к гаджетам привязать последний необязательный параметр который по умолчанию будет равный NULL - вызов событийной функции? Тоесть, я события не в кейсах перебираю, а юзаю в коллбеке. У пурика есть BindGadgetEvent, но это, я считаю, лишняя писанина. Лучше бы они в каждой функции гаджета сделали не обязательный параметр привязки коллбека. Вот только головная боль, а что должно приходить в событийную функцию, юзер дата или номер события. Тут подумать надо, чтобы код был и изолирован, и в тоже время, чтобы легко можно было бы из этой событийной функции достучаться куда надо. Добавлено (26.01.2022, 17:04) --------------------------------------------- И да, думаю событийную функцию надо делать без костылей, ввиде вызовов в конце передачи событий дальше. Ведь если я зарегистрировал коллбек, логично что я буду его обрабатывать, соответственно, если профукал какое-то событие - ну сам виноват.
|
|
| |
|