Кроссплатформенное программирование под Unix-ы
Добавлено: 10 фев 2021, 02:24
Добрый день,
Про существование Qt и GTK мне известно, но проблема в том, что я пытаюсь сделать продукт из смежной области, и использование подобных решений выглядит как "масло масляное". Кроме того моя программа самостоятельно заполняет поверхность в ОЗУ нужным изображением и потом лишь выбрасывает это изображение на экран целиком, а таким образом мне от всех больших возможностей Qt и GTK нужно только создание одного окна и всё. В результате я пошел через стандарт POSIX + SDL2 и основную часть кода смог заставить работать на Windows, Mac и Unix (по крайней мере, этого хватает для простых игрушек с софт-рендером). Но возникла большая проблема с Drag & Drop, который мне очень нужен для режима приложений. В интернете нашел про стандарт xdnd, но я подозреваю, что не всё так просто. Во-первых, вижу, что этих xdnd существует много версий, а, во-вторых, замечаю, что еще есть некий motif. Так как в жизни я пользуюсь исключительно Windows (немного использовал только Fedora и Ubuntu для сборки), то всё это мне очень не нравится, так как я предвижу, что в плане стандартизации Drag & Drop в Unix-а происходит настоящая каша. И именно поэтому практически нет примеров кода на данную тему, а все сразу советую брать GTK. В связи с этим вопрос: если я-таки разберусь с этим xdnd, то будет ли этого достаточно для реализации моей задачи ? Меня устроит даже, чтобы работало не в 100% случаев, а почти всегда, так как я понимаю, что количество Unixов-ых систем велико, и они любят ставить разные дисплейные менеджеры. В идеале, мне бы хотелось использовать какую-нибудь узкоспециализированную библиотеку, которая позволит переложить на себя универсальное решение по Drag & Drop.
Другая оставшаяся у меня проблема - это иконки для файлов и регистрация расширений, чтобы заставить файлы определенного расширения открываться в нужной программе. Нашел, что для этого делаются xml-файлы с описанием нужных действий, но... у меня создается впечатление, что в разных Unix-ах, эти файлы могут храниться в разных папках, что совсем не радует. Как решается проблема с определением этого пути для общего случая ?
Про существование Qt и GTK мне известно, но проблема в том, что я пытаюсь сделать продукт из смежной области, и использование подобных решений выглядит как "масло масляное". Кроме того моя программа самостоятельно заполняет поверхность в ОЗУ нужным изображением и потом лишь выбрасывает это изображение на экран целиком, а таким образом мне от всех больших возможностей Qt и GTK нужно только создание одного окна и всё. В результате я пошел через стандарт POSIX + SDL2 и основную часть кода смог заставить работать на Windows, Mac и Unix (по крайней мере, этого хватает для простых игрушек с софт-рендером). Но возникла большая проблема с Drag & Drop, который мне очень нужен для режима приложений. В интернете нашел про стандарт xdnd, но я подозреваю, что не всё так просто. Во-первых, вижу, что этих xdnd существует много версий, а, во-вторых, замечаю, что еще есть некий motif. Так как в жизни я пользуюсь исключительно Windows (немного использовал только Fedora и Ubuntu для сборки), то всё это мне очень не нравится, так как я предвижу, что в плане стандартизации Drag & Drop в Unix-а происходит настоящая каша. И именно поэтому практически нет примеров кода на данную тему, а все сразу советую брать GTK. В связи с этим вопрос: если я-таки разберусь с этим xdnd, то будет ли этого достаточно для реализации моей задачи ? Меня устроит даже, чтобы работало не в 100% случаев, а почти всегда, так как я понимаю, что количество Unixов-ых систем велико, и они любят ставить разные дисплейные менеджеры. В идеале, мне бы хотелось использовать какую-нибудь узкоспециализированную библиотеку, которая позволит переложить на себя универсальное решение по Drag & Drop.
Другая оставшаяся у меня проблема - это иконки для файлов и регистрация расширений, чтобы заставить файлы определенного расширения открываться в нужной программе. Нашел, что для этого делаются xml-файлы с описанием нужных действий, но... у меня создается впечатление, что в разных Unix-ах, эти файлы могут храниться в разных папках, что совсем не радует. Как решается проблема с определением этого пути для общего случая ?