с/с++/qt4 формошлепство на linux для простого пользователя

Модератор: Модераторы разделов

Аватара пользователя
sunjob
Сообщения: 214

с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

добрый день

1. планы, описание задачи:

хочу разобраться и наработать методику/код "формошлЁп-скрИптинга" для простого пользователя :о)
- GUI-формы будут на QT4/Lazarus (в данном случае рассматриваем QT4)

в GUI-форме:
- вызовы скриптов, внешних команд и пр...
- получение выхлопа скрипта & ERRORLEVEL для дальнешего анализа

т.к. GUI будут на QT4, то запуск скрипта / чтение выхлопа / ERR_LEVEL, ск.всего, будет на базе QT4

2. настройки и рабочие скрипты

- ini-файл с настройками
- каталог со скриптами (либо стандартный PATH)

3. чтение ini-файла, запуск скриптов

- GUI-программа загружает в буфер содержимое ini-файла
- реакция на кнопку -> вызов обработчика, типа:

Код: Выделить всё

run_id(int ID);
- обработчик парсит буфер ini-файла, по ID получает имя_скрипта
- запуск скрипта, анализ выхлопа/кода возврата и ... дальнейшая реализация в зов-ти от фантазии :о)

КОД_1 - запуск внешнего скрипта
архив code_1.tar.xz

Примерный выхлоп основной программы:

Код: Выделить всё

### qDebug() 
 exitCode  () = ' 2 '
 exitStatus() = ' 0 '
 str_out      = ' "test script 2, arg=--add_scr2_arg --add_qt_app_arg
" '
 str_err      = ' "" '
 
### printf()
exitCode  () = '2'
exitStatus() = '0'
str_out   () = 'test script 2, arg=--add_scr2_arg --add_qt_app_arg
'
str_err   () = ''
ВОПРОСЫ

1. qDebug - имеет "обрамление" с обоих сторон строк в виде:

Код: Выделить всё

' "' + '" '
(т.е. пробел + символ ковычки)

ВОПРОС 1: это особенности отладочного вывода qDebug ?

в обоих случаях qDebug & printf при "выхлопе текста" запускаемого скрипта - "странная" печать строки, с переносом в конце, хотя сам выхлоп скрипта без переноса

Код: Выделить всё

str_out   () = 'test script 2, arg=--add_scr2_arg --add_qt_app_arg
' !!! <-- вот тут перенос конца строки
ВОПРОС 2 :почему?

прочие ВОПРОСЫ:
- может, для внутреннего использования, лучше/проще по старинке использоавть string, или вообще простой буфер char* str?

мне самому не оч. нравиться использовать qt-классы, для таких простых операций, но !!! логично писать в той "эко-системе" в которой пишешь GUI, мало-ли чего там еще в будущем шарахнет использовать, передать "какой особенный" параметр в QT4/GUI... имхо

уточнение:
- именно QT4
- согласен, для простых GUI на cli/YAD/Zenity, логично "это" делать на bash/perl итд, кому, что удобнее
- в инете есть много "простых" примеров с "кодом" на с/с++, но я не встречал что-бы было реализовано одновременно при запуске скрипта получение выхлопа и кодa-возврата.
- так-же не встречал подходящих/удобных/минимальных примеров/библиотек парсинга ini-файла, что-бы была организована работа с буфером а не с потоками (т.к. каждый раз для чтения ini-файла создаются/закрываются потоки... это не оптимально, надо будет подходящую библиотеку доробатывать, на примете inih, посмотрим, что можно сделать с ней :о)

буду благодарен за подсказки, ссылки, код итд ...

вопросы по написанию GUI и парсинг ini-файла будут позже

TAG: c,c++,gui,qt4,scripting
Последний раз редактировалось sunjob 02.07.2020 04:25, всего редактировалось 2 раза.
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

azsx
Сообщения: 3642
ОС: calculate linux, debian, ubuntu

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение azsx »

может оффтопик.
lazarus очень удобен для написания простоых программ с окошками под никс и винду (кроссплатформенный).
Также посмотрите лицензию qt она как то плохо изменилась, по чатам многие ругаются, что мол ноги их больше там не будет.
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

лазарь? согласен! но тут пока кутья
пс может в личку черканешь, что не так с лицензией? для себя можем же юзать на все 100%?!!! :о)
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение Hephaestus »

azsx писал(а):
22.06.2020 17:25
Также посмотрите лицензию qt она как то плохо изменилась
Вероятно, речь об этом.
Но это по идее уже не должно затрагивать QT4, которую имеет в виду ТС.
Хотя я qt не использую, могу ошибаться.
sunjob писал(а):
22.06.2020 16:51
по старинке использоавть string, или вообще простой буфер char* str?
sunjob писал(а):
22.06.2020 16:51
мне самому не оч. нравиться использовать qt-классы
Здесь у меня напрашивается осторожный вывод, что Вам чистый Си ближе, чем C++.
Если это действительно так, то почему именно QT? Можно же использовать Си и GTK.
Не говоря уже про Лазарус, у которого вообще Pascal под капотом.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

> чистый Си ближе, чем C++
конечно... :о) классы и пр. надстройки хороши, если они во всю используются и не мешаются под ногами :о) уж не говоря про метаобьекты... :о)

> Не говоря уже про Лазарус...
лазарь рулит! не спорю, но паскаль для меня шиво-в-рот-нашви-в-ророт - идеи-проекты в голове представляются в си/си+ обьекто-образах ... а паскаль ... времени нет фундаметально полюбить его... а так... все он более меня... :о)

> Си и GTK
тоже круто, но не в моем случае... гладь на 2й гтк полный... простите... отстой... что-то там либо сломали к последнему релизу, либо еще что-то донастроили, что он не досохраняет связь сигнал-сокет... или как-то некорректно это делает... а в какой это версии началось, мне было некогда дотошно разбираться, попробовал установленную версию, потом последнюю, потренировался, поприседал... забил... !!! gtk2 !!! - принципиально, т.к. 3ю не хочу никаким разом... не для себя :о)


ну, дак, давайте вернемся к теме: коду, методологии, реализации
что можете сказать по вложенному исходнику (там у меня не понимание по печати)?

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение ormorph »

Qt4 нет под рукой, но под qt5 можно попробовать так:

Код: Выделить всё

QTextStream& myStdOut()
{
    static QTextStream out( stdout );
    return out;
}

QTextStream& myStdErr()
{
    static QTextStream out( stderr );
    return out;
}
Соответственно использование:

Код: Выделить всё

myStdOut() << "test stdout Ok" << endl;
myStdErr() << "test stderr Ok" << endl;
Раз уж qDebug не устраивает. По идее под Qt4 это тоже должно работать.
Ну и при работе с гуем новая строка обязательна, иначе вывод гуй не будет пропускать.
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

> qDebug не устраивает
меня не qDebug не устраивает, а "представление данных"... в данном случае, почему странное поведение (я же не зря добавил код с отладкой в архив)...

если я недопонимаю "это представление" данных, как мне с ним работать далее? :о)
поэтому и вопросы... :о)
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение Bizdelnick »

sunjob писал(а):
22.06.2020 16:51
qDebug - имеет "обрамление" с обоих сторон строк в виде
Логично, надо же обозначить границы строки. Зато Вам не надо было добавлять ещё одни кавычки, они тут лишние. Сплошное удобство. Что не так?
sunjob писал(а):
22.06.2020 16:51
в обоих случаях qDebug & printf при "выхлопе текста" запускаемого скрипта - "странная" печать строки, с переносом в конце, хотя сам выхлоп скрипта без переноса
Как это?

Код: Выделить всё

echo "test script $NUM, arg=$@"
echo по умолчанию добавляет в конце перевод строки, чтобы это отключить, надо использовать опцию -n. Так что всё правильно.
Offtopic
Убейте меня — не понимаю, зачем понадобилось откапывать эту стюардессу. Есть живая 5-я, грядёт 6-я, есть, в конце концов, гальванизированная TDEшниками 3-я для ценителей.
Добавлено (23:47):
sunjob писал(а):
22.06.2020 16:51
в инете есть много "простых" примеров с "кодом" на с/с++, но я не встречал что-бы было реализовано одновременно при запуске скрипта получение выхлопа и кодa-возврата.
Что-то вроде

Код: Выделить всё

char *output = NULL;
size_t len = 0;

FILE *pipe = popen("echo example", "r");
if (!pipe) {
  perror("popen");
  exit(EXIT_FAILURE);
}

while (getline(&output, &len, pipe) >= 0) {
  printf("output line: '%s'\n", output);
}

free(output);

int status = pclose(pipe);
printf("exit status: %d\n", status);
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

Что-то вроде
заберу ваш код в выкусы, посмотрю, чем он отличается от набранных рецептов :о)

и да... блин... что-же я так хреново-то изьясняюсь... :о)
я набросал код с реализацией задумки по выкусам из инета ... ни кто не посмотрел атач?
echo по умолчанию добавляет в конце перевод строки, чтобы это отключить, надо использовать опцию -n. Так что всё правильно.
да, согласен... после башко-скриптинга вылетает из головы :о) непревычно ...
есть, в конце концов, гальванизированная TDEшниками 3-я для ценителей.
вы с ней разбирались, пробовали под неЁ писать?
Последний раз редактировалось sunjob 02.07.2020 04:26, всего редактировалось 5 раз.
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение Bizdelnick »

sunjob писал(а):
22.06.2020 23:56
вы пробовали под неЁ писать?
Я ни под какую не пробовал. Просто Ваш выбор — наиболее странный из всех возможных. (Ну разве что 2 или 1 была бы страннее, но где ж их найти нынче.) Но я догадываюсь, что на то наверняка есть объективные причины типа поддержки дистра третьей свежести, и Вы создавали тему не для того, чтобы это обсуждать, так что ежели вопрос выбора не стоит — давайте не отвлекаться на него.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

ну вот и славно :о)

отпишусь позже, как соберусь с мыслями, комментариями, выкусами и кодом ...! :о)
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

протестировал (немного подрихтовал под себя) библиотеку
IniParser

простенькая, удобная, вполне годная!
итак, имеется два варианта работы с ini-файлом

Код: Выделить всё

- IniParser
- QSettings
Последний раз редактировалось sunjob 02.07.2020 04:26, всего редактировалось 1 раз.
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:

Аватара пользователя
sunjob
Сообщения: 214

Re: с/с++/qt4 формошлепство на linux для простого пользователя

Сообщение sunjob »

дотошно потестировал QSettings ... действительно ... не очень удобный и не доработанный "объект"
люди аж с 15го года на форумах его ругают, пишут про косяки и недоделанность... видимо, воз и ныне там :о)

остановился на IniParser - маленькая, простая, удобная, все на месте, под рукой, понятно-логично

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали: