MSE — среда визуального программирования с использованием компилятора Free Pascal. Состоит из библиотеки визуальных компонентов MSEgui и редактора форм и исходных текстов MSEide.

В отличие от, например, проекта Lazarus, MSE не ориентируется на совместимость с Delphi VCL, что в некоторых случаях упрощает разработку и освобождает от громоздкости.

Имеет: встроенный отладчик, подсветку синтаксиса, автозавершение полей классов, навигацию по коду, генератор отчётов и т. д.

ВНИМАНИЕ : проект MSE теперь является частью mse-org : https://github.com/mse-org

Исходники MSEide и MSEgui находятся здесь: https://github.com/mse-org/mseide-msegui

Биография Мартина: https://sites.google.com/view/martin-schreiber-biography/

Особенности и преимущества

Юникод

Во всех компонентах используется Юникод. Также юникод используется и при печати, что позволяет в одном выходном документе выводить символы нескольких кодировок. Исходные тексты тоже могут быть в юникоде, что позволяет использовать текстовые константы без проблем переносимости между Win32 и Linux.

Печать

Имеет несколько механизмов печати :

в выходном формате PostScript (Win32 и Linux); прямая печать GDI-принтер (естественно — только для Win32); в «contributed» — есть класс для текстовой печати в выходной кодировке CP866 (Russian DOS), со спецметодами форматирования (урезание, автоперенос, заполнение) столбцов, и рисования рамок — как псевдографических, так и упрощенных (из символов «|-+»);

Базы данных

Особый акцент сделан на разработку приложений для работы с БД

доступ к БД на PostgreSQL, MySQL, SQLite и Firebird без промежуточных драйверов доступ к БД на Oracle, MSAcess, ASA, DB2 и прочим — при наличии исходников промежуточной библиотеки ZeosDBO имеет очень мощный компонент TMSESQLQuery, который предоставляет чтение и запись БД через SQL-запросы, включая SQLite3 реализация «FieldDefs» позволяет вручную назначить типы полей выборки, если они определились некорректно (очень полезно для SQLite3) параметрические запросы автогенерация запросов изменения данных возможность прозрачной замены автоматически снегерированных запросов на «свои» автоопределение уникальных индексов и автоназначение ключевых полей по найденному PRIMARY-индексу оффлайновый режим для модификации данных после разрыва соединения, с записью при восстановлении соединения локальный режим, заменяющий TMemDataset локальные индексы на всех типах полей, кроме MEMO/BLOB (с авто-переупорядочением выборки при активации индекса) и фильтрация, эти индексы могут быть составными оффлайновый и локальный режимы имеют возможность хранить данные (включая BLOB и картинки) в локальном файле выборка, кэширование и запись BLOB-полей юникодная перекодировка на лету раздельные транзакции для чтения и записи опциональный фиктивный режим транзакций (очень полезен для SQLite3 и прочих БД, в которых невозможны вложенные транзакции) опциональное автоподтвержение транзакции после записи изменений опциональная перевыборка данных после подтверждения транзакции компонент TDBWidgetGrid : позволяет разместить списки выбора, логические переключатели, изображения и т. п. прямо в ячейках таблиц позволяет разместить в фиксированных строках (header и footer) практически любые виджеты, что удобно для реализации переключателей сортировки, режимов и т. п. позволяет объединять ячейки в фиксированных строках предоставляет автонумеруемые фиксированные столбцы экономный режим работы БД-таблиц, когда таблица «держит» в памяти только минимально необходимую порцию данных компонент TDBLookupBuffer позволяет скопировать одно или несколько полей выборки в сверхбыстрый буфер памяти, используемый для обслуживания списков выбора, поиска одного поля через другое и прочих операций, не вызывая при этом ренавигации и прочих нежелательных эффектов в выборке каждый тип данных имеет свой компонент для ускорения обращения к полям (если доступ через «FieldByName» оказывается медленным) компонент для работы с автоинкрементными полями (очень полезен для вставке данных в режиме «мастер -детали») компоненты для прозрачной увязки таблиц «мастер-детали»

Библиотеки Полностью сама отрисовывает компоненты. Например, в GNU/Linux не использует никаких сторонних виджетов — в Linux работает напрямую с Xlib, в Windows: использует только функции API. Адаптирует встроенную палитру к не-TrueColor режимам экрана с малым количеством цветов (255 и менее)

Базовым классом для элементов GUI является twidget. В отличие от Delphi MSEgui не делает различия между простыми графическими элементами и элементами, которые могут получить фокус ввода — всем виджетам доступна вся функциональность класса twidget.

Экземпляры twidget имеют два важных свойства — twidget.frame и twidget.face. frame ответственен за рамку вокруг рабочей области элемента — это может быть как «стандартная» псевдотрёхмерная рамка, так и некая составная конструкция, собираемая из растровых элементов. face отрисовывает фон рабочей области GUI элемента — позволяет отображать цветовые градиенты, растровые изображения и использовать полупрозрачность. Свойства frame и face можно задавать централизовано, используя tframecomp и tfacecomp — что упрощает использование «скинов».

Имеет встроенную поддержку растровых форматов: JPG, PNG, PNM, TGA, TIFF, WEBP, BMP/ICO, XPM. Также имеет возможности, предоставляемые библиотеками libGraphicsMagickWand, libGraphicsMagick. Ещё растровые возможности могут быть расширены с помощью bgrabitmap.

Для редактирования исходных данных простых типов в MSEgui доступны специализированные виджеты (tintegeredit, trealedit, tdatetimeedit…). Главное свойство-обработчик сообщений этих виджетов — onsetvalue, через него задаётся реакция виджетов на пользовательский ввод.

Для работы со шрифтами имеет встроенные средства аналогичные библиотеке Pango.

Может создавать окна непрямоугольной формы, при этом используя библиотеку libXext. Поддерживает Wayland.

В отличие от Lazarus, MSEgui позволяет наследование визуальных форм и создание MDI-приложений.

Имеет внутренний загрузчик динамических библиотек.

На её основе была создана ещё одна IDE: ideU.

Проекты на MSE

Проекты, написанные на MSEide+MSEgui, оказывают на разработку среды большое влияние и имеют затем глубокое с ней взаимодействие.

В выдающейся степени это касается ideU: вначале в MSE были добавлены средства создания собственных IDE, затем была создана ideU, а теперь ideU используется как основная среда для разработки самой MSEide+MSEgui.

Программы, написанные нередко для внутренних нужд организаций (вроде бухгалтерий и отделов кадров) сподвигли развить мощную поддержку БД, хотя сами редко публиковались.

При создании Galaxy Organizer в MSE была добавлена поддержка окон непрямоугольной формы, положение окна "поверх всех" и другие. А теперь полная версия Galaxy Organizer имеет средство пакетирования MSEide и ideU в .deb пакет.

В отличие от аскетичного вида среды разработки, проекты на MSE часто имеют оригинальное визуальное оформление.

Университет MSE

Поскольку MSEide+MSEgui сложный проект, встал вопрос о его документировании и обучении использованию. Тогда был создан проект mseuniverse, в котором осуществляется документирование актуальных возможностей MSE и создаются примеры его использования.

Лицензия Бесплатная, с открытыми исходниками. Оболочка распространяется под лицензией GNU GPL, библиотека — под модифицированной GNU LGPL с возможностью прилинковки к закрытым проектам.

История Будучи в основном программистом на паскале Мартин Шрайбер разработал MSEgui после того, как компания Borland прекратила поддержку своей linux-среды программирования Kylix. Он использовал получившийся программный продукт для своей основной работы — разработки программного обеспечения для PC и микроконтроллеров на заказ.

В 2013 году он начал работу над более простым по сравнению с Free Pascal паскалеподобным языком программирования MSElang, использующим в качестве бэкенда LLVM и добился на этом пути определённых результатов.

29 ноября 2018 года с Мартином Шрайбером случился сильный сердечный приступ и 27 декабря 2018 года он скончался. в настоящее время разработка MSEgui и других проектов Мартина Шрайбера продолжена сообществом на GitHub

См. также Lazarus Free Pascal FpGUI KOL

Примечания

Ссылки Проект MSEide+MSEgui на CodeBerg.org

Официальный сайт MSEide+MSEgui. Проект MSEide+MSEgui на SourceForge.net. MSEide+MSEgui на FreePascal.ru. MSEide+MSEgui на YouTube

Иерархия классов MSEide+MSEgui. Университет MSE Дидактические проекты MSE

Категория:Free Pascal Категория:Свободные интегрированные среды разработки Категория:Свободные библиотеки программ Категория:Библиотеки виджетов Категория:Программное обеспечение для Linux Категория:Программное обеспечение для Windows