// -------------------------------------------------------------------------------------------------------------- static pascal OSErr DoOpenDocuments(const AppleEvent* inputEvent, AppleEvent* outputEvent, SRefCon handlerRefCon) { #pragma unused (outputEvent, handlerRefCon) AEDescList documentsList; OSErr err = AEGetParamDesc(inputEvent, keyDirectObject, typeAEList, &documentsList); require_noerr(err, CantGetDocList); OpenSelectedFiles(documentsList); err = noErr; AEDisposeDesc(&documentsList); CantGetDocList: return err; } // DoOpenDocument
/// <summary> /// Handles window messages. /// </summary> LRESULT WINAPI TileGroup::HandleMessage(HWND window, UINT message, WPARAM wParam, LPARAM lParam, LPVOID) { if (message == mChangeNotifyMsg) { return HandleChangeNotify(HANDLE(wParam), DWORD(lParam)); } if (mContextMenu3) { LRESULT result; if (SUCCEEDED(mContextMenu3->HandleMenuMsg2(message, wParam, lParam, &result))) { return result; } } if (mContextMenu2) { if (SUCCEEDED(mContextMenu2->HandleMenuMsg(message, wParam, lParam))) { return 0; } } switch (message) { case WM_KEYDOWN: switch (wParam) { case 'A': if (GetKeyState(VK_CONTROL) < 0) { SelectAll(); } break; case 'C': if (GetKeyState(VK_CONTROL) < 0) { DoCopy(false); } break; case 'V': if (GetKeyState(VK_CONTROL) < 0) { DoPaste(); } break; case 'X': if (GetKeyState(VK_CONTROL) < 0) { DoCopy(true); } break; case 'Z': if (GetKeyState(VK_CONTROL) < 0) { DoUndo(); } break; case VK_DELETE: DeleteSelectedFiles(); break; case VK_RETURN: OpenSelectedFiles(); break; case VK_F2: RenameSelectedFiles(); break; case VK_F5: UpdateAllIcons(); break; case VK_UP: case VK_DOWN: case VK_LEFT: case VK_RIGHT: break; } break; case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: if (!mInRectangleSelection) { StartRectangleSelection(D2D1::Point2U(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); } else { EndRectangleSelection(D2D1::Point2U(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); } break; case WM_MOUSEMOVE: if (mInRectangleSelection) { MoveRectangleSelection(D2D1::Point2U(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); } break; case WM_LBUTTONUP: case WM_RBUTTONUP: if (mInRectangleSelection) { EndRectangleSelection(D2D1::Point2U(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); } else if (GetKeyState(VK_CONTROL) >= 0) { DeselectAll(); } break; case Window::WM_TOPPARENTLOST: mChangeNotifyMsg = 0; if (mChangeNotifyUID != 0) { SHChangeNotifyDeregister(mChangeNotifyUID); mChangeNotifyUID = 0; } break; case Window::WM_NEWTOPPARENT: { // TODO(Erik): This is unacceptable. We have to pick up change notifications while we don't // have a top parent. IPersistFolder2 *ipsf2; LPITEMIDLIST curFolder; HRESULT hr; mChangeNotifyMsg = mWindow->RegisterUserMessage(this); if (SUCCEEDED(hr = mWorkingFolder->QueryInterface(IID_IPersistFolder2, (LPVOID*)&ipsf2))) { if (SUCCEEDED(hr = ipsf2->GetCurFolder(&curFolder))) { // (Re)Register for change notifications SHChangeNotifyEntry watchEntries[] = { curFolder, FALSE }; mChangeNotifyUID = SHChangeNotifyRegister( window, CHANGE_SOURCES, CHANGE_EVENTS, mChangeNotifyMsg, 1, watchEntries); // Let go fo the PIDLists CoTaskMemFree(curFolder); } ipsf2->Release(); } } break; } mEventHandler->HandleMessage(window, message, wParam, lParam); return DefWindowProc(window, message, wParam, lParam); }
void CBSearchTextDialog::Receive ( JBroadcaster* sender, const Message& message ) { if (sender == GetFindFwdButton() && message.Is(JXButton::kPushed) && (itsMultifileCB->IsChecked() || itsSearchDirCB->IsChecked())) { SearchFiles(); } else if (sender == GetReplaceAllFwdButton() && message.Is(JXButton::kPushed) && (itsMultifileCB->IsChecked() || itsSearchDirCB->IsChecked())) { SearchFilesAndReplace(); } else if (sender == itsFileList && message.Is(JXFileListTable::kProcessSelection)) { OpenSelectedFiles(); } else if (sender == itsFileList && (message.Is(JTable::kRowsInserted) || message.Is(JTable::kRowsRemoved))) { UpdateDisplay(); } else if (sender == itsFileListMenu && message.Is(JXMenu::kNeedsUpdate)) { UpdateFileListMenu(); } else if (sender == itsFileListMenu && message.Is(JXMenu::kItemSelected)) { const JXMenu::ItemSelected* selection = dynamic_cast<const JXMenu::ItemSelected*>(&message); assert( selection != NULL ); HandleFileListMenu(selection->GetIndex()); } else if (sender == itsSearchDirCB && message.Is(JXCheckbox::kPushed)) { UpdateDisplay(); } else if (sender == itsDirInput && (message.Is(JTextEditor::kTextChanged) || message.Is(JTextEditor::kTextSet))) { itsSearchDirCB->SetState(kJTrue); } else if (sender == itsMultifileCB && message.Is(JXCheckbox::kPushed)) { const JBoolean on = itsMultifileCB->IsChecked(); if (on && itsFileList->GetRowCount() == 0) { AddSearchFiles(); } UpdateDisplay(); } else if (sender == CBGetDocumentManager() && message.Is(CBDocumentManager::kProjectDocumentActivated)) { UpdateBasePath(); } else if (sender == itsChooseDirButton && message.Is(JXButton::kPushed)) { itsDirInput->ChoosePath(""); itsSearchDirCB->SetState(kJTrue); } else if (sender == itsDirHistory && message.Is(JXMenu::kItemSelected)) { JBoolean recurse; itsDirInput->SetText(itsDirHistory->GetPath(message, &recurse)); itsRecurseDirCB->SetState(recurse); itsSearchDirCB->SetState(kJTrue); } else if (sender == itsFileFilterHistory && message.Is(JXMenu::kItemSelected)) { JBoolean invert; itsFileFilterInput->SetText(itsFileFilterHistory->GetFilter(message, &invert)); itsInvertFileFilterCB->SetState(invert); itsSearchDirCB->SetState(kJTrue); } else if (sender == itsPathFilterHistory && message.Is(JXMenu::kItemSelected)) { JBoolean invert; itsPathFilterInput->SetText(itsPathFilterHistory->GetFilter(message, &invert)); itsSearchDirCB->SetState(kJTrue); } else { JXSearchTextDialog::Receive(sender, message); } }