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_CLEAR_SLOT = 'clsl',
|
||||||
MSG_REMOVE_SLOT = 'rmsl',
|
MSG_REMOVE_SLOT = 'rmsl',
|
||||||
MSG_LAUNCH = 'lnch',
|
MSG_LAUNCH = 'lnch',
|
||||||
|
MSG_OPEN_CONTAINING_FOLDER = 'opcf',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ void
|
|||||||
MainWindow::MessageReceived(BMessage* message)
|
MainWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
case MSG_LAUNCH: {
|
case MSG_LAUNCH:
|
||||||
|
{
|
||||||
BView* pointer;
|
BView* pointer;
|
||||||
if (message->FindPointer("be:source", (void**)&pointer) < B_OK)
|
if (message->FindPointer("be:source", (void**)&pointer) < B_OK)
|
||||||
break;
|
break;
|
||||||
@@ -180,7 +181,8 @@ MainWindow::MessageReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MSG_ADD_SLOT: {
|
case MSG_ADD_SLOT:
|
||||||
|
{
|
||||||
LaunchButton* button;
|
LaunchButton* button;
|
||||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||||
fPadView->AddButton(new LaunchButton("launch button",
|
fPadView->AddButton(new LaunchButton("launch button",
|
||||||
@@ -188,13 +190,15 @@ MainWindow::MessageReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MSG_CLEAR_SLOT: {
|
case MSG_CLEAR_SLOT:
|
||||||
|
{
|
||||||
LaunchButton* button;
|
LaunchButton* button;
|
||||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK)
|
if (message->FindPointer("be:source", (void**)&button) >= B_OK)
|
||||||
button->SetTo((entry_ref*)NULL);
|
button->SetTo((entry_ref*)NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MSG_REMOVE_SLOT: {
|
case MSG_REMOVE_SLOT:
|
||||||
|
{
|
||||||
LaunchButton* button;
|
LaunchButton* button;
|
||||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||||
if (fPadView->RemoveButton(button))
|
if (fPadView->RemoveButton(button))
|
||||||
@@ -202,7 +206,8 @@ MainWindow::MessageReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MSG_SET_DESCRIPTION: {
|
case MSG_SET_DESCRIPTION:
|
||||||
|
{
|
||||||
LaunchButton* button;
|
LaunchButton* button;
|
||||||
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
if (message->FindPointer("be:source", (void**)&button) >= B_OK) {
|
||||||
const char* name;
|
const char* name;
|
||||||
@@ -260,7 +265,8 @@ MainWindow::MessageReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MSG_ADD_WINDOW: {
|
case MSG_ADD_WINDOW:
|
||||||
|
{
|
||||||
BMessage settings('sett');
|
BMessage settings('sett');
|
||||||
SaveSettings(&settings);
|
SaveSettings(&settings);
|
||||||
message->AddMessage("window", &settings);
|
message->AddMessage("window", &settings);
|
||||||
@@ -283,6 +289,21 @@ MainWindow::MessageReceived(BMessage* message)
|
|||||||
else
|
else
|
||||||
SetWorkspaces(1L << current_workspace());
|
SetWorkspaces(1L << current_workspace());
|
||||||
break;
|
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_SIMPLE_DATA:
|
||||||
case B_REFS_RECEIVED:
|
case B_REFS_RECEIVED:
|
||||||
case B_PASTE:
|
case B_PASTE:
|
||||||
|
|||||||
@@ -341,6 +341,14 @@ PadView::DisplayMenu(BPoint where, LaunchButton* button) const
|
|||||||
item = new BMenuItem(B_TRANSLATE("Remove button"), message);
|
item = new BMenuItem(B_TRANSLATE("Remove button"), message);
|
||||||
item->SetTarget(window);
|
item->SetTarget(window);
|
||||||
menu->AddItem(item);
|
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
|
// set button description
|
||||||
if (button->Ref()) {
|
if (button->Ref()) {
|
||||||
message = new BMessage(MSG_SET_DESCRIPTION);
|
message = new BMessage(MSG_SET_DESCRIPTION);
|
||||||
|
|||||||
Reference in New Issue
Block a user