LaunchBox: add Open containing folder option.
Contributed by abhiin1947. Fixes #7951.
This commit is contained in:
@@ -16,6 +16,7 @@ enum {
|
||||
MSG_CLEAR_SLOT = 'clsl',
|
||||
MSG_REMOVE_SLOT = 'rmsl',
|
||||
MSG_LAUNCH = 'lnch',
|
||||
MSG_OPEN_CONTAINING_FOLDER = 'opcf',
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -112,7 +112,8 @@ void
|
||||
MainWindow::MessageReceived(BMessage* message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case MSG_LAUNCH: {
|
||||
case MSG_LAUNCH:
|
||||
{
|
||||
BView* pointer;
|
||||
if (message->FindPointer("be:source", (void**)&pointer) < B_OK)
|
||||
break;
|
||||
@@ -180,7 +181,8 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MSG_ADD_SLOT: {
|
||||
case MSG_ADD_SLOT:
|
||||
{
|
||||
LaunchButton* button;
|
||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||
fPadView->AddButton(new LaunchButton("launch button",
|
||||
@@ -188,13 +190,15 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MSG_CLEAR_SLOT: {
|
||||
case MSG_CLEAR_SLOT:
|
||||
{
|
||||
LaunchButton* button;
|
||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK)
|
||||
button->SetTo((entry_ref*)NULL);
|
||||
break;
|
||||
}
|
||||
case MSG_REMOVE_SLOT: {
|
||||
case MSG_REMOVE_SLOT:
|
||||
{
|
||||
LaunchButton* button;
|
||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||
if (fPadView->RemoveButton(button))
|
||||
@@ -202,7 +206,8 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MSG_SET_DESCRIPTION: {
|
||||
case MSG_SET_DESCRIPTION:
|
||||
{
|
||||
LaunchButton* button;
|
||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||
const char* name;
|
||||
@@ -260,7 +265,8 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MSG_ADD_WINDOW: {
|
||||
case MSG_ADD_WINDOW:
|
||||
{
|
||||
BMessage settings('sett');
|
||||
SaveSettings(&settings);
|
||||
message->AddMessage("window", &settings);
|
||||
@@ -283,6 +289,21 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
else
|
||||
SetWorkspaces(1L << current_workspace());
|
||||
break;
|
||||
case MSG_OPEN_CONTAINING_FOLDER:
|
||||
{
|
||||
LaunchButton* button;
|
||||
if (message->FindPointer("be:source", (void**)&button) == B_OK && button->Ref() != NULL) {
|
||||
entry_ref target = *button->Ref();
|
||||
BEntry openTarget(&target);
|
||||
BMessage openMsg(B_REFS_RECEIVED);
|
||||
BMessenger tracker("application/x-vnd.Be-TRAK");
|
||||
openTarget.GetParent(&openTarget);
|
||||
openTarget.GetRef(&target);
|
||||
openMsg.AddRef("refs",&target);
|
||||
tracker.SendMessage(&openMsg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case B_SIMPLE_DATA:
|
||||
case B_REFS_RECEIVED:
|
||||
case B_PASTE:
|
||||
|
||||
@@ -341,6 +341,14 @@ PadView::DisplayMenu(BPoint where, LaunchButton* button) const
|
||||
item = new BMenuItem(B_TRANSLATE("Remove button"), message);
|
||||
item->SetTarget(window);
|
||||
menu->AddItem(item);
|
||||
// Open containing folder button
|
||||
if (button->Ref() != NULL) {
|
||||
message = new BMessage(MSG_OPEN_CONTAINING_FOLDER);
|
||||
message->AddPointer("be:source", (void*)button);
|
||||
item = new BMenuItem(B_TRANSLATE("Open containing folder"), message);
|
||||
item->SetTarget(window);
|
||||
menu->AddItem(item);
|
||||
}
|
||||
// set button description
|
||||
if (button->Ref()) {
|
||||
message = new BMessage(MSG_SET_DESCRIPTION);
|
||||
|
||||
Reference in New Issue
Block a user