LaunchBox: add Open containing folder option.

Contributed by abhiin1947. Fixes #7951.
This commit is contained in:
Matt Madia
2013-02-17 11:53:23 -05:00
parent c4d175c590
commit ac966d5941
3 changed files with 36 additions and 6 deletions
+1
View File
@@ -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',
}; };
+27 -6
View File
@@ -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:
+8
View File
@@ -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);