|
Tracker (tropiciel) dostarcza wygodny mechanizm skrótów poprzez użycie wtyczek (add-ons). Użytkownik może uzyskać dostęp do specjalnego menu przez kliknięcie na Tracker'ze. Tracker współdziała z wtyczkami (add-on) poprzez funkcję process_refs() opisaną poniżej.Wtyczki (add-ons) Tracker'a powinny być umieszczone w /boot/home/config/add-ons/Tracker. Skrót klawiszowy może zostać skojarzony z wtyczką przez dołączenie myślnika następującego za skrótem klawiszowym do nazwy pliku wtyczki.
![]() | process_refs() |
Zadeklarowana w: be/be/add-ons/tracker/TrackerAddOn.h
void process_refs(entry_ref dir_ref, BMessage *msg, void *reserved) Tracker wywołuje tę funkcję kiedy użytkownik wywołuje wtyczkę (add-on). Katalog bieżący jest znajdowany w dir_ref. Argument msg jest standardowym komunikatem B_REFS_RECEIVED typu BMessage z tablicą "refs" zawierającą zmiennne entry_ref plików wybranych przez użytkownika. Trzeci argument jest obecnie nieużywany.
process_refs() działa w oddzielnych wątkach wewnątrz zespołu Tracker'a, więc jeśli Twoja wtyczka (add-on) zawiesi się to Tracker również się zawiesi.
Prześledź prostą wtyczkę (Add-On) Tracker'a. Jest to po prostu przekazanie zawartości argumentów do process_refs() i otrzymanie ich w oknie.
#include <Application.h>
#include <InterfaceKit.h>
#include <StorageKit.h>
#include <stdio.h>
#include <string.h>
#include <be/add-ons/tracker/TrackerAddon.h>
void process_refs(entry_ref dir_ref, BMessage *msg, void *)
{
BWindow *window = new BWindow(BRect(100,100,300,300),
"Przykładowy dodatek Tracker'a", B_TITLED_WINDOW, 0);
BTextView *view = new BTextView(BRect(0,0,200,200), "widok",
BRect(0,0,200,200), B_FOLLOW_ALL_SIDES, B_WILL_DRAW |
B_FULL_UPDATE_ON_RESIZE);
BPath path;
BEntry entry(&dir_ref);
entry.GetPath(&path);
view->Insert("Bieżący katalog: ");
view->Insert(path.Path());
view->Insert("n");
int refs;
entry_ref file_ref;
for (refs=0;msg->FindRef("odnośniki", refs, &file_ref) == B_NO_ERROR;refs++) {
if (refs == 0)
view->Insert("Wybrane pliki:n");
entry.SetTo(&file_ref);
entry.GetPath(&path);
view->Insert(path.Path());
view->Insert("n");
}
if (refs == 0)
view->Insert("Nie wybrano żadnych plików.n");
view->MakeEditable(false);
window->AddChild(view);
window->Show();
}
main()
{
new BApplication("application/x-sample-tracker-add-on");
(new BAlert("", "Przykładowy dodatek Tracker", "kapitalnie"))->Go();
delete be_app;
}
|
Copyright © 2000 Be, Inc. Wszelkie prawa zastrzeżone.