LINUX.ORG.RU

Линукс, буфер обмена, а лучше сразу поле ввода

 


0

1

Всем привет! Юзаю glut, но предпочитаю openGl, а еще лучше c++. С одной стороны чем ниже тем лучше, с другой - так чтоб не утонуть в коде. Мне нужно поле ввода (текста), чтобы была возможность вставки из общего буфера в это поле ввода. Подскажите как это сделать. Мысли есть, но буфер реализовывать как бы костылем не хочется.


Юзаю glut, но предпочитаю openGl, а еще лучше c++

У вас в голове каша. C++ – язык программирования, OpenGL – графический API, glut – тулкит, предоставляющий окно с контекстом OpenGL и управляющий вводом. glut безнадежно протух, вместо него лучше использовать SDL2.

Мне нужно поле ввода (текста), чтобы была возможность вставки из общего буфера в это поле ввода.

Общего буфера чего? Обмена?

Скорее всего, вы хотите что-то вроде такого. У вас есть два варианта: подключать фреймворк для создания интерфейсов (по ссылке, например, Gtk) и делать интерфейс на нем (относительно простой путь), или сделать виджет самим (сделать фокус, передавать ввод, отрисовывать введенные символы, по условному Ctrl+V вызывать вышеуказанный SDL_GetClipboardText и передавать результат в виджет, и так далее). Второй вариант сложнее, и даст гораздо менее универсальный результат, но, может статься, будет более подходящим для вашей цели.

В любом случае, сперва разберитесь с тем, что есть что. Скорее всего, вам нет нужды копаться в сишных внутренностях, а лучше попробовать, например Godot или Unity.

Если вы хотите сделать не игрушку, а интерфейс какого-то приложения, то вам вообще не нужен glut и OpenGL. Берите фреймворк (gtk, qt, tk…) и пользуйтесь им. Пользователи будут благодарны.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 2)
Ответ на: комментарий от Siborgium

У меня точно нет в голове каши. Я использую даже не glut, а freeglut. SDL2 мне чем то не подошла, по моему она ооп. Я против ооп. Для тех кто будет говорить что ооп круто, я отвечать не буду. Так как достали хейтеры. Есть масса доказательств что ооп гавно (варажусь, так как это точное описание). К примеру есть масса программистов, которые работают в крутых компаниях и не считают ооп истиной в последней инстанции. Не охота говнокодить, поэтому предлагаю поддерживать хорошие библиотеки. Я выбрал OpenGL. OpenGL выбрала компания гугл. OpenGL не ооп. Поэтому закрыли тему про ооп. Если OpenGL, то и дополнения должны быть не ооп. «Общего буфера чего? Обмена?» - да буфер обмена. Я не совсем то хочу, что Вы дали по ссылке. Мне нужно простое обычное поле, такое же в котором я сейчас пишу. За библиотеки спасибо, я посмотрю их. qt отпадает, нужно бесплатное решение. gtk я не смог подключить, в этой теме я спрашивал как подключить: c++ include как указать полный путь Если Вы знаете как, то напишите. Конечно хочется использовать freeglut, так как часть кода написана, а писать еще раз при отсутствии хороших обучающих материалов - это целая проблема, по несколько часов приходится искать инфу, чтобы сделать малость (какой то один элемент). К тому же freeglut по моему (по моему, так как нет практики) позволяет легко делать поля, кнопки и прочее. Но я не нашел инфы как делать поле ввода на freeglut. Еще требование к библиотеке, это поддержка звука. В вики ни сказано, что freeglut поддерживает звук. Звук пока не критично, но главное чтобы его после можно было запилить.

wadic2
() автор топика
Ответ на: комментарий от wadic2

Может, все же ООП?

//не удержался. Ты так много раз про него сказал…

Мне вот тоже кажется, что ты делаешь что-то немного не так. И дело не в парадигме, а в идеологии в целом. Может, расскажешь суть задачи поподробнее, и мы поможем тебе ее решить, пусть и не совсем так, как ты ее представлял, а более проще? Просто мне тоже показалось насчёт каши замечание верным.

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 1)
Ответ на: комментарий от wadic2

К тому же freeglut по моему (по моему, так как нет практики) позволяет легко делать поля, кнопки и прочее.

Нет, не позволяет. В glut/freeglut нет библиотеки виджетов. Доступа к буферу обмена там тоже нет.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от wadic2

У меня точно нет в голове каши.

Если вы так считаете, то она там точно есть.

SDL2 мне чем то не подошла, по моему она ооп. Я против ооп.

Что вы имеете в виду под «она ооп»?

К примеру есть масса программистов, которые работают в крутых компаниях и не считают ооп истиной в последней инстанции. Не охота говнокодить,

Но вы будете. Сперва научитесь кодить хоть как-то, расширяйте кругозор. Вы делаете много громких заявлений, не представляя, о чем идет речь.

Я выбрал OpenGL. OpenGL выбрала компания гугл. OpenGL не ооп. Поэтому закрыли тему про ооп. Если OpenGL, то и дополнения должны быть не ооп.

SDL – не дополнение к OpenGL. SDL – библиотека, в том числе предоставляющая доступ к OpenGL. glut ничем не лучше SDL, а во многом еще и хуже.

Объясню вкратце. Когда вы используете OpenGL, вам нужно, во-первых, рисовать на чем-то, и во-вторых, показывать результат рисования куда-то. OpenGL эти вопросы волнуют довольно мало, их решать должны вы. Как glut, так и SDL помогают вам решить эти вопросы. Они, в общем случае, создают окно, создают контекст OpenGL для этого окна, и передают вам. Вы, отрисовав все, что вам нужно, отдаете нарисованное им и просите нарисовать его на этом окне. Принципиальное отличие в том, что SDL позволяет делать много больше, в том числе внятное управление вводом и выводом, загрузкой изображений, растеризацией текста на основе freetype, аудио, и так далее. И наконец, самое важное:

  • SDL более кроссплатформенна, чем glut;
  • SDL продолжает развиваться.

Насколько я понял, вы все же хотите сделать игру. Мой вам совет: не надо делать это на С. Возьмите питон, паскаль, C#, что угодно, но не С. Это сэкономит вам много нервных клеток и позволит перейти к С более комфортно потом.

edit: везде под SDL я понимаю именно SDL2. Нет никаких причин в 2020 году использовать SDL1, кроме максимально экзотических.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Ответ на: комментарий от Siborgium

Мой вам совет: не надо делать это на С. Возьмите питон, паскаль, C#, что угодно, но не С. Это сэкономит вам много нервных клеток и позволит перейти к С более комфортно потом.

Есть умельцы, которые пишут игры на Си без ООП и даже без динамического выделения памяти и указателей: OpenSyobonAction. Я считаю это шедевр: main.cpp. ТС’у нужно поучиться.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от X512

Вопрос не в том, что такое невозможно сделать. Возможно. Но зачем?

ТС, судя по всему, обычный школьник, который хочет сделать игру, и для этого учит OpenGL и C. Ему бы хоть как-то писать код научиться, а уже потом насчет парадигм и изощрений думать.

Siborgium ★★★★★
()
Ответ на: комментарий от X512

Отвечу тут всем. ооп - объектно-ориентированное программирование.

«Но вы будете. Сперва научитесь кодить хоть как-то, расширяйте кругозор. Вы делаете много громких заявлений, не представляя, о чем идет речь.» - Я в курсе какие требования в ит компаниях, поэтому я и говорю что они помешаны на ооп. И это им кругозор расширять нужно, а то они кроме ооп ни чего не видят. Я отлично программирую. Но не на с++ и с. Начинал с объект паскаля, сейчас и не помню как на нем писать, но это не проблема. Не лучший язык, но лучше чем Java и скорее всего лучше чем с++ и с. Производительность оставим. Просто нужен язык с производительностью си и с синтаксисом как у php. Тогда будет идеальный язык. Ну можно многопоточность еще запилить. Пока вопрос с SDL закроем. Я не делаю игру, все просто. Мне нужно приложение с окном (окно есть), с выводом картинки в виде точек (уже есть, но нужно чтобы как в вебе в div (условно div) вывод был с прокруткой, причем и текст и картинки выводились в один div), где будет поля ввода, кнопки, звуки (много позже).

wadic2
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.