IUP_FB_EDITOR
|
|
WQ | Дата: Среда, 18.10.2017, 16:59 | Сообщение # 1 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| https://sourceforge.net/projects/iupfbeditor/ Автор, как я понимаю, haav
Неплохо (имхо, все-таки из того что доступно для FB в плане создания GUI - IUP это лучшее) Можно использовать для Linux32 ( автор poseidonFB от этой версии отказался ) Только аналогично, как и в poseidonFB, у меня в Win в окнах настроек элементы не влезают, не хватает высоты окна Открыл исходники, в options_dialog.bi у диалогов заменил при установке RASTERSIZE "500x500" и т.д. на, соответственно, "500x" и т.д. - все элементы стали видны
|
|
| |
haav | Дата: Среда, 18.10.2017, 17:18 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата WQ ( ) Только аналогично, как и в poseidonFB, у меня в Win в окнах настроек элементы не влезают, не хватает высоты окна
Какая у тебя винда?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Среда, 18.10.2017, 17:26 | Сообщение # 3 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата haav ( ) Какая у тебя винда? Win 7x64 В настройках экрана размер элементов средний - 125% Переключил на 100% - все влезает и без изменения RASTERSIZE
|
|
| |
haav | Дата: Среда, 18.10.2017, 17:55 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата WQ ( ) В настройках экрана размер элементов средний - 125% Переключил на 100% - все влезает и без изменения RASTERSIZE
Ааа... , ясно. Да при играх с масштабом элементов, они не влезают. Но в любом случае, вариант с автоподстройкой размера мне не нравится . Все элементы в этом случае грудятся почти без просветов. Я оставлю как есть. Ну а для таких как ты есть исходный код, правьте там что хотите
Цитата Можно использовать для Linux32 ( автор poseidonFB от этой версии отказался )
Наверное потому, что баги и в 3.22 я встречал, а уж в IUP для linux32 их вагон и маленькая тележка. Писал автору IUP насчет багов, но он с прибором положил на поддержку, ну и хрен с ним. Я нашел обходные пути. Хотя надо признать, что один из багов, про который я писал в письме он исправил в 3.23. Возможно сам напоролся...
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
quiet_snow_los | Дата: Суббота, 21.10.2017, 01:59 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| Опаля, чего выпустилось. На выходные уезжаю, короче в понедельник потестирую. Похоже заменка FBEdit-у подъехала. Стас как всегда жжёт.
|
|
| |
electrik | Дата: Суббота, 21.10.2017, 02:40 | Сообщение # 6 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| Есть пожелание. я как обычно со своими говорилками. короче, заявленная функция автозавершения ключевых слов у меня не видится. возможно, это выводится в каком-нибудь графическом окне, в котором скринридер не видит текст. что если сделать двойную опцию автозавершения опционально, первая как у тебя, а вторая как в пурике, тоесть выползает комбобокс в котором можно выбирать варианты. естественно, когда выползает комбобокс, фокус должен вставать на него. может потом покурю код и найду как это сделать, но пока если есть такая возможность, было бы не плохо нарулить. со временем, вообще можно будет подумать, чтобы он и из инклюдов подстановку делал, но это сложновато. как я понял алгоритм автозавершения scintilla? очень классно, что можно доп утилиты подрубать, таким образом, если кто-то напишет редактор форм, это дело можно будет связывать, ну например при помощи сообщений от одной программе другой, к примеру создали форму, и iup редактору послали сообщение: создай новое окно и прими исходный код формы. обычно такие вещи делаются dll плагинами, это даже и лучше, но москва не сразу строилась, и если со временем будет поддержка плагинов, можно будет рулить что хочешь.
|
|
| |
haav | Дата: Суббота, 21.10.2017, 08:20 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата quiet_snow_los ( ) Похоже заменка FBEdit-у подъехала. Стас как всегда жжёт. Леха, это громко сказано. У FbEdit пока нет конкурентов , ближайший poseidonFB (если автор поработает над багами). Моя поделка скорее замена FbIDE с возможностью писать под Linux. Я уже писал на англоязычном форуме, что редактор не был самоцелью, просто хотел испытать IUP и ICONV в полевых условиях. В итоге, теперь в Linux я могу более менее нормально кодить. А то там с редакторами полный облом. Нет, редакторы конечно есть, но в каждом есть то, что просто заставляет перезагружаться в винду и писать код в винде. Например: 1) Geany не имеет быстрого запуска, непонятная реализация кодировок , плохая реализация Drag-and-Drop текста , ну и еще так по мелочи. 2) WXFBE - проблемы с русским языком в путях, куча мелких багов, но все это не беда, тем более что я под Linux эти минусы устранил. Главная проблема: отсутствие Drag-and-Drop текста , а без него я не могу полноценно работать. 3) poseidonFB - как и в WXFBE , отсутствие Drag-and-Drop текста. Какая-то кривая реализация быстрого запуска (все файлы переносятся куда-то , там компилируются\запускаются , но не удаляются)
Мне же нужен простой инструмент под Linux , чтобы я без напрягов мог писать\править\компилировать любые исходники (в любой кодировке). И чтобы интерфейс был схожим с FbEdit, потому как я за много лет уже привык к данному редактору (иконки\горячие клавишы).
По большому счету я готовлюсь к тому, что придется скоро полностью перебираться на Linux, ведь до прекращения поддержки win7 осталось мало времени, а win10 - это тупик. Кто знает, что взбредет мелкософту дальше, какие "фичи" засунут в свои обновления. И ведь я не смогу помешать установке обновлений на свой комп, я как бы не хозяин на винде... Поэтому редактор не будет лишним. Я уже сделал для себя переводчик под Linux по типу Dicter, правда он использует сервис "Yandex Translate", но тут нет альтернатив, ведь мелкософт и гугл свои сервисы перевели на платную основу. Да, перевод хуже чем у гугл, но для Linux мануалов в принципе хватает и не приходится каждый раз лазить в браузер , чтобы перевести какой-нибудь readme. В принципе игры в последнее время меня мало волнуют, а все остальное на Linux более или менее можно использовать.
Цитата electrik ( ) Есть пожелание. я как обычно со своими говорилками. короче, заявленная функция автозавершения ключевых слов у меня не видится. возможно, это выводится в каком-нибудь графическом окне, в котором скринридер не видит текст. что если сделать двойную опцию автозавершения опционально, первая как у тебя, а вторая как в пурике, тоесть выползает комбобокс в котором можно выбирать варианты. естественно, когда выползает комбобокс, фокус должен вставать на него. может потом покурю код и найду как это сделать, но пока если есть такая возможность, было бы не плохо нарулить. со временем, вообще можно будет подумать, чтобы он и из инклюдов подстановку делал, но это сложновато. как я понял алгоритм автозавершения scintilla?
Серега, я вот тоже все время путаю "Автозавершение" и "Автодополнение". У меня не реализовано то, что ты имеешь ввиду. У меня реализовано автозавершение кода, например:
набрал do , нажал Enter , появилось LOOP
В общем все подобные конструкции: sub - end sub , for - next и т.д.
Сразу хочу сказать, что некоторые конструкции работают только если введен минимум:
Например если просто ввести for и нажать enter , автозавершения не произойдет. Нужно ввести минимум подобную конструкцию for i=0 to 1 . Так же while должен содежать что-то после себя через пробел. Sub обязательно должен иметь скобки. Function должна иметь в своей строке ключевое слово AS. А например Select должна иметь Case и что-то после Case. По сути все по правилам синтаксиса FB.
Что касается того, что ты имел ввиду, то я вроде как начал было разбираться в этом, но так и не нашел оптимального способа как сделать автодополнение из типов. То есть дополнение ключевых слов FB сделать не проблема не разу. Для меня проблема сделать дополнение полей TYPE\ENUM\UNION. А пока нет нормальной идеи, которая покажется мне разумной, я автодолнение отложил в долгий ящик. Все дело в том, что я не знаю как реализовать это без тормозов. Вот запустите тот же poseidonFB и начните писать в редакторе. Все вроде работает хорошо. А теперь загрузите туда код скажем с 1500 строками и попробуйте в нем поработать. Тормоза при введении букв будут очень заметными и даже раздражающими. Это не укор автору poseidonFB , он молодец, сделал очень мощную IDE, просто не до конца продумал некоторые вещи.
Некоторые советы при тестировании и вообще использовании:
1) В папке Help есть файлик helpEditorRU.html , желательно прочитать его 2) Не пытайтесь тестировать из под редактора FbEdit в быстром запуске, иначе при компиляции в iup_fb_editor будет наложение EXE(шников). Правильно сделать так: скомпилировать редактор и запустить отдельно. 3) В linux Drag And Drop файлов работает, но перетаскивайте на любые другие виджеты кроме scintilla. Сделано это сознательно, чтобы в scintilla работало перетаскивание текста
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
quiet_snow_los | Дата: Понедельник, 23.10.2017, 21:26 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| Скачал посмотрел, 32 битку, быстро потыкал, вроде бы всё работает. Но настраивать конечно каждую такую среду довольно трудоёмко. Нужно сделать сборку, чтобы 1 раз настроить и не возвращаться к этому вопросу. - Нужно понять формат пути к компилятору. Можно ли для компиля относительный путь указать. - Где лежат операторы для подсветки синтаксиса. - Можно ли зашить шрифт внутрь или опять же только устанавливать. - Что делает "Convert document in the encoding on the fly" не совсем понятно, да и вообще что происходит с кодировками, что-то слишком много опций для этого.
Короче надо будет повозиться. Базовое что-нибудь склепать, от чего можно оттолкнуться.
|
|
| |
haav | Дата: Вторник, 24.10.2017, 08:00 | Сообщение # 9 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата quiet_snow_los ( ) - Нужно понять формат пути к компилятору. Можно ли для компиля относительный путь указать.
Только полный путь
Цитата quiet_snow_los ( ) - Где лежат операторы для подсветки синтаксиса.
Все подсвечиваемые слова лежат в папке keywords. Все файлы можно изменять по своему усмотрению. Основной формат: добавлять ключевые слова через пробел, в конце пробела быть не должно. Я разбил команды FB так, как мне удобно и оставил один файл (keywords3) пустым для того, чтобы добавить функции winapi.
Цитата quiet_snow_los ( ) - Можно ли зашить шрифт внутрь или опять же только устанавливать.
Шрифты используются системные , то есть берутся из системной папки Windows\Fonts. В linux аналогично, правда в какой папке они лежат, я не интересовался.
Цитата quiet_snow_los ( ) - Что делает "Convert document in the encoding on the fly" не совсем понятно
Странно, я ожидал этот вопрос от кого угодно, но только не от тебя. Ведь ты часто смешиваешь ASCII кодировки в одном файле и совсем недавно записывал мне видео на этот счет. Просто в BRED ты это делал с сохраненными файлами , а здесь сохранять не обязательно. Чтобы было понятнее, пример:
1) системная кодировка по умолчанию должна поставлена на "Default System" или ASCII 1251 2) создай новую вкладку , файл сохранять не обязательно 2) вставь туда это:
Цитата привет мир
ЇаЁўҐв ¬Ёа
3) Нажимай попеременно "Convert document in the encoding on the fly" с кодировками OEM866 и ASCII 1251
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
quiet_snow_los | Дата: Вторник, 24.10.2017, 21:09 | Сообщение # 10 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| Цитата haav ( ) Просто в BRED ты это делал с сохраненными файлами , а здесь сохранять не обязательно. Стас у меня чё-то сейчас соображалка вообще не варит если честно, в такие вопросы надо уходить с головой. Потому что один раз я себе попортил исходник из-за непонимания работы. Т.е. мне важно понимать что прога делает с внутренним представлением текста. Т.е. когда она что-то делает тупо для отображения и когда она меняет именно кодировку внутреннего представления(мультибайтовую или может даже самопальную какую).
Насколько понял из твоих слов "encoding on the fly" оно только для отображения и не меняет(не конвертирует) исходные данные(текст, который сейчас загружен в программе).
Цитата haav ( ) Только полный путь Блин ну это вот очень плохо. Просто никогда не любил ставить компиляторы в систему. Патологически не переношу что-то шаманить с переменными сред. Поэтому portable сборки вида "распаковал и юзаешь" дичайше котирую. Короче лично для меня юзабилити полностью теряется. Даже не знаю хотел понастраивать, а теперь весь энтузиазм пропал. Или может всё таки можно как-то, например через "%cd%\..\Compiler\" ?
|
|
| |
haav | Дата: Среда, 25.10.2017, 08:09 | Сообщение # 11 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата quiet_snow_los ( ) Стас у меня чё-то сейчас соображалка вообще не варит если честно, в такие вопросы надо уходить с головой. Потому что один раз я себе попортил исходник из-за непонимания работы. Т.е. мне важно понимать что прога делает с внутренним представлением текста. Т.е. когда она что-то делает тупо для отображения и когда она меняет именно кодировку внутреннего представления(мультибайтовую или может даже самопальную какую).
Насколько понял из твоих слов "encoding on the fly" оно только для отображения и не меняет(не конвертирует) исходные данные(текст, который сейчас загружен в программе).
Леха, пока ты не нажмешь Сохранение файла , с твоим текстом на диске никаких операций не происходит. Конвертируй во что хочешь, все что ты делаешь в редакторе, остается только в памяти. Но тут я хочу напомнить, что при компиляции файла, текст автоматически сохраняется, однако это не касается быстрого запуска (F5).
Как работает "encoding on the fly":
1) текст из редактора конвертируется из UTF-8 в кодировку, которая была ему присвоена до использования функции "encoding on the fly" (отображается в Statusbar). 2) Далее текст конвертируется из новой кодировки (которая требуется) в UTF-8. То есть не общается внимание на то, в какой кодировке она была, а подставляется в Iconv значение новой кодировки, как будто бы текст в этой кодировке закодирован. То есть производится практически та же операция "Открыть файл заново в другой кодировке" , но не обращаясь к жесткому диску.
Цитата quiet_snow_los ( ) Или может всё таки можно как-то, например через "%cd%\..\Compiler\" ?
Извини я немного попутал. Для компилятора поддерживаются относительные пути. Относительные пути не поддерживаются у файла справки и инструментов. Однако этот минус ты можешь сам устранить за несколько минут. Открой файл callbacks.bi и найди две функции item_tools_custom_callback , item_helps_custom_callback . Перед вызовом IupExecute просто сравнивай в переменной sPath два первых символа например с $A . Если равно, то замени в строке эти два символа на команду exepath. Тогда в путях редактора ты сможешь указывать например так: $A\help\help.chm
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
electrik | Дата: Среда, 25.10.2017, 18:06 | Сообщение # 12 |
Полковник
Группа: Друзья
Сообщений: 182
Статус: Offline
| да, с автозавершением сложно. но есть идеи. поскольку исходник программы состоит чаще не из одного файла, автозавершение идет из тех файлов, которые загружены в проект. тоесть, для нахожждения типов, констант, парсится не файлы из #include "test.bi", а из добавленного файла в проект. таким образом, упрощается задача, распарсивания, не всего что заинклюжено. далее, для винды можно создать файлы в которых будут записаны все windows api функции, структуры, константы, присутствующие в заголовочных файлах FreeBasic. к сожалению, с линуксовым api, такого в заголовочных файлах нет. далее, но это сложнее, заюзать ассоциативные массивы, которых нет во FreeBasic, значит написать модуль на c++ или например на пурике. с пуриком сложнее, ибо у тебя опенсурс. почему ассоциативный?- думаю ты знаешь про такое, в них достаточно быстро можно находить данные. и последнее, самое сложное, распарсить, код файлов загруженных в проект, пусть примитивно но чётко отделить функции, константы, структуры. придется писать явно в 2 потока, юзер написал какое-нибудь слово, нажал пробел или скобку или кавычку, то что является как бы разделителем, и во втором потоке идет переинициализация текущего рабочего файла, и выстраивается новый список подстановки. писать парсер с абстрактными деревьями - это жесть, и я даже не представляю как оно работает. Добавлено (25.10.2017, 18:06) --------------------------------------------- поповоду map, можно не писать модуль на c++, а написать библиотеку обёртку, для каждого базового типа свои простые функции, ну по принципу любимого пурика: addMapElement, FindMapElement и т.д.
|
|
| |
WQ | Дата: Среда, 25.10.2017, 21:05 | Сообщение # 13 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата electrik ( ) заюзать ассоциативные массивы, которых нет во FreeBasic На FB можно все это написать Хотя бы http://users.freebasic-portal.de/freebasicru/data_structure.html А я обычно использую хэш-таблицу из IUP, +50 килобайт
|
|
| |
haav | Дата: Четверг, 26.10.2017, 10:14 | Сообщение # 14 |
Генералиссимус
Группа: Администраторы
Сообщений: 1363
Статус: Offline
| Цитата electrik ( ) да, с автозавершением сложно. но есть идеи. поскольку исходник программы состоит чаще не из одного файла, автозавершение идет из тех файлов, которые загружены в проект. тоесть, для нахожждения типов, констант, парсится не файлы из #include "test.bi", а из добавленного файла в проект. таким образом, упрощается задача, распарсивания, не всего что заинклюжено. далее, для винды можно создать файлы в которых будут записаны все windows api функции, структуры, константы, присутствующие в заголовочных файлах FreeBasic. к сожалению, с линуксовым api, такого в заголовочных файлах нет. далее, но это сложнее, заюзать ассоциативные массивы, которых нет во FreeBasic, значит написать модуль на c++ или например на пурике. с пуриком сложнее, ибо у тебя опенсурс. почему ассоциативный?- думаю ты знаешь про такое, в них достаточно быстро можно находить данные. и последнее, самое сложное, распарсить, код файлов загруженных в проект, пусть примитивно но чётко отделить функции, константы, структуры. придется писать явно в 2 потока, юзер написал какое-нибудь слово, нажал пробел или скобку или кавычку, то что является как бы разделителем, и во втором потоке идет переинициализация текущего рабочего файла, и выстраивается новый список подстановки. писать парсер с абстрактными деревьями - это жесть, и я даже не представляю как оно работает.
Добавлено (25.10.2017, 18:06) --------------------------------------------- поповоду map, можно не писать модуль на c++, а написать библиотеку обёртку, для каждого базового типа свои простые функции, ну по принципу любимого пурика: addMapElement, FindMapElement и т.д.
Серега, я все это обдумывал конечно. Однако когда начинаю раскручивать в голове какой нибудь путь решения, голова начинает пухнуть как представлю сколько всего надо учесть. Становится понятно, почему у известных редакторов под FB такие далеко не идеальные реализации. Как ты и сказал, это сложная тема. Я не отчаиваюсь, просто нужно время, иногда даже много времени. Наш мозг похоже так устроен, что если ему дать задачу и постоянно "подталкивать", рано или поздно решение будет найдено.
Цитата WQ ( ) А я обычно использую хэш-таблицу из IUP, +50 килобайт
Ну уж нет, если уж использовать ассоциативные массивы, то только на FB. Я уже научен горьким опытом с IupConfig. Тем более, что реализация уже есть на основе красно-черных деревьев (ты сам указал ссылку), чуть подправить только для своих нужд.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Четверг, 26.10.2017, 16:22 | Сообщение # 15 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата haav ( ) Ну уж нет, если уж использовать ассоциативные массивы, то только на FB. Я уже научен горьким опытом с IupConfig. Тем более, что реализация уже есть на основе красно-черных деревьев (ты сам указал ссылку), чуть подправить только для своих нужд. Я оттуда использовал какой-то пример хэш-таблицы, где можно сделать доступ к указателю через строковый ключ - что-то оно было не очень стабильно, возможно, что я все слишком усложнил И в хэш-таблице из IUP в случае занесения указателей бывали глюки. А вот вариант, где данные - строка и ключ - строка, довольно стабилен, разбирать текстовые данные или удалять повторения в массивах строк очень удобно, хорошо работает даже если ключей сотни тысяч и миллионы. Время доступа по ключу примерно в 100 раз больше, чем время доступа к элементу массива по номеру, но это очень небольшие значения. Скорее всего там какой-нибудь стандартный пример на C
Я при разборе ini файлов использую самописные велосипеды, несколько вариантов, один, кстати с применением этой строковой хэш таблицыКаждый ключ-значение регистрирую 1 раз, данные хранятся в глобальном массиве, программа читает и пишет в файл сразу весь массив Пользоваться массивом не очень удобно, возможно, можно заменить на какую-то другую структуру, но значения массива писать короче, и главное скорость доступа. Конечно, скорость нужна не везде, но кое-где нужна, так и оставил этот массив
А по IUP_FB_EDITOR: В fbnp.bas после Код IupSetAttribute(TGlobalVariables->dlg, "RASTERSIZE", IupConfigGetVariableStr(TGlobalVariables->hConfig,"DialogSize","dlgsize")) добавил Код If IupGetInt(TGlobalVariables->dlg, "RASTERSIZE") >= IupGetInt(NULL, "FULLSIZE") Then IupSetAttribute(TGlobalVariables->dlg, "PLACEMENT", "MAXIMIZED") EndIf Иначе, если окно программы было максимизировано до закрытия, при следующем запуске, по крайней мере, у меня, системные кнопки как-то странно немного задвигались за пределы экрана
И еще добавил с помощью LoadKeyboardLayout в Win-варианте раскладку по умолчанию при запуске. Открыл программу - и сразу, допустим, латиница
|
|
| |
|