本文整理汇总了C++中BPose::IsSelected方法的典型用法代码示例。如果您正苦于以下问题:C++ BPose::IsSelected方法的具体用法?C++ BPose::IsSelected怎么用?C++ BPose::IsSelected使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BPose
的用法示例。
在下文中一共展示了BPose::IsSelected方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _SCRIPTING_ONLY
bool
BPoseView::GetProperty(BMessage *_SCRIPTING_ONLY(specifier),
int32 _SCRIPTING_ONLY(form), const char *_SCRIPTING_ONLY(property),
BMessage *_SCRIPTING_ONLY(reply))
{
#if _SUPPORTS_FEATURE_SCRIPTING
// PRINT(("GetProperty %s\n", property));
bool handled = false;
status_t error = B_OK;
if (strcmp(property, kPropertyPath) == 0) {
if (form == B_DIRECT_SPECIFIER) {
handled = true;
if (!TargetModel())
error = B_NOT_A_DIRECTORY;
else
reply->AddRef("result", TargetModel()->EntryRef());
}
} else if (strcmp(property, kPropertySelection) == 0) {
int32 count = fSelectionList->CountItems();
switch (form) {
case B_DIRECT_SPECIFIER:
// return entries of all poses in selection
for (int32 index = 0; index < count; index++)
reply->AddRef("result", fSelectionList->ItemAt(index)->
TargetModel()->EntryRef());
handled = true;
break;
case kPreviousSpecifier:
case kNextSpecifier:
{
// return entry and index of selected pose before or after
// specified pose
entry_ref ref;
if (specifier->FindRef("data", &ref) != B_OK)
break;
int32 poseIndex;
BPose *pose = FindPose(&ref, &poseIndex);
for (;;) {
if (form == (int32)kPreviousSpecifier)
pose = PoseAtIndex(--poseIndex);
else if (form == (int32)kNextSpecifier)
pose = PoseAtIndex(++poseIndex);
if (!pose) {
error = B_ENTRY_NOT_FOUND;
break;
}
if (pose->IsSelected()) {
reply->AddRef("result", pose->TargetModel()->EntryRef());
reply->AddInt32("index", IndexOfPose(pose));
break;
}
}
handled = true;
break;
}
}
} else if (strcmp(property, kPropertyEntry) == 0) {
int32 count = fPoseList->CountItems();
switch (form) {
case B_DIRECT_SPECIFIER:
// return all entries of all poses in PoseView
for (int32 index = 0; index < count; index++)
reply->AddRef("result", PoseAtIndex(index)->TargetModel()->EntryRef());
handled = true;
break;
case B_INDEX_SPECIFIER:
{
// return entry at index
int32 index;
if (specifier->FindInt32("index", &index) != B_OK)
break;
if (!PoseAtIndex(index)) {
error = B_BAD_INDEX;
handled = true;
break;
}
reply->AddRef("result", PoseAtIndex(index)->TargetModel()->EntryRef());
handled = true;
break;
}
case kPreviousSpecifier:
case kNextSpecifier:
{
// return entry and index of pose before or after specified pose
entry_ref ref;
if (specifier->FindRef("data", &ref) != B_OK)
break;
int32 tmp;
//.........这里部分代码省略.........
示例2: str
/*!
\brief Tracker add-on entry
*/
extern "C" void
process_refs(entry_ref dir, BMessage* refs, void* /*reserved*/)
{
status_t status;
BAlert *alert;
BMessenger msgr;
BPoseView *view = NULL;
BMessage poseViewBackup;
BMessage poseViewColumnBackup;
uint32 poseViewModeBackup;
BString windowTitleBackup;
refs->PrintToStream();
status = refs->FindMessenger("TrackerViewToken", &msgr);
if (status < B_OK) {
Error(view, status);
return;
}
status = B_ERROR;
if (!msgr.LockTarget()) {
Error(view, status);
return;
}
status = B_BAD_HANDLER;
view = dynamic_cast<BPoseView *>(msgr.Target(NULL));
if (!view) {
Error(view, status);
return;
}
if (dynamic_cast<BWindow *>(view->Looper()) == NULL) {
Error(view, status, true);
return;
}
windowTitleBackup = view->Window()->Title();
view->SaveColumnState(poseViewColumnBackup);
view->SaveState(poseViewBackup);
view->SetDragEnabled(false);
view->SetSelectionRectEnabled(false);
view->SetPoseEditing(false);
poseViewModeBackup = view->ViewMode();
view->SetViewMode(kIconMode);
view->ShowBarberPole();
view->UnlockLooper();
alert = new BAlert("Error", "IconVader:\nClick on the icons to get points."
"\nAvoid symlinks!", "OK");
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
alert->Go();
int32 score = 0;
int32 count = 300;
while (count--) {
status = B_ERROR;
if (!msgr.LockTarget()) {
Error(view, status);
return;
}
BPose *pose;
for (int32 i = 0; (pose = view->PoseAtIndex(i)); i++) {
if (pose->IsSelected()) {
if (pose->TargetModel()->IsFile())
score++;
if (pose->TargetModel()->IsDirectory())
score+=2;
if (pose->TargetModel()->IsSymLink())
score-=10;
pose->Select(false);
}
#ifdef __HAIKU__
BPoint location = pose->Location(view);
#else
BPoint location = pose->Location();
#endif
location.x += ((rand() % 20) - 10);
location.y += ((rand() % 20) - 10);
#ifdef __HAIKU__
pose->SetLocation(location, view);
#else
pose->SetLocation(location);
#endif
}
view->CheckPoseVisibility();
//.........这里部分代码省略.........