dlinyj: (Default)
[personal profile] dlinyj
GTK+ vs curses

На самом деле нельзя сравнивать несравнимое. Но всё же. Попробовал я расурить гтк+, это оказался адский ад. При чём, что вот так простенько набросать на форму нельзя. Там какие-то адские боксы и т.п. Тупо батоны на форму накидать нельзя, надо поместить её в соответствующий отсек. Плюс, если и есть glade, который бросает на форму, то он генерит xml файл, который тоже надо обрабатывать. В общем взрыв мозга, тем более полное отсутствие толковых доков на русском, как юзать этот глейд и т.п. В результате я сделал на ГТК+ вот такую программу, которая визуализирует любой файл или устройство:


Да, это просто панелька с графиком и всё

На ней нет ни единой кнопки ничего. Я лукавлю, ибо скриншотом я обрезал верхнюю панель с названием программы и кнопками свернуть, развернуть и закрыть. Разумеется это программа не написанна с нуля, а переделанная чья-то (если актуально, я приведу пруфлинки). Когда я решил расширить её функционал, добавить пипочки, прокрутки, форточки, то лососнул тунцов в чтении мануалов. В результате пока обходился сухой консолью (printf и иже с ним) и gnuplot в вылетающем окошке. Но потом таки и консоли стало мало. Захотелось видеть и данные, и возможность отдельного ввода и редактирования параметров, не прерывая работы программы. И тогда я решил раскурить curses. Несколько часов курения манов (это оставлю здесь http://ftp.linux.kiev.ua/pub/docs/developer/libs/ncurses.html ), экспериментов, рисования интерфейса на листочке, отлова блох, снова курения манов и вон он, интерфейс моей мечты (тут за кадром крик Ияяяязь!!!)


Из говна и палок

Разумеется, это костыли. И в перспективе я надеюсь изучить gtk+, но пока во первых не встречал СВЕЖИХ (!!!) мануалов по теме (а не от 2000 года) и хороших примеров. Впрочем на данный момент данный интерфейс устроит меня чуть более, чем полностью :).

З.Ы. Прошу прощения за поток сознания, просто хочется высказаться миру. Кто в теме, тот поймёт, а кто не в теме и ладно :).
З.З.Ы. Принимаются пожелания, как лучше сделать рамочку у окон. Если, что, то это линух и тут нортон-коммандировские символы кажись отсутствуют :(((.

Date: 2011-12-15 10:30 am (UTC)
From: [identity profile] dlinyj.livejournal.com
По моему это очевидно, разве нет?

Date: 2011-12-15 11:00 am (UTC)
From: [identity profile] mbr.livejournal.com
раз ты пытаешься городить велосипеды, то нет ;)

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

Date: 2011-12-15 11:07 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Я не знал об этой модели, но хотел сделать так: Приложение, которое выполняет мои задачи. Плюс к нему отдельный графический интерфейс. При чём, работоспособность приложения должна быть не связанна с гуями. Физически разные программы.

Вопрос в том, как лучше реализовать их взаимодействие. К примеру, моё приложение использыет gnuplot для отображения графиков. Я же не реализовывал его в своей программе, просто сделал удобное обращение к нему. Просто взяв примеры из мануалов и аналогичных программ.

Date: 2011-12-15 11:16 am (UTC)
From: [identity profile] mbr.livejournal.com
а, ну это совсем другая вещь. Если мы берем данные из сторонней программы - там действительно придется либо сокеты городить, либо консольный вывод перенаправлять. В кьюте еще есть такая полезная вещь, как шареная память. Но это предполагает, что оба приложения написаны с использованием qt. Как ни странно, но консоль тоже проще реализовывать на плюсах + буст, либо кьюте. Посмотри, сколько всего вкусного обещает QString по сравнению с char*

Для графиков есть qwt. http://qwt.sourceforge.net/

Date: 2011-12-15 11:32 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Спасибо за рекламу :). Я учту, просто QT - это опять всё с нуля учить, что влом.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 02:48 pm
Powered by Dreamwidth Studios