本文整理汇总了C++中BFilePanel::SetTarget方法的典型用法代码示例。如果您正苦于以下问题:C++ BFilePanel::SetTarget方法的具体用法?C++ BFilePanel::SetTarget怎么用?C++ BFilePanel::SetTarget使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BFilePanel
的用法示例。
在下文中一共展示了BFilePanel::SetTarget方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FileTypesWindow
void
FileTypes::MessageReceived(BMessage *message)
{
switch (message->what) {
case kMsgSettingsChanged:
fSettings.UpdateFrom(message);
break;
case kMsgOpenTypesWindow:
if (fTypesWindow == NULL) {
fTypesWindow = new FileTypesWindow(fSettings.Message());
fTypesWindow->Show();
fWindowCount++;
} else
fTypesWindow->Activate(true);
break;
case kMsgTypesWindowClosed:
fTypesWindow = NULL;
_WindowClosed();
break;
case kMsgOpenApplicationTypesWindow:
if (fApplicationTypesWindow == NULL) {
fApplicationTypesWindow = new ApplicationTypesWindow(
fSettings.Message());
fApplicationTypesWindow->Show();
fWindowCount++;
} else
fApplicationTypesWindow->Activate(true);
break;
case kMsgApplicationTypesWindowClosed:
fApplicationTypesWindow = NULL;
_WindowClosed();
break;
case kMsgTypeWindowClosed:
fTypeWindowCount--;
// supposed to fall through
case kMsgWindowClosed:
_WindowClosed();
break;
case kMsgOpenFilePanel:
{
// the open file panel sends us a message when it's done
const char* subTitle;
if (message->FindString("title", &subTitle) != B_OK)
subTitle = B_TRANSLATE("Open file");
int32 what;
if (message->FindInt32("message", &what) != B_OK)
what = B_REFS_RECEIVED;
BMessenger target;
if (message->FindMessenger("target", &target) != B_OK)
target = be_app_messenger;
BString title = B_TRANSLATE("FileTypes");
if (subTitle != NULL && subTitle[0]) {
title.Append(": ");
title.Append(subTitle);
}
fFilePanel->SetMessage(new BMessage(what));
fFilePanel->Window()->SetTitle(title.String());
fFilePanel->SetTarget(target);
if (!fFilePanel->IsShowing())
fFilePanel->Show();
break;
}
case B_SILENT_RELAUNCH:
// In case we were launched via the add-on, there is no types
// window yet.
if (fTypesWindow == NULL)
PostMessage(kMsgOpenTypesWindow);
break;
case B_CANCEL:
if (fWindowCount == 0)
PostMessage(B_QUIT_REQUESTED);
break;
case B_SIMPLE_DATA:
RefsReceived(message);
break;
default:
BApplication::MessageReceived(message);
break;
}
}
示例2: fileNameNoExt
//.........这里部分代码省略.........
*/
}
}
// comment start
header.ReplaceAll("%COMMS%", commentBlockStart.String());
// comment cont'd
header.ReplaceAll("%COMMC%", commentBlockCont.String());
// comment cont'd lazy (blank if possible)
header.ReplaceAll("%COMML%", commentBlockLazy.String());
// comment end
header.ReplaceAll("%COMME%", commentBlockEnd.String());
// comment line end
commentBlockLineEnd << "\n";
header.ReplaceAll("\n", commentBlockLineEnd.String());
err = B_OK;
break;
}
case 'optf':
{
const char *args[] = {path.Path(), NULL};
err = be_roster->Launch(sTrackerSig, 1, (char **)args);
//printf("err %s\n", strerror(err));
err = B_CANCELED;
break;
}
case 'seta':
{
MimeRefFilter filter("application/x-person");
BPath path;
entry_ref people;
if (find_directory(B_USER_DIRECTORY, &path) == B_OK)
{
path.Append("people");
get_ref_for_path(path.Path(), &people);
}
BFilePanel *panel;
panel = new BFilePanel(B_OPEN_PANEL, NULL, &people,
B_FILE_NODE, false, NULL, &filter);
// trick to synchronously use BFilePanel
PanelHandler *handler = new PanelHandler;
if (panel->Window()->Lock())
{
panel->Window()->AddHandler(handler);
panel->Window()->Unlock();
}
panel->SetTarget(BMessenger(handler));
panel->Show();
if (handler->Wait() < B_OK)
break;
if (!handler->Message())
break;
if (handler->Message()->what == B_CANCEL)
break;
entry_ref ref;
//panel->Message()->PrintToStream();
if (panel->GetNextSelectedRef(&ref) == B_OK)
{
//printf("ref:%s\n", ref.name);
path.SetTo(&ref);
dir.WriteAttr("pe:author_people", B_STRING_TYPE, 0LL,
path.Path(), strlen(path.Path()));
}
delete panel;
delete handler;
err = B_CANCELED;
break;
}
case B_ABOUT_REQUESTED:
{
BString tmpPath("/tmp/Pe-HeaderHeader-About-");
tmpPath << system_time() << "-" << getpid() << ".txt";
entry_ref ref;
get_ref_for_path(tmpPath.String(), &ref);
{
BFile f(&ref, B_CREATE_FILE | B_WRITE_ONLY);
err = f.InitCheck();
if (err < 0)
break;
f.Write(sAboutText, strlen(sAboutText));
f.SetPermissions(0444);
}
BMessage msg(B_REFS_RECEIVED);
msg.AddRef("refs", &ref);
err = be_app_messenger.SendMessage(&msg);
err = B_CANCELED;
break;
}
case 0:
err = B_CANCELED;
break;
default:
break;
}
delete menu;
return err;
}
示例3: OpenSaveFilePanel
/*
open a file panel and ask for a PDF file
the file panel will tell by itself if openning have been cancelled
or not.
*/
void BepdfApplication::OpenSaveFilePanel(BHandler* handler, bool fileMode, BRefFilter* filter, BMessage* msg, const char* name) {
BFilePanel* panel = NULL;
// lazy construct file panel
if (fileMode) {
// file panel for selection of file
if (mSaveFilePanel == NULL) {
mSaveFilePanel = new BFilePanel (B_SAVE_PANEL,
NULL, NULL, B_FILE_NODE, false, NULL, NULL, true);
}
// hide other file panel
if (mSaveToDirectoryFilePanel != NULL && mSaveToDirectoryFilePanel->IsShowing()) {
mSaveToDirectoryFilePanel->Hide();
}
panel = mSaveFilePanel;
} else {
// file panel for selection of directory
if (mSaveToDirectoryFilePanel == NULL) {
mSaveToDirectoryFilePanel = new BFilePanel (B_OPEN_PANEL,
NULL, NULL, B_DIRECTORY_NODE, false, NULL, NULL, true);
}
// hide other file panel
if (mSaveFilePanel != NULL && mSaveFilePanel->IsShowing()) {
mSaveFilePanel->Hide();
}
panel = mSaveToDirectoryFilePanel;
}
// (re)-set to directory of currently opened PDF file
// TODO decide if directory should be independent from PDF file
panel->SetPanelDirectory(mSettings->GetPanelDirectory());
if (name != NULL) {
panel->SetSaveText(name);
}
else if (fileMode) {
panel->SetSaveText("");
}
// set/reset filter
panel->SetRefFilter(filter);
// add kind to message
BMessage message(B_SAVE_REQUESTED);
if (msg == NULL) {
msg = &message;
}
panel->SetMessage(msg);
// set target
BMessenger msgr(handler);
panel->SetTarget(msgr);
panel->Refresh();
panel->Show();
}
示例4: filerequester
SDL_bool filerequester( struct machine *oric, char *title, char *path, char *fname, int type )
{
BFilePanel *panel;
PanelLooper *looper = new PanelLooper();
looper->Run();
SDL_bool ret;
char *pat;
bool dosavemode = false;
switch( type )
{
case FR_DISKSAVE:
dosavemode = true;
case FR_DISKLOAD:
pat = "*.dsk";
break;
// FIXME: Save TAP should be *.tap, save ORT should be *.ort, Load should be *.tap, *.ort, *.wav
case FR_TAPESAVETAP:
case FR_TAPESAVEORT:
dosavemode = true;
case FR_TAPELOAD:
pat = "*.tap";
break;
case FR_ROMS:
pat = "*.rom";
break;
case FR_SNAPSHOTSAVE:
dosavemode = true;
case FR_SNAPSHOTLOAD:
pat = "*.sna";
break;
case FR_KEYMAPPINGSAVE:
dosavemode = true;
case FR_KEYMAPPINGLOAD:
pat = "*.kma";
break;
default:
pat = NULL;
break;
}
//XXX: use RefFilter
panel = new BFilePanel(dosavemode ? B_SAVE_PANEL : B_OPEN_PANEL);
panel->SetTarget(BMessenger(looper));
if (path)
panel->SetPanelDirectory(path);
panel->Show();
looper->Wait();
ret = looper->DoIt();
entry_ref ref;
looper->GetRef(ref);
delete panel;
looper->Lock();
looper->Quit();
if (ret) {
BPath p(&ref);
strncpy( fname, p.Leaf(), 512 ); path[511] = 0;
p.GetParent(&p);
strncpy( path, p.Path(), 4096 ); path[4095] = 0;
}
return ret;
}
示例5: FileTypesWindow
void
FileTypes::MessageReceived(BMessage* message)
{
switch (message->what) {
case kMsgSettingsChanged:
fSettings.UpdateFrom(message);
break;
case kMsgOpenTypesWindow:
if (fTypesWindow == NULL) {
fTypesWindow = new FileTypesWindow(fSettings.Message());
if (fArgvType.Length() > 0) {
// Set the window to the type that was requested on the
// command line (-type), we do this only once, if we
// ever opened more than one FileTypesWindow.
fTypesWindow->SelectType(fArgvType.String());
fArgvType = "";
}
fTypesWindow->Show();
fWindowCount++;
} else
fTypesWindow->Activate(true);
break;
case kMsgTypesWindowClosed:
fTypesWindow = NULL;
_WindowClosed();
break;
case kMsgOpenApplicationTypesWindow:
if (fApplicationTypesWindow == NULL) {
fApplicationTypesWindow = new ApplicationTypesWindow(
fSettings.Message());
fApplicationTypesWindow->Show();
fWindowCount++;
} else
fApplicationTypesWindow->Activate(true);
break;
case kMsgApplicationTypesWindowClosed:
fApplicationTypesWindow = NULL;
_WindowClosed();
break;
case kMsgTypeWindowClosed:
fTypeWindowCount--;
// supposed to fall through
case kMsgWindowClosed:
_WindowClosed();
break;
case kMsgOpenFilePanel:
{
// the open file panel sends us a message when it's done
const char* subTitle;
if (message->FindString("title", &subTitle) != B_OK)
subTitle = B_TRANSLATE("Open file");
int32 what;
if (message->FindInt32("message", &what) != B_OK)
what = B_REFS_RECEIVED;
BMessenger target;
if (message->FindMessenger("target", &target) != B_OK)
target = be_app_messenger;
BString title = B_TRANSLATE("FileTypes");
if (subTitle != NULL && subTitle[0]) {
title.Append(": ");
title.Append(subTitle);
}
uint32 flavors = B_FILE_NODE;
if (message->FindBool("allowDirs"))
flavors |= B_DIRECTORY_NODE;
fFilePanel->SetNodeFlavors(flavors);
fFilePanel->SetMessage(new BMessage(what));
fFilePanel->Window()->SetTitle(title.String());
fFilePanel->SetTarget(target);
if (!fFilePanel->IsShowing())
fFilePanel->Show();
break;
}
case B_SILENT_RELAUNCH:
// In case we were launched via the add-on, there is no types
// window yet.
if (fTypesWindow == NULL)
PostMessage(kMsgOpenTypesWindow);
break;
case B_CANCEL:
if (fWindowCount == 0)
PostMessage(B_QUIT_REQUESTED);
break;
case B_SIMPLE_DATA:
//.........这里部分代码省略.........
示例6: firstWord
//.........这里部分代码省略.........
// use BPath to resolve relative pathnames, above code forces it
// to use /boot/home as a working dir as opposed to the app path
BPath sendPath(filePath, NULL, true);
// the BFile is used to verify if the file exists
// based off the documentation get_ref_for_path *should*
// return something other than B_OK if the file doesn't exist
// but that doesn't seem to be working correctly
BFile sendFile(sendPath.Path(), B_READ_ONLY);
// if the file exists, send, otherwise drop to the file panel
if (sendFile.InitCheck() == B_OK)
{
sendFile.Unset();
entry_ref ref;
get_ref_for_path(sendPath.Path(), &ref);
msg->AddRef("refs", &ref);
sMsgr.SendMessage(msg);
return true;
}
}
BFilePanel *myPanel (new BFilePanel);
BString myTitle ("Sending a file to ");
myTitle.Append (theNick);
myPanel->Window()->SetTitle (myTitle.String());
myPanel->SetMessage (msg);
myPanel->SetButtonLabel (B_DEFAULT_BUTTON, "Send");
myPanel->SetTarget (sMsgr);
myPanel->Show();
}
else if (secondWord.ICompare ("CHAT") == 0
&& theNick != "-9z99")
{
BMessage msg (CHAT_ACTION);
msg.AddString ("nick", theNick.String());
sMsgr.SendMessage (&msg);
}
return true;
}
if (firstWord == "/DOP" || firstWord == "/DEOP")
{
BString theNick (RestOfString (data, 2));
if (theNick != "-9z99")
{
BMessage send (M_SERVER_SEND);
AddSend (&send, "MODE ");
AddSend (&send, id);
AddSend (&send, " -oooo ");
AddSend (&send, theNick);
AddSend (&send, endl);
}
return true;