Автор Гілка: GTK  (Прочитано 6736 раз)

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
GTK
« : 2006-06-02 19:33:09 »
Ну розробники GTK і зробили собаку: на кожну подію своя функція (може бути 2 і більше - втім це не принципово). Тоді  як розробники M$ API додумались зробити так, щоб одна функція на свій розсуд керувала цілим об єктом (вікном): можна операторами goto  витворяти що завгодно, до того ж можна обходитись беззовнінніх змінних, бо будь - якого пойнтера в фію, що обробляє події можна запхати за допомогою своєї (липової ;) ) події. А тут наприклад static GdkPixmap *pixmap = NULL; ділиться обробниками для  "configure_event", "expose_event" (посібничка ГТК-шног читаю ;) ) і нема можливості, щовз робити її десь зашитою (щоб випадково не та фія(функція - це я так ще в студентських конспектах скорчував ;) )  її не перекрутила). На щастя, GTK - сам собі дебугер, коли програму з консолі запускати, ( M$ цим похвалитись не може  :) ) - переконався, написавши пару дурниць  ;).
      
Тож порадьте, як без зайвих складнощів можна полюбити GTK  :D            
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Епопея GTK продовжується :)
« Відповідей #1 : 2006-06-09 14:34:31 »
Ну і підводних же каменюк вони в цей GTK наліпили. Об'ктні файли, що з використанням стандартної бібліотеки часу виконання (glibc  ;D) працювали без глюків (тобто програми, до яких вони були прилінковані не глючили) , а тільки лінканув про граму з використанням `pkg-config gtk+-2.0 --libs` і функції , що використовували atof() і їй подібні - заглючили: крапка перестала для них бути розділяючим десятковим знаком - коми хотять, printf() сам коми в десяткових числах почав тулити - воно то цікаво, але спрощеного аналога atof() довелося писати самому  8-)
До всього файли *.c в яких міститься код, що буде компілюватись під GTK і містить стрічки з кирилицею - краще зберігати в юнікоді, щоб глюків не було :)
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній ilya

  • Новачок
  • *
  • дописів: 13
  • Карма: +0/-0
  • I Love YaBB 2!
Re: GTK
« Відповідей #2 : 2006-06-09 15:09:18 »
а вам не підходить шлях усіх - використовувати каталоги повідомлень?

zzandy

  • Гість
Re: GTK
« Відповідей #3 : 2006-06-09 15:23:02 »
А ви впевнені, що проблема з крапкою в atof не пов`язана з локаллю?

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: GTK
« Відповідей #4 : 2006-06-09 18:42:44 »
а вам не підходить шлях усіх - використовувати каталоги повідомлень?
Про цей шлях вперше почув :o Будьласка, детальніше ;)
Цитата
А ви впевнені, що проблема з крапкою в atof не пов`язана з локаллю?
Коли не підключались бібліотеки GTK - проблем з крапкою не було (про це вже писав) локалі на крапку начхати, як і на всі англійські символи ;)
Справа в тім, що якасьз бібліотек підсунула свої функції (підмінила стандартні), які реагують на національні стандарти- це було свинство, оскільки через це втрачається сумісність зі старими програмами (які не підозрювали про ці дурні стандарти).
« Змінено: 2006-06-09 18:43:52 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній ilya

  • Новачок
  • *
  • дописів: 13
  • Карма: +0/-0
  • I Love YaBB 2!
Re: GTK
« Відповідей #5 : 2006-06-09 19:22:14 »

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Епопея GTK продовжується :)
« Відповідей #6 : 2006-06-10 15:42:01 »
функції , що використовували atof() і їй подібні - заглючили: крапка перестала для них бути розділяючим десятковим знаком - коми хотять, printf() сам коми в десяткових числах почав тулити - воно то цікаво, але спрощеного аналога atof() довелося писати самому  8-)
Я не бачу нічого дивного в тому, що в українській локалі цим функціям хочеться десяткової коми. Змініть LC_NUMERIC на C і матимете свою крапку.

[Fedora Linux]

Відсутній intracer

  • Новачок
  • *
  • дописів: 35
  • Карма: +0/-0
  • I Love YaBB 2!

Відсутній G

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • Що новенького?
Re: GTK
« Відповідей #8 : 2006-07-19 17:32:31 »
просто неймовірно!  :(
1. goto - то для оффтопік і для випускників всяких кампутірних академій.
2. розберися, шо таке локаль, бо не знаєш зовсім...
3. не подобається GTK+ - тобі не сюди, не варто казати погано на те, в чому не орієнтуєшся.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: GTK
« Відповідей #9 : 2006-07-21 12:18:16 »
Якби орієнтувався - писав би мана, а так пишу на форумі :)
Просто раніше я користувався win api а тепер перейшов на GTK просто не хочеться зайвий раз wine запускати - не солідно ;)
Прикольно, до речі в цього GTK виходить : gtk_init() нічого не повертає gtk_main() нічого не приймає це що, якась бібліотека примкдряється розділяти пам'ять для різних процесів: стопроцентно створися якийсь об'єкт і по нього в програмі нічого не сказано.
До речі гтк-шна вибиралка файлів примудряється вийти в окремий потік (у вінді таких фокусів не зустрічав): сто раз натисни кнопку відкрити файл (з меню поки не програмую ;) )- сто разів вилізе діалог відкрити файл  ;D доводиться  блкувати функцію обробки "clicked" кнопки на час вибирання файлу...
А як люди з цим боряться?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Yaroslav Fedevych

  • Літератор
  • ******
  • дописів: 1069
  • Карма: +0/-0
  • Людина — ніщо, справа — все
Re: GTK
« Відповідей #10 : 2006-07-21 12:19:00 »
G, давай ти не будеш казати людям, що вони мають робити, й вони не скажуть тобі, куди ти маєш піти? ;)

Відсутній G

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • Що новенького?
Re: GTK
« Відповідей #11 : 2006-07-26 14:04:02 »
до Сергія Лисовенко:
gtk_main() - це просто для того, щоб сховати від програміста цикл прийому повідомлень (шоб було гарно). в документації написано, що якщо це комусь не подобається, то всі повідомлення можна обробляти через функції glib самому вручну, аналогічно і робиться в офтопіку.
void gtk_init(int *argc, char ***argv); - а що, скажімо, вона мала би повертати (код помилки?), для того, щоб програма не вилітала, якщо неможливо ініціалізувати графічний інтерфейс треба використовувати gboolean gtk_init_check(int *argc, char ***argv);.
на рахунок діалогів - gtk_window_set_modal(GTK_WINDOW(someDialog), TRUE); - робить віконце модальним і все добре...
а в вінді віконце також в окремий тред йде, просто тобі ніхто цього не каже...
і я не вбачаю проблеми в тому, що бібліотека собі сама виділяє пам'ять для того, що їй треба - це спрощує код і акцентує увагу на тому, що робиш саме ти.

до Yaroslav Fedevych:
а тебе шо так образило? ти може закінчував якусь "комп'ютерну академію"?
 G, давай ти не будеш казати людям, що вони мають робити, й вони не скажуть тобі, куди ти маєш піти? - я ніде не писав слово "маєш". і ще я думав, що форум для того, щоб допомогти людям вирішувати якісь проблеми, от і написав: "розберися, шо таке локаль, бо не знаєш зовсім..."
. а в автора цієї теми претензійний тон: не треба писати "Прикольно, до речі в цього GTK виходить : gtk_init() нічого не повертає gtk_main() нічого не приймає це що, якась бібліотека примкдряється розділяти пам'ять для різних процесів" а наприклад "я не зовсім розумію (орієнтуюся, знаю), чому gtk_init(...) нічого не повертає, бо я би хотів перевірити в програмі сам, що робити мені далі, і не розумію, нащо функція gtk_main() нічого не приймає...".

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: GTK
« Відповідей #12 : 2006-07-26 19:29:27 »
Справа в тім, що вінтда дозволяє взяти ім'я файлу простеньким викликом функції (просто їй треба передати велетенську структуру) а при роботі з GTK цих функцій треба стільки понаписувати... Потім у вінди цикл видно і видно, що туди якісь пойнтери передаються. А функцій g_init() та g_main() мабуть просто розділяють якісь зовнішті змінні і таким чином  ці функції "перекидають" між собою данні.

----------------------------
До речі на DLOU переклад посібника з GTK+ 2.0 вже почали :)
Але англомовну версію прочитаю скоріше ніж той переклад дійде кінця  ;D

В офтопік: ніхто не знає, що за формат sgml і з чим його їдять?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: GTK
« Відповідей #13 : 2006-07-27 20:05:50 »
В офтопік: ніхто не знає, що за формат sgml і з чим його їдять?
SGML - це батько HTML та XML. Сам він пішов від LaTeX, який в свою чергу пішов від TeX який написав дядько Кнут.

Якщо коротко, то HTML - це була спрощена версія SGML, доки не стала складнішою. Тоді зробили спрощену версію HTML - XML.

SGML не їдять - його курять. Це формат для документів. Курити треба в сторону OpenJade.
[Fedora Linux]

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: GTK
« Відповідей #14 : 2006-07-28 16:34:37 »
Виявляється, що стосовно цього навіть українськомовний ресурс є  :)

http://unicyb.kiev.ua/MMEDIA/reports/Gromova/
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.