Szép estét!
A gondom a következő lenne... Összedobtam Gtk2::TreeStore, és Gtk2::TreeView segítségével egy directory tree-t... Na most ezt egy dialog ablakban kidobom. Amit szeretnék, az az lenne, hogy az ok gombra történő kattintás után ki tudjam szedni a treeview-ból, hogy melyik directory lett kiválasztva, de egyszerűen nem tudom, hogy bírjam rá, hogy valami infót adjon nekem... Egész konkrétan, ugye a neve kéne, meg az elérési útja...
Valakinek valami tipp???
Előre is köszi! :)
- 1164 megtekintés
Hozzászólások
Ha jól rémlik, akkor az objektumnak, ami a fát reprezentálja, kell lennie egy selected tulajdonsága, ammi egy tömbre mutat és ebben vannak a paraméterek amik neked kellenek.
- A hozzászóláshoz be kell jelentkezni
A fát kvázi a treestore típusú ojjektum tartalmazza, viszont a kijelölést a treeview tudja kezelni, viszont tőle selected gyanánt, egy treeselection objektumot kapok...
Körbe tudok kérdezni mindent mindenkiről, csak azt nem tudom, hogy áll össze a kép, hogy meglegyen a konkrét data...
_______________________________________________________
Debian SID on AcerAspire 3022lmi
- A hozzászóláshoz be kell jelentkezni
Esetleg valami tipp, hogy hol lehetne hozzá valami doksit találni? Végig google-ztam mindent, és a hivatalos oldalon is pont ez a tutorial hiányzik... :(
_______________________________________________________
Debian SID on AcerAspire 3022lmi
- A hozzászóláshoz be kell jelentkezni
$iter = $treeview->get_selection->get_selected
vagy
@paths = $treeview->get_selection->get_selected_rows
lásd "man Gtk2::TreeSelection", illetve a Gtk2 referencia a függvények részletesebb leírásához.
aztán a Gtk2::TreeModel-ben lévő függvények az iter vagy path alapján kiszedik a megfelelő sort a store-ból.
- A hozzászóláshoz be kell jelentkezni
Áhh... megvan hol maradtam le... a TreeModel környékén nem néztem szét, csak a TreeStore-nál... a TreeModel-nél valóban ott a 'get'... Köszönöm, ez a láncszem hiányzott azt hiszem... Nah, majd este meló, meg suli után jól ki is próbálom... :D Köszi mégegyszer!
_______________________________________________________
Debian SID on AcerAspire 3022lmi
- A hozzászóláshoz be kell jelentkezni
Újabb dolgon akadtam el... Van egy SimpleListem... Egy sorra kattintva a megfelelő szubrutin lefut, meg van a data, ami kell, és itt jön a bökkenő.... Amim van az egy fájlnév... Nos 'valahol' van egy kép... neki kéne betöltenie ezt a fájlt... Nade abból a szubrutonból ami signal hatására hívódik, hogy tudom előszedni az Image objektumomat?
Valami tipp?
Előre is köszi!
szerk:
picit egyszerűbben... egy adott widgeten bekövetkezzett esemény kezelése közben szeretnék egy másik widget-et is piszkálni...
- A hozzászóláshoz be kell jelentkezni
a signal-nak add meg user databan a widgetet amit piszkalni akarsz
- A hozzászóláshoz be kell jelentkezni
Köszönöm a gyors választ! :)
Működik...
- A hozzászóláshoz be kell jelentkezni
Megint sikerült belefutnom valamibe... :)
Egy frambe beltettem egy image objektumot... Gondoltam ha átméretezem a framet, akkor hozzáigazítom a kép méretét. A gond az, hogy ha frame size_request, vagy size_allocate signáljához rendelem azt a subrutint, ami a kep átméretezését csinálja, akkor egy végtelen ciklust kapok, ugyanis az image set_from_pixbuf metódusa után ujrahívódik a frame size_(request|allocate)-je...
Van valami trükk, hogy ne legyen belőle végtelen ciklus?
szerk:
Valahol olvastam, hogy signal blokkolással elvileg megoldható, de ott a kérdezőnek sem működött (persze nekem sem... :D)
- A hozzászóláshoz be kell jelentkezni
Valami tipp valakinek? Nagyon nem akar menni, pedig találtam egy másik 'megoldást' is: egy kis hóksu-pókuszt a signal chainnel, de az sem akar működni
GLib-GObject-WARNING **: gsignal.c:1502: signal id `15' cannot be chained from current emission stage for instance `0x83d51a0'
valószínű a signal id nem tetszik neki...
Így nézne ki a size_allocate-hez connectelt szubrutin:
sub _size_allocate {
my ($self, $new) = @_;
no warnings 'uninitialized';
if($self->{width} != $new->width ||
$self->{height} != $new->height) {
$self->{width} = $new->width;
$self->{height} = $new->height;
my $pixbuf = $self->get_pixbuf;
if($pixbuf) {
$pixbuf->scale_simple($self->{width}, self->{height},'GDK_INTERP_HYPER');
$self->set_from_pixbuf($pixbuf);
print "Pixbuf loaded\n";
} else {
print "No pixbuf\n";
};;
}
$self->signal_chain_from_overridden($new);
};
Ezt (szinte) egy az egyben szedtem ki egy levlistából...
- A hozzászóláshoz be kell jelentkezni
up...
(sehogy sem akar menni)
- A hozzászóláshoz be kell jelentkezni