![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Jcs |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Здравствуйте. Была ли у кого-нибудь задача переключения интерфейсов из GUI в консоль и обратно во время выполнения? Если да, то был бы очень признателен примеру (желательно на GTK или GTKMM) или хотя бы пояснению в общих чертах как это сделать. Пока для меня главная трудность в остановке и перезапуске циклов обработки событий. В gtkmm, например, гуевый цикл запускается через Gtk::Main::run, для обработки консольного ввода-вывода придется писать свой цикл. Можно, конечно, запускать оба, и GUI при необходимости скрывать (цикл обработки сделать в отдельном потоке и суспендить его при надобности), но мне этот путь не очень нравится. Хотелось бы именно удаления и создания интерфейса заново (причем в правильном состоянии), потому как может появиться какой-нить третий интерфейс, например сеть. Надеюсь, что написал не слишком запутанно. Заранее спасибо.
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
||||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
В Адепте, например, такое используется. Устанавливается deb. который нужно настроить, а настройка осуществляется с консоли. Да и во время установки запущен терминал, так как всё основано на обычных shell-скриптах. Добавлено через 1 минуту и 44 секунды Jcs, а почему бы просто не вставить в gui простенький свой терминал? Зачем именно переключаться между терминальным окном и своим (вы имели в виду, возвращаться к терминалу из которого запущено приложение?) |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
хм, буду знать. ![]() ![]() |
|||
|
||||
Jcs |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
powerfox, вообще эта программа представляет собой сервер для обработки видео. Т.е. принялось видео по сети, обработалось и результат ушел обратно. Изначально предполагался только консольный вариант, но т.к. алгоритмы еще до конца не отлажены, то возникает потребность смотреть что реально происходит в системе, т.е. отображать вход и всякие промежуточные результаты. Конечно, после окончательной отладки надобность в этом снизится, если вообще не отпадет, но если не будет потери в производительности то можно будет оставить возможность переключения. Кроме того, у гуев и у консоли свои сторонники и противники, и, если с программой будут одновременно работать несколько человек - каждый сможет выбрать подходящий интерфейс.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
тогда, имхо, стоит сделать интерфейс по выбору пользователя - параметром коммандной строки или по имени программы. Например, если запускается как gcoder (символическая ссылка на coder), то имеет GUI, а если как coder, то CLI (узнать можно через 0-й элемент параметра main() argv).
|
|||
|
||||
Jcs |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
bsa, да, у меня была такая мысль, но тогда после запуска будет невозможно изменить интерфейс. Т.е. определять интерфейс будет тот, кто его запускает. Хотя, в принципе, можно сделать, что если запущен coder, то при запуске gcoder гуевая оболочка будет цепляться к coder и наоборот. Но в этом случае уже речь пойдет о межпроцессном взаимодействии. Скорее всего, будет сложнее, но тем не менее вариант. Спасибо за идею.
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Скорее всего будет проще ![]() Общий движок всего твоего дела + любые фронтэнды. Могут работать и паралельно (только синкаться надо корректно). А протокол взаимодействия - это уж на вкус и цвет. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
это самый правильный вариант -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |