Ejemplo n.º 1
0
// --------------------------------------------------------------------------------------------------------------
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
Ejemplo n.º 2
0
/// <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);
		}
}