Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: GLADE - nové okno po stisku tlačítka  (Přečteno 9526 krát)

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #25 kdy: 29 Srpna 2007, 08:57:19 »
Díky za radu, ale nějak mě to nejde.
Vepsal jsem kód do callbacks.c a jako tělo programu jsem vložil:
label1.Label = "stisk tlacitka"
zkoušel jsem i druhé uvozovky, ale hází to chybu při make "callbacks error"

Jak při stiskuzměním název tlačítka?
Kam se mám prosím podívat? V nápovědě je pouze jak se s GLADE zachází ohledně prvků, ale nenašel jsem popis kam co se vepisuje a jak píšu obsluhu.

Děkuju

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #26 kdy: 29 Srpna 2007, 14:46:50 »
Musite si uvedomit ze GLADE pouziva ve vychozim nastaveni jazyk C... a ten neni obohacen objektovym programovacim modelem. Ke vsem parametrum prvku se pristupuje pomoci funkci.

Tedy zhruba takto po stisku tlacitka prejmenujete label samotneho tlacitka:

Kód: [Vybrat]
void on_button1_clicked (GtkButton *button, gpointer user_data)
{
  gchararray novy_label = "NovyLabel";
  gtk_button_set_label(button, novy_label);
}
Jako parametr funkce je uveden pointer na button, pres ktery komunikuje zbytek programu s tlacitkem a naopak. Zadna globalni deklarace button1 neexistuje. ;)

Je tomu tak z dubvodu, aby u programu s vice okny mohlo byt vice nezavislych prvku definovanon jako button1.

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #27 kdy: 30 Srpna 2007, 15:14:42 »
Tomu prosím ještě moc nerozumím. Jestli by jste mě to nemohl dokumentovat na následujícím příkladu:

1) Mám v GLADE přes sebe vytvořená dvě okna "windows1" a "windows2", kde "windows1" překrývá "windows2"
2) Mám na "windows1" tlačítko "button1". Stiskem tlačítka "button1" můžu pomocí signálu "clicked / gtk_widget_hide / window1" schovat "window1" a objeví se již ptevřené "windows2"
3) Chci změnu. Chci, aby před po stisku tlačítka "button1" před schováním "window1" proběhly ještě nějaké funkce - nemůžu proto použít zmíněný signál. Nadefinoval jsem proto pro "button1" signál "clicked / on button1_clicked" a v souboru "callbacks.c" se mi objevil odstavec:
     void on_button1_clicked (....)
     {
tady jsem myslel, že můžu doplnit:
            gtk_widget_hide(window1);
     }


./autogen.sh přes to sice přeleze, ale "make" mě hází chybu, že "window1" je undeclared. A tady jsem si právě myslel, že deklarece je už provedena v "interface.c"

Děkuju za radu a pokud k tomu víte nějakou dokumentaci (radši v ČJ), tak by to bylo príma, abych Vás pořád neotravoval.

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #28 kdy: 31 Srpna 2007, 11:00:07 »
Nasel jsem strucny uvod do knihoven GTK+ v cestine: http://www.2k-partner.cz/bobr/article001/index.html

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #29 kdy: 31 Srpna 2007, 14:05:10 »
Děkuju, díval jsem se na odkaz, něco mě to pomohlo. Ale asi na to koukám ze špatného pohledu (nebo sem blbej) - pořád nevím, jak provést můj příklad, kdy po kliku na tlačítko zmizí vrchní okno a objeví se druhý.

Mohl by jste prosím poradit??
Děkuju

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #30 kdy: 01 Září 2007, 00:07:55 »
V prvni rade podle meho je chybou to, ze vytvarite obe okna naraz. Spise bych po kliku na button1 napsal vytvoreni okna druheho... ;)

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #31 kdy: 01 Září 2007, 20:52:22 »
Ale když vytvořím druhé okno po stisku tlačítka programem, tak budu muset celé druhé okno vytvářet programem a už k tomu nebudu moci využít výhody tvorby pomocí GLADE? Nebo mě něco uniklo?
     
     Nevíte prosím, kde je v programu definována odvolávka na "button1" v "callbacks.c"?

Děkuju

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #32 kdy: 01 Září 2007, 21:50:30 »
Nevíte ještě prosím, jak můžu dohledávat:

on_load_file_dialog_ok_button_clicked
on_defaults_activate
on_defaults_dialog_ok_button_clicked
.
.
.

příkazy s vysvětlením použití?

Děkuju

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #33 kdy: 02 Září 2007, 16:01:21 »
K tomu prvnimu... pomoci Glade si vytvorite druhe okno a ve zdrojovych kodech pote uz jenom premistite prislusny kod tohoto okna a pridate napriklad do obsluhy signalu funkci pro skryti prvniho okna/widgetu.

Zajimavou dokumentaci ke Glade naleznete v balicku glade-doc (http://packages.ubuntu.com/feisty/doc/glade-doc-2).

Na zbytek se mrknu vecer... padim na fotbal. :cool:

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #34 kdy: 03 Září 2007, 11:04:44 »
No konecne jsem se k tomu dostal... :cool:

K ty odvolavce na button1, tak nejak nevim co tim myslite. Jestli signal pozadavku nebo samotnou promennou? Jak jsem jiz rikal, GTK+ je napsano defaultne v jazyku C a ten neni objektove orientovanym jazykem.

Deklarace pointeru na button1 neni globalni, pristupuje se k ni pouze v ramci funkce a musi byt predavana jako parametr. Je to i z duvodu minimalizace naroku na systemove prostredky, jelikoz kazda globalni promenna je zvysuje (je potreba mit alokovanou pamet po celou dobu behu programu, i kdyz neni vyuzita).

K tem signalum co jste uvedl. Obsluha signalu on_load_file_dialog_ok_button_clicked se realizuje tak, ze po vytvoreni dialogu v Glade pridelite signal prave prvku tlacitka OK, specialni signal na cely widget neexistuje. To same u on_defaults_dialog_ok_button_clicked. Co se tyce on_defaults_activate, tak se jedna o nastaveni vychozich hodnot widgetu.

Snad jsem to napsal alespon trochu srozumitelne.

Jinak, neni od veci si napsat par jednoduchych projektu ciste v kodu, bez pouziti Glade. I kdyz je Glade pekna pomucka, vzdy je potreba se v projektu vyznat a s pouzitim Glade se ta orientace dost stezuje...

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #35 kdy: 03 Září 2007, 11:25:24 »
No jeste jednu vec jsem nasel... pokud by jste zkousel psat ty projekty in source mode, tento serial (http://www.linuxsoft.cz/article.php?id_article=370) by vam mohl hodne pomoci. Neni sice primo o GTK+, ale o C/C++, ale je psan velice pekne. ;)

chessx

  • Aktivní člen
  • *
  • Příspěvků: 221
GLADE - nové okno po stisku tlačítka
« Odpověď #36 kdy: 04 Září 2007, 08:51:39 »
Zdravím diwoczaaka - a moc děkuju

Všechny doposavadní dotazy byly z hluboké neznalosti. Ne, že bych tomu už rozumněl, ale je to lepší než na začátku. Pro ostatní, kteří začínají bych pro začátek poradil:

1) GLADE je sice pěknej, ale ze začátku (dokud člověk nerozumí moc kompilaci) to fakt není dobrý, protože není jasné co v kterém file má být. Lepší je rovnou zkusit GTK+, které je  v GLADE využíváno.
2) Pro GTK+ doporučuji dokumentaci GTK+, která je v UBUNTU přístupná, ale až po nainstalování "Developers HELP "
3) překlad napsaného programu provedete příkazem: gcc -Wall test `pkg-config --cflags --libs gtk+-2.0` gtk.c
     kde gcc je překladač jazyka, nevím co znamená -Wall (ale má to tam prý být), test je název výsledného souboru, v uvozovkách je prý něco co využívá (taky tomu ještě nerozumím a gtk.c je zdrojový kód, který jsem napsal
4) V GLADE jsou příklady, které pomocí překladu z bodu 3) lze překládat a je tam lecos vidět


V každém případě je to dřina.
Ještě jednou děkuju Diwoczaakovi za prvotní kroky.
Kdyby mě někdo dokázal objasnit nejasnosti příkazu při kompilaci (bod 3) bylo by to príma

Přeju všem hezký den

Pavel Půlpán

GLADE - nové okno po stisku tlačítka
« Odpověď #37 kdy: 04 Září 2007, 11:58:01 »
K tomu parametru -Wall: Although GCC will compile this code, it isn't strictly complete. If we enable GCC's warnings we will be told what is missing. You are not expected to understand the warning messages right now, we show this only to demonstrate GCC's warnings. You enable warnings by adding the -Wall switch to your compilation command.

V zavorkach je upresneno, ktera knihovna GTK+ ma byt pri kompilaci pouzita. Je to z duvodu, ze v systemu muzou byt verze prvni i druhe rady.

Mimo jine pred paramtrem test vam chybi prepinac -o pro definici vystupu kompilatoru. ;)

Edit: Pri praci s projekty neni od veci se neco malo naucit o tvorbe a vyuziti Makefile. Viz ten serial na ktery jsem poukazoval minule. Da se tim usetrit spoustu casu.

 

Provoz zaštiťuje spolek OpenAlt.