Esempio n. 1
0
void UninstallForm::doClose()
{
	if (!m_bComplete)
		SetExitCode(-1);
	else
		SetExitCode(0);

	GetParent()->Close(true);
}
Esempio n. 2
0
FolderTree::FolderTree(string &strResultFolder,int iModalMode,int IsStandalone,bool IsFullScreen):
	Tree(nullptr),
	FindEdit(nullptr),
	ModalMode(iModalMode),
	IsFullScreen(IsFullScreen),
	IsStandalone(IsStandalone),
	PrevMacroMode(CtrlObject->Macro.GetMode())
{
	SetDynamicallyBorn(FALSE);
	SetRestoreScreenMode(TRUE);
	if (ModalMode != MODALTREE_FREE)
		strResultFolder.Clear();
	KeyBarVisible = TRUE;  // Заставим обновлятся кейбар
	//TopScreen=new SaveScreen;
	SetCoords();

	if ((Tree=new TreeList(FALSE)))
	{
		CtrlObject->Macro.SetMode(MACRO_FINDFOLDER);
		MacroMode = MACRO_FINDFOLDER;
		strLastName.Clear();
		Tree->SetModalMode(ModalMode);
		Tree->SetPosition(X1,Y1,X2,Y2);

		if (ModalMode == MODALTREE_FREE)
			Tree->SetRootDir(strResultFolder);

		Tree->SetVisible(TRUE);
		Tree->Update(0);

		// если было прерывание в процессе сканирования и это было дерево копира...
		if (Tree->GetExitCode())
		{
			if (!(FindEdit=new Edit))
			{
				SetExitCode(XC_OPEN_ERROR);
				return;
			}

			FindEdit->SetEditBeyondEnd(FALSE);
			FindEdit->SetPersistentBlocks(Global->Opt->Dialogs.EditBlock);
			InitKeyBar();
			FrameManager->ExecuteModal(this); //OT
		}

		strResultFolder = strNewFolder;
	}
	else
	{
		SetExitCode(XC_OPEN_ERROR);
	}
}
Esempio n. 3
0
int NDInstanceBase::WaitServer()
{
	ND_TRACE_FUNC() ;	
	int ret = wait_services() ;
	int host_error = nd_host_get_error();
	if (host_error == NDERR_HOST_SHUTDOWN || host_error == NDERR_SUCCESS) {
		SetExitCode(0);
	}
	else{
		SetExitCode(1);
	}
    return  ret ;
}
Esempio n. 4
0
void ReportDtor(int zvm_ret)
{
  SetExitCode(zvm_ret);

  /*
   * patch to show special messages instead of signals 24, 25
   * and do not calculate etag if session failed
   */
  if(zvm_code != 0)
  {
    SpecSignals();
    ZLOGS(LOG_ERROR, "SESSION %d FAILED WITH ERROR %d: %s",
        gnap->manifest == NULL ? 0 : gnap->manifest->node,
        zvm_code, strerror(zvm_code));
  }

  if(zvm_code != 0) FinalDump(gnap);

  AccountingDtor(gnap);
  ChannelsDtor(gnap->manifest);
  Report(gnap);
  NaClAppDtor(gnap); /* free user space and globals */
  ManifestDtor(gnap->manifest); /* dispose manifest and channels */
  FreeDispatchThunk();
  ZLogDtor();

  _exit(zvm_code);
}
Esempio n. 5
0
int SimpleModal::ReadInput(INPUT_RECORD *GetReadRec)
{
	if (GetReadRec)
		ClearStruct(*GetReadRec);

	if (m_WriteKey>=0)
	{
		m_ReadKey=m_WriteKey;
		m_WriteKey=-1;
	}
	else
	{
		m_ReadKey=GetInputRecord(&m_ReadRec);

		if (GetReadRec)
		{
			*GetReadRec=m_ReadRec;
		}
	}

	if (m_ReadKey == KEY_CONSOLE_BUFFER_RESIZE)
	{
		SCOPED_ACTION(LockScreen);
		Hide();
		Show();
	}

	if (Global->CloseFARMenu)
	{
		SetExitCode(-1);
	}

	return m_ReadKey;
}
Esempio n. 6
0
void UninstallForm::onButtonClicked(wxCommandEvent &event)
{
	if (m_butCancel->GetId() == event.GetId())
	{
		doClose();
	}
	else if (m_butUninstall->GetId() == event.GetId())
	{
		m_butCancel->Enable(false);
		m_butUninstall->Enable(false);
		m_butRepair->Enable(false);

		uint32 flags = 0;

		UDFSettingsPanel* settings = dynamic_cast<UDFSettingsPanel*>(m_pContent);

		if (settings)
			flags = settings->getFlags();

		m_pContent = new UDFProgressPanel(this, m_pUser, flags);

		m_bContentSizer->Clear(true);
		m_bContentSizer->Add(m_pContent, 1, wxEXPAND, 5);
		this->Layout();
	}
	else if (m_butRepair->GetId() == event.GetId())
	{
		UTIL::WIN::launchExe("desura.exe", "-forceupdate");
		SetExitCode(-1);
		GetParent()->Close();
	}
}
Esempio n. 7
0
int Modal::ReadInput(INPUT_RECORD *GetReadRec)
{
	if (GetReadRec)
		memset(GetReadRec,0,sizeof(INPUT_RECORD));

	if (WriteKey>=0)
	{
		ReadKey=WriteKey;
		WriteKey=-1;
	}
	else
	{
		ReadKey=GetInputRecord(&ReadRec);

		if (GetReadRec)
		{
			*GetReadRec=ReadRec;
		}
	}

	if (ReadKey == KEY_CONSOLE_BUFFER_RESIZE)
	{
		LockScreen LckScr;
		Hide();
		Show();
	}

	if (CloseFARMenu)
	{
		SetExitCode(-1);
	}

	return(ReadKey);
}
Esempio n. 8
0
void ReportDtor(int zvm_ret)
{
    SetExitCode(zvm_ret);

    /* broken session */
    if(zvm_code != 0)
    {
        ZLOGS(LOG_ERROR, "SESSION %d FAILED WITH ERROR %d: %s",
              gnap->manifest == NULL ? 0 : gnap->manifest->node,
              zvm_code, strerror(zvm_code));
        FinalDump(gnap);
        ZTrace("[final dump]");
    }

    ChannelsDtor(gnap->manifest);
    ZTrace("[channels destruction]");
    Report(gnap);
    ZTrace("[report]");
    NaClAppDtor(gnap); /* free user space and globals */
    ZTrace("[untrusted context closing]");
    ManifestDtor(gnap->manifest); /* dispose manifest and channels */
    ZTrace("[manifest deallocating]");
    FreeDispatchThunk();
    ZTrace("[thunk deallocating]");
    ZLogDtor();
    ZTrace("[zlog deallocating]");

    /* free local resources and exit */
    g_string_free(digests, TRUE);
    g_string_free(cmd, TRUE);
    g_free(zvm_state);

    ZTrace("[exit]");
    ZTraceDtor(1);
    ZTraceNameDtor();
    _exit(zvm_code);
}
Esempio n. 9
0
int FolderTree::ProcessMouse(MOUSE_EVENT_RECORD *MouseEvent)
{
	if (TreeKeyBar.ProcessMouse(MouseEvent))
		return TRUE;

	if (MouseEvent->dwEventFlags==DOUBLE_CLICK)
	{
		ProcessKey(KEY_ENTER);
		return TRUE;
	}

	int MsX=MouseEvent->dwMousePosition.X;
	int MsY=MouseEvent->dwMousePosition.Y;

	if ((MsX<X1 || MsY<Y1 || MsX>X2 || MsY>Y2) && IntKeyState.MouseEventFlags != MOUSE_MOVED)
	{
		if (!(MouseEvent->dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED) && (IntKeyState.PrevMouseButtonState&FROM_LEFT_1ST_BUTTON_PRESSED) && (Global->Opt->Dialogs.MouseButton&DMOUSEBUTTON_LEFT))
			ProcessKey(KEY_ESC);
		else if (!(MouseEvent->dwButtonState & RIGHTMOST_BUTTON_PRESSED) && (IntKeyState.PrevMouseButtonState&RIGHTMOST_BUTTON_PRESSED) && (Global->Opt->Dialogs.MouseButton&DMOUSEBUTTON_RIGHT))
			ProcessKey(KEY_ENTER);

		return TRUE;
	}

	if (MsY == Y2-2)
		FindEdit->ProcessMouse(MouseEvent);
	else
	{
		if (!Tree->ProcessMouse(MouseEvent))
			SetExitCode(XC_MODIFIED);
		else
			DrawEdit();
	}

	return TRUE;
}
Esempio n. 10
0
int FolderTree::ProcessKey(int Key)
{
	if (Key>=KEY_ALT_BASE+0x01 && Key<=KEY_ALT_BASE+65535)
		Key=Lower(Key-KEY_ALT_BASE);
	else if (Key>=KEY_RALT_BASE+0x01 && Key<=KEY_RALT_BASE+65535)
		Key=Lower(Key-KEY_RALT_BASE);

	switch (Key)
	{
		case KEY_F1:
		{
			Help Hlp(L"FindFolder");
		}
		break;
		case KEY_ESC:
		case KEY_F10:
			FrameManager->DeleteFrame();
			SetExitCode(XC_MODIFIED);
			break;
		case KEY_NUMENTER:
		case KEY_ENTER:
			Tree->GetCurDir(strNewFolder);

			if (apiGetFileAttributes(strNewFolder)!=INVALID_FILE_ATTRIBUTES)
			{
				FrameManager->DeleteFrame();
				SetExitCode(XC_MODIFIED);
			}
			else
			{
				Tree->ProcessKey(KEY_ENTER);
				DrawEdit();
			}

			break;
		case KEY_F5:
			IsFullScreen=!IsFullScreen;
			ResizeConsole();
			return TRUE;
		case KEY_CTRLR:		case KEY_RCTRLR:
		case KEY_F2:
			Tree->ProcessKey(KEY_CTRLR);
			DrawEdit();
			break;
		case KEY_CTRLNUMENTER:       case KEY_RCTRLNUMENTER:
		case KEY_CTRLSHIFTNUMENTER:  case KEY_RCTRLSHIFTNUMENTER:
		case KEY_CTRLENTER:          case KEY_RCTRLENTER:
		case KEY_CTRLSHIFTENTER:     case KEY_RCTRLSHIFTENTER:
		{
			string strName;
			FindEdit->GetString(strName);
			Tree->FindPartName(strName,TRUE,Key==KEY_CTRLSHIFTENTER||Key==KEY_RCTRLSHIFTENTER||Key == KEY_CTRLSHIFTNUMENTER||Key == KEY_RCTRLSHIFTNUMENTER?-1:1,1);
			DrawEdit();
		}
		break;
		case KEY_UP:
		case KEY_NUMPAD8:
		case KEY_DOWN:
		case KEY_NUMPAD2:
		case KEY_PGUP:
		case KEY_NUMPAD9:
		case KEY_PGDN:
		case KEY_NUMPAD3:
		case KEY_HOME:
		case KEY_NUMPAD7:
		case KEY_END:
		case KEY_NUMPAD1:
		case KEY_MSWHEEL_UP:
		case(KEY_MSWHEEL_UP | KEY_ALT):
		case(KEY_MSWHEEL_UP | KEY_RALT):
		case KEY_MSWHEEL_DOWN:
		case(KEY_MSWHEEL_DOWN | KEY_ALT):
		case(KEY_MSWHEEL_DOWN | KEY_RALT):
			FindEdit->SetString(L"");
			Tree->ProcessKey(Key);
			DrawEdit();
			break;
		default:

			if (Key == KEY_ADD || Key == KEY_SUBTRACT) // OFM: Gray+/Gray- navigation
			{
				Tree->ProcessKey(Key);
				DrawEdit();
				break;
			}

			/*
			      else
			      {
			        if((Key&(~KEY_CTRLMASK)) == KEY_ADD)
			          Key='+';
			        else if((Key&(~KEY_CTRLMASK)) == KEY_SUBTRACT)
			          Key='-';
			      }
			*/
			if (FindEdit->ProcessKey(Key))
			{
				string strName;
				FindEdit->GetString(strName);

				if (Tree->FindPartName(strName,FALSE,1,1))
					strLastName = strName;
				else
				{
					FindEdit->SetString(strLastName);
					strName = strLastName;
				}

				DrawEdit();
			}

			break;
	}

	return TRUE;
}
Esempio n. 11
0
int Grabber::ProcessKey(int Key)
{
	if(CloseFAR)
	{
		Key = KEY_ESC;
	}

	/* $ 14.03.2001 SVS
	  [-] Неправильно воспроизводился макрос в режиме грабления экрана.
	      При воспроизведении клавиша Home перемещала курсор в координаты
	      0,0 консоли.
	  Не было учтено режима выполнения макроса.
	*/
	SetCursorType(TRUE,60);

	if (CtrlObject->Macro.IsExecuting())
	{
		if ((Key&KEY_SHIFT) && Key!=KEY_NONE && ResetArea)
			Reset();
		else if (Key!=KEY_IDLE && Key!=KEY_NONE && !(Key&KEY_SHIFT) && !IntKeyState.ShiftPressed && !IntKeyState.AltPressed)
			ResetArea=TRUE;
	}
	else
	{
		if ((IntKeyState.ShiftPressed || Key!=KEY_SHIFT) && (Key&KEY_SHIFT) && Key!=KEY_NONE && Key!=KEY_CTRLA && Key!=KEY_RCTRLA && !IntKeyState.AltPressed && ResetArea)
			Reset();
		else if (Key!=KEY_IDLE && Key!=KEY_NONE && Key!=KEY_SHIFT && Key!=KEY_CTRLA && Key!=KEY_RCTRLA && !IntKeyState.ShiftPressed && !IntKeyState.AltPressed && !(Key&KEY_SHIFT))
			ResetArea=TRUE;
	}

	switch (Key)
	{
		case KEY_CTRLU:
		case KEY_RCTRLU:
			Reset();
			GArea.X1=-2;
			break;
		case KEY_ESC:
			SetExitCode(0);
			break;
		case KEY_NUMENTER:
		case KEY_ENTER:
		case KEY_CTRLINS:   case KEY_CTRLNUMPAD0:
		case KEY_RCTRLINS:  case KEY_RCTRLNUMPAD0:
		case KEY_CTRLADD:
		case KEY_RCTRLADD:
			CopyGrabbedArea(Key == KEY_CTRLADD || Key == KEY_RCTRLADD,VerticalBlock);
			SetExitCode(1);
			break;
		case KEY_LEFT:      case KEY_NUMPAD4:   case L'4':

			if (GArea.CurX>0)
				GArea.CurX--;

			break;
		case KEY_RIGHT:     case KEY_NUMPAD6:   case L'6':

			if (GArea.CurX<ScrX)
				GArea.CurX++;

			break;
		case KEY_UP:        case KEY_NUMPAD8:   case L'8':

			if (GArea.CurY>0)
				GArea.CurY--;

			break;
		case KEY_DOWN:      case KEY_NUMPAD2:   case L'2':

			if (GArea.CurY<ScrY)
				GArea.CurY++;

			break;
		case KEY_HOME:      case KEY_NUMPAD7:   case L'7':
			GArea.CurX=0;
			break;
		case KEY_END:       case KEY_NUMPAD1:   case L'1':
			GArea.CurX=ScrX;
			break;
		case KEY_PGUP:      case KEY_NUMPAD9:   case L'9':
			GArea.CurY=0;
			break;
		case KEY_PGDN:      case KEY_NUMPAD3:   case L'3':
			GArea.CurY=ScrY;
			break;
		case KEY_CTRLHOME:  case KEY_CTRLNUMPAD7:
		case KEY_RCTRLHOME: case KEY_RCTRLNUMPAD7:
			GArea.CurX=GArea.CurY=0;
			break;
		case KEY_CTRLEND:   case KEY_CTRLNUMPAD1:
		case KEY_RCTRLEND:  case KEY_RCTRLNUMPAD1:
			GArea.CurX=ScrX;
			GArea.CurY=ScrY;
			break;
		case KEY_CTRLLEFT:       case KEY_CTRLNUMPAD4:
		case KEY_RCTRLLEFT:      case KEY_RCTRLNUMPAD4:
		case KEY_CTRLSHIFTLEFT:  case KEY_CTRLSHIFTNUMPAD4:
		case KEY_RCTRLSHIFTLEFT: case KEY_RCTRLSHIFTNUMPAD4:

			if ((GArea.CurX-=10)<0)
				GArea.CurX=0;

			if (Key == KEY_CTRLSHIFTLEFT || Key == KEY_RCTRLSHIFTLEFT || Key == KEY_CTRLSHIFTNUMPAD4 || Key == KEY_RCTRLSHIFTNUMPAD4)
				GArea.X1=GArea.CurX;

			break;
		case KEY_CTRLRIGHT:       case KEY_CTRLNUMPAD6:
		case KEY_RCTRLRIGHT:      case KEY_RCTRLNUMPAD6:
		case KEY_CTRLSHIFTRIGHT:  case KEY_CTRLSHIFTNUMPAD6:
		case KEY_RCTRLSHIFTRIGHT: case KEY_RCTRLSHIFTNUMPAD6:

			if ((GArea.CurX+=10)>ScrX)
				GArea.CurX=ScrX;

			if (Key == KEY_CTRLSHIFTRIGHT || Key == KEY_RCTRLSHIFTRIGHT || Key == KEY_CTRLSHIFTNUMPAD6 || Key == KEY_RCTRLSHIFTNUMPAD6)
				GArea.X1=GArea.CurX;

			break;
		case KEY_CTRLUP:        case KEY_CTRLNUMPAD8:
		case KEY_RCTRLUP:       case KEY_RCTRLNUMPAD8:
		case KEY_CTRLSHIFTUP:   case KEY_CTRLSHIFTNUMPAD8:
		case KEY_RCTRLSHIFTUP:  case KEY_RCTRLSHIFTNUMPAD8:

			if ((GArea.CurY-=5)<0)
				GArea.CurY=0;

			if (Key == KEY_CTRLSHIFTUP || Key == KEY_RCTRLSHIFTUP || Key == KEY_CTRLSHIFTNUMPAD8 || Key == KEY_RCTRLSHIFTNUMPAD8)
				GArea.Y1=GArea.CurY;

			break;
		case KEY_CTRLDOWN:       case KEY_CTRLNUMPAD2:
		case KEY_RCTRLDOWN:      case KEY_RCTRLNUMPAD2:
		case KEY_CTRLSHIFTDOWN:  case KEY_CTRLSHIFTNUMPAD2:
		case KEY_RCTRLSHIFTDOWN: case KEY_RCTRLSHIFTNUMPAD2:

			if ((GArea.CurY+=5)>ScrY)
				GArea.CurY=ScrY;

			if (Key == KEY_CTRLSHIFTDOWN || Key == KEY_RCTRLSHIFTDOWN || Key == KEY_CTRLSHIFTNUMPAD8 || Key == KEY_RCTRLSHIFTNUMPAD8)
				GArea.Y1=GArea.CurY;

			break;
		case KEY_SHIFTLEFT:  case KEY_SHIFTNUMPAD4:

			if (GArea.X1>0)
				GArea.X1--;

			GArea.CurX=GArea.X1;
			GArea.CurY=GArea.Y1;
			break;
		case KEY_SHIFTRIGHT: case KEY_SHIFTNUMPAD6:

			if (GArea.X1<ScrX)
				GArea.X1++;

			GArea.CurX=GArea.X1;
			GArea.CurY=GArea.Y1;
			break;
		case KEY_SHIFTUP:    case KEY_SHIFTNUMPAD8:

			if (GArea.Y1>0)
				GArea.Y1--;

			GArea.CurX=GArea.X1;
			GArea.CurY=GArea.Y1;
			break;
		case KEY_SHIFTDOWN:  case KEY_SHIFTNUMPAD2:

			if (GArea.Y1<ScrY)
				GArea.Y1++;

			GArea.CurX=GArea.X1;
			GArea.CurY=GArea.Y1;
			break;
		case KEY_SHIFTHOME:  case KEY_SHIFTNUMPAD7:
			GArea.CurX=GArea.X1=0;
			break;
		case KEY_SHIFTEND:   case KEY_SHIFTNUMPAD1:
			GArea.CurX=GArea.X1=ScrX;
			break;
		case KEY_SHIFTPGUP:  case KEY_SHIFTNUMPAD9:
			GArea.CurY=GArea.Y1=0;
			break;
		case KEY_SHIFTPGDN:  case KEY_SHIFTNUMPAD3:
			GArea.CurY=GArea.Y1=ScrY;
			break;

		case KEY_ALTSHIFTHOME:  case KEY_ALTSHIFTNUMPAD7:
		case KEY_RALTSHIFTHOME: case KEY_RALTSHIFTNUMPAD7:
			GArea.X2=0;
			break;
		case KEY_ALTSHIFTEND:   case KEY_ALTSHIFTNUMPAD1:
		case KEY_RALTSHIFTEND:  case KEY_RALTSHIFTNUMPAD1:
			GArea.X2=ScrX;
			break;
		case KEY_ALTSHIFTPGUP:  case KEY_ALTSHIFTNUMPAD9:
		case KEY_RALTSHIFTPGUP: case KEY_RALTSHIFTNUMPAD9:
			GArea.Y2=0;
			break;
		case KEY_ALTSHIFTPGDN:  case KEY_ALTSHIFTNUMPAD3:
		case KEY_RALTSHIFTPGDN: case KEY_RALTSHIFTNUMPAD3:
			GArea.Y2=ScrY;
			break;

		case KEY_ALTSHIFTLEFT:  case KEY_ALTSHIFTNUMPAD4:
		case KEY_RALTSHIFTLEFT: case KEY_RALTSHIFTNUMPAD4:
			if (GArea.X2>0)
				GArea.X2--;
			break;
		case KEY_ALTSHIFTRIGHT:  case KEY_ALTSHIFTNUMPAD6:
		case KEY_RALTSHIFTRIGHT: case KEY_RALTSHIFTNUMPAD6:
			if (GArea.X2<ScrX)
				GArea.X2++;
			break;
		case KEY_ALTSHIFTUP:    case KEY_ALTSHIFTNUMPAD8:
		case KEY_RALTSHIFTUP:   case KEY_RALTSHIFTNUMPAD8:
			if (GArea.Y2>0)
				GArea.Y2--;
			break;
		case KEY_ALTSHIFTDOWN:  case KEY_ALTSHIFTNUMPAD2:
		case KEY_RALTSHIFTDOWN: case KEY_RALTSHIFTNUMPAD2:
			if (GArea.Y2<ScrY)
				GArea.Y2++;
			break;

		case KEY_CTRLA:
		case KEY_RCTRLA:
			GArea.X1=GArea.CurX=ScrX;
			GArea.X2=0;
			GArea.Y1=GArea.CurY=ScrY;
			GArea.Y2=0;
			break;

		case KEY_ALTLEFT:
		case KEY_RALTLEFT:
			if ((GArea.X1>0) && (GArea.X2>0))
			{
				GArea.X1--;
				GArea.X2--;
				GArea.CurX=GArea.X1;
				GArea.CurY=GArea.Y1;
			}
			break;
		case KEY_ALTRIGHT:
		case KEY_RALTRIGHT:
			if ((GArea.X1<ScrX) && (GArea.X2<ScrX))
			{
				GArea.X1++;
				GArea.X2++;
				GArea.CurX=GArea.X1;
				GArea.CurY=GArea.Y1;
			}
			break;
		case KEY_ALTUP:
		case KEY_RALTUP:
			if ((GArea.Y1>0) && (GArea.Y2>0))
			{
				GArea.Y1--;
				GArea.Y2--;
				GArea.CurX=GArea.X1;
				GArea.CurY=GArea.Y1;
			}
			break;
		case KEY_ALTDOWN:
		case KEY_RALTDOWN:
			if ((GArea.Y1<ScrY) && (GArea.Y2<ScrY))
			{
				GArea.Y1++;
				GArea.Y2++;
				GArea.CurX=GArea.X1;
				GArea.CurY=GArea.Y1;
			}
			break;

		case KEY_ALTHOME:
		case KEY_RALTHOME:
			GArea.X1=GArea.CurX=abs(GArea.X1-GArea.X2);
			GArea.X2=0;
			break;
		case KEY_ALTEND:
		case KEY_RALTEND:
			GArea.X2=ScrX-abs(GArea.X1-GArea.X2);
			GArea.X1=GArea.CurX=ScrX;
			break;
		case KEY_ALTPGUP:
		case KEY_RALTPGUP:
			GArea.Y1=GArea.CurY=abs(GArea.Y1-GArea.Y2);
			GArea.Y2=0;
			break;
		case KEY_ALTPGDN:
		case KEY_RALTPGDN:
			GArea.Y2=ScrY-abs(GArea.Y1-GArea.Y2);
			GArea.Y1=GArea.CurY=ScrY;
			break;

	}

	DisplayObject();
	return TRUE;
}
Esempio n. 12
0
int FileViewer::ProcessKey(int Key)
{
	if (RedrawTitle && (((unsigned int)Key & 0x00ffffff) < KEY_END_FKEY || IsInternalKeyReal((unsigned int)Key & 0x00ffffff)))
		ShowConsoleTitle();

	if (Key!=KEY_F3 && Key!=KEY_IDLE)
		F3KeyOnly=false;

	switch (Key)
	{
#if 0
			/* $ 30.05.2003 SVS
			   Фича :-) Shift-F4 в редакторе/вьювере позволяет открывать другой редактор/вьювер
			   Пока закомментим
			*/
		case KEY_SHIFTF4:
		{
			if (!Opt.OnlyEditorViewerUsed)
				CtrlObject->Cp()->ActivePanel->ProcessKey(Key);

			return TRUE;
		}
#endif
		/* $ 22.07.2000 tran
		   + выход по ctrl-f10 с установкой курсора на файл */
		case KEY_CTRLF10:
		case KEY_RCTRLF10:
		{
			if (View.isTemporary())
			{
				return TRUE;
			}

			SaveScreen Sc;
			string strFileName;
			View.GetFileName(strFileName);
			CtrlObject->Cp()->GoToFile(strFileName);
			RedrawTitle = TRUE;
			return (TRUE);
		}
		// $ 15.07.2000 tran + CtrlB switch KeyBar
		case KEY_CTRLB:
		case KEY_RCTRLB:
			Opt.ViOpt.ShowKeyBar=!Opt.ViOpt.ShowKeyBar;

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();
			else
				ViewKeyBar.Hide0(); // 0 mean - Don't purge saved screen

			Show();
			KeyBarVisible = Opt.ViOpt.ShowKeyBar;
			return (TRUE);
		case KEY_CTRLSHIFTB:
		case KEY_RCTRLSHIFTB:
		{
			Opt.ViOpt.ShowTitleBar=!Opt.ViOpt.ShowTitleBar;
			TitleBarVisible = Opt.ViOpt.ShowTitleBar;
			Show();
			return (TRUE);
		}
		case KEY_CTRLO:
		case KEY_RCTRLO:

			if (!Opt.OnlyEditorViewerUsed)
			{
				if (FrameManager->ShowBackground())
				{
					SetCursorType(FALSE,0);
					WaitKey();
					FrameManager->RefreshFrame();
				}
			}

			return TRUE;
		case KEY_F3:
		case KEY_NUMPAD5:  case KEY_SHIFTNUMPAD5:

			if (F3KeyOnly)
				return TRUE;

		case KEY_ESC:
		case KEY_F10:
			FrameManager->DeleteFrame();
			return TRUE;
		case KEY_F6:

			if (!DisableEdit)
			{
				UINT cp=View.VM.CodePage;
				string strViewFileName;
				View.GetFileName(strViewFileName);
				File Edit;
				while(!Edit.Open(strViewFileName, FILE_READ_DATA, FILE_SHARE_READ|(Opt.EdOpt.EditOpenedForWrite?FILE_SHARE_WRITE:0), nullptr, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN))
				{
					if(!OperationFailed(strViewFileName, MEditTitle, MSG(MEditCannotOpen), false))
						continue;
					else
						return TRUE;
				}
				Edit.Close();
				__int64 FilePos=View.GetFilePos();
				DWORD flags = (GetCanLoseFocus()?FFILEEDIT_ENABLEF6:0)|(SaveToSaveAs?FFILEEDIT_SAVETOSAVEAS:0)|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0);
				FileEditor *ShellEditor = new FileEditor(
					strViewFileName, cp, flags, -2,
					static_cast<int>(FilePos), // TODO: Editor StartChar should be __int64
					str_title.IsEmpty() ? nullptr: &str_title,
					-1,-1, -1, -1, delete_on_close );
				ShellEditor->SetEnableF6(TRUE);
				/* $ 07.05.2001 DJ сохраняем NamesList */
				ShellEditor->SetNamesList(View.GetNamesList());

				// Если переключаемся в редактор, то удалять файл уже не нужно
				SetTempViewName(L"");
				SetExitCode(0);

				FrameManager->DeleteFrame(this); // Insert уже есть внутри конструктора
				ShowTime(2);
			}

			return TRUE;

		case KEY_ALTSHIFTF9:
		case KEY_RALTSHIFTF9:
			// Работа с локальной копией ViewerOptions
			ViewerConfig(View.ViOpt, true);

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();

			View.Show();
			return TRUE;
		case KEY_ALTF11:
		case KEY_RALTF11:
			if (GetCanLoseFocus())
				CtrlObject->CmdLine->ShowViewEditHistory();

			return TRUE;
		default:
//      Этот кусок - на будущее (по аналогии с редактором :-)
//      if (CtrlObject->Macro.IsExecuting() || !View.ProcessViewerInput(&ReadRec))
		{
			/* $ 22.03.2001 SVS
			   Это помогло от залипания :-)
			*/
			if (!CtrlObject->Macro.IsExecuting())
				if (Opt.ViOpt.ShowKeyBar)
					ViewKeyBar.Show();

			if (!ViewKeyBar.ProcessKey(Key))
				return(View.ProcessKey(Key));
		}
		return TRUE;
	}
}
Esempio n. 13
0
 // ctor
 wxEventLoopImpl() { SetExitCode(0); m_keepGoing = false; }
Esempio n. 14
0
int FileViewer::ProcessKey(int Key)
{
	if (RedrawTitle && (((unsigned int)Key & 0x00ffffff) < KEY_END_FKEY || IS_INTERNAL_KEY_REAL((unsigned int)Key & 0x00ffffff)))
		ShowConsoleTitle();

	if (Key!=KEY_F3 && Key!=KEY_IDLE)
		F3KeyOnly=false;

	switch (Key)
	{
#if 0
			/* $ 30.05.2003 SVS
			   Фича :-) Shift-F4 в редакторе/вьювере позволяет открывать другой редактор/вьювер
			   Пока закомментим
			*/
		case KEY_SHIFTF4:
		{
			if (!Opt.OnlyEditorViewerUsed)
				CtrlObject->Cp()->ActivePanel->ProcessKey(Key);

			return TRUE;
		}
#endif
		/* $ 22.07.2000 tran
		   + выход по ctrl-f10 с установкой курсора на файл */
		case KEY_CTRLF10:
		{
			if (View.isTemporary())
			{
				return TRUE;
			}

			SaveScreen Sc;
			string strFileName;
			View.GetFileName(strFileName);
			CtrlObject->Cp()->GoToFile(strFileName);
			RedrawTitle = TRUE;
			return (TRUE);
		}
		// $ 15.07.2000 tran + CtrlB switch KeyBar
		case KEY_CTRLB:
			Opt.ViOpt.ShowKeyBar=!Opt.ViOpt.ShowKeyBar;

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();
			else
				ViewKeyBar.Hide0(); // 0 mean - Don't purge saved screen

			Show();
			KeyBarVisible = Opt.ViOpt.ShowKeyBar;
			return (TRUE);
		case KEY_CTRLSHIFTB:
		{
			Opt.ViOpt.ShowTitleBar=!Opt.ViOpt.ShowTitleBar;
			TitleBarVisible = Opt.ViOpt.ShowTitleBar;
			Show();
			return (TRUE);
		}
		case KEY_CTRLO:

			if (!Opt.OnlyEditorViewerUsed)
			{
				if (FrameManager->ShowBackground())
				{
					SetCursorType(FALSE,0);
					WaitKey();
					FrameManager->RefreshFrame();
				}
			}

			return TRUE;
		case KEY_F3:
		case KEY_NUMPAD5:  case KEY_SHIFTNUMPAD5:

			if (F3KeyOnly)
				return TRUE;

		case KEY_ESC:
		case KEY_F10:
			FrameManager->DeleteFrame();
			return TRUE;
		case KEY_F6:

			if (!DisableEdit)
			{
				UINT cp=View.VM.CodePage;
				string strViewFileName;
				View.GetFileName(strViewFileName);
				File Edit;
				if(!Edit.Open(strViewFileName, GENERIC_READ, FILE_SHARE_READ|(Opt.EdOpt.EditOpenedForWrite?FILE_SHARE_WRITE:0), nullptr, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN))
				{
					Message(MSG_WARNING|MSG_ERRORTYPE,1,MSG(MEditTitle),MSG(MEditCannotOpen),strViewFileName,MSG(MOk));
					return TRUE;
				}
				Edit.Close();
				// Если переключаемся в редактор, то удалять файл уже не нужно
				SetTempViewName(L"");
				SetExitCode(0);
				__int64 FilePos=View.GetFilePos();
				/* $ 07.07.2006 IS
				   Тут косяк, замеченный при чтении warnings - FilePos теряет информацию при преобразовании __int64 -> int
				   Надо бы поправить FileEditor на этот счет.
				*/
				FileEditor *ShellEditor = new FileEditor(strViewFileName, cp,
				        (GetCanLoseFocus()?FFILEEDIT_ENABLEF6:0)|(SaveToSaveAs?FFILEEDIT_SAVETOSAVEAS:0)|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0),-2, static_cast<int>(FilePos), nullptr);
				ShellEditor->SetEnableF6(TRUE);
				/* $ 07.05.2001 DJ сохраняем NamesList */
				ShellEditor->SetNamesList(View.GetNamesList());
				FrameManager->DeleteFrame(this); // Insert уже есть внутри конструктора
				ShowTime(2);
			}

			return TRUE;
			// Печать файла с использованием плагина PrintMan
		case KEY_ALTF5:
		{
			if (Opt.UsePrintManager && CtrlObject->Plugins.FindPlugin(SYSID_PRINTMANAGER))
				CtrlObject->Plugins.CallPlugin(SYSID_PRINTMANAGER,OPEN_VIEWER,0); // printman

			return TRUE;
		}
		case KEY_ALTSHIFTF9:
			// Работа с локальной копией ViewerOptions
			ViewerOptions ViOpt;
			ViOpt.TabSize=View.GetTabSize();
			ViOpt.AutoDetectCodePage=View.GetAutoDetectCodePage();
			ViOpt.ShowScrollbar=View.GetShowScrollbar();
			ViOpt.ShowArrows=View.GetShowArrows();
			ViOpt.PersistentBlocks=View.GetPersistentBlocks();
			ViewerConfig(ViOpt,true);
			View.SetTabSize(ViOpt.TabSize);
			View.SetAutoDetectCodePage(ViOpt.AutoDetectCodePage);
			View.SetShowScrollbar(ViOpt.ShowScrollbar);
			View.SetShowArrows(ViOpt.ShowArrows);
			View.SetPersistentBlocks(ViOpt.PersistentBlocks);

			if (Opt.ViOpt.ShowKeyBar)
				ViewKeyBar.Show();

			View.Show();
			return TRUE;
		case KEY_ALTF11:

			if (GetCanLoseFocus())
				CtrlObject->CmdLine->ShowViewEditHistory();

			return TRUE;
		default:
//      Этот кусок - на будущее (по аналогии с редактором :-)
//      if (CtrlObject->Macro.IsExecuting() || !View.ProcessViewerInput(&ReadRec))
		{
			/* $ 22.03.2001 SVS
			   Это помогло от залипания :-)
			*/
			if (!CtrlObject->Macro.IsExecuting())
				if (Opt.ViOpt.ShowKeyBar)
					ViewKeyBar.Show();

			if (!ViewKeyBar.ProcessKey(Key))
				return(View.ProcessKey(Key));
		}
		return TRUE;
	}
}
Esempio n. 15
0
void SimpleModal::Close(int Code)
{
	SetExitCode(Code);
	Hide();
	Global->WindowManager->DeleteWindow(shared_from_this());
}
Esempio n. 16
0
int PrefetchChannelDtor(struct ChannelDesc *channel)
{
  char url[BIG_ENOUGH_STRING];  /* debug purposes only */

  assert(channel != NULL);
  assert(channel->socket != NULL);

  /* log parameters and channel internals */
  MakeURL(url, BIG_ENOUGH_STRING, channel, GetChannelConnectionInfo(channel));
  ZLOGS(LOG_DEBUG, "%s has url %s", channel->alias, url);

  /* close "PUT" channel */
  if(channel->limits[PutsLimit] && channel->limits[PutSizeLimit])
  {
    int size = CHANNELS_ETAG_ENABLED ? TAG_DIGEST_SIZE - 1 : 0;

    /* prepare digest */
    if(TagEngineEnabled())
    {
      TagDigest(channel->tag, channel->digest);
      TagDtor(channel->tag);
    }

    /* send eof */
    channel->eof = 1;
    SendMessage(channel, channel->digest, size);
    ZLOGS(LOG_DEBUG, "%s closed with tag %s, putsize %ld",
        channel->alias, channel->digest, channel->counters[PutSizeLimit]);
  }

  /* close "GET" channel */
  if(channel->limits[GetsLimit] && channel->limits[GetSizeLimit])
  {
    /* wind the channel to the end */
    while(channel->eof == 0)
    {
      char buf[NET_BUFFER_SIZE];
      int32_t size = FetchMessage(channel, buf, NET_BUFFER_SIZE);
      ++channel->counters[GetsLimit];
      channel->counters[GetSizeLimit] += size;

      /* update tag if enabled */
      if(TagEngineEnabled())
        TagUpdate(channel->tag, buf, size);
    }

    /* test integrity (if etag enabled) */
    if(TagEngineEnabled())
    {
      /* prepare digest */
      TagDigest(channel->tag, channel->digest);
      TagDtor(channel->tag);

      /* raise the error if the data corrupted */
      if(memcmp(channel->control, channel->digest, TAG_DIGEST_SIZE) != 0)
      {
        ZLOG(LOG_ERROR, "%s corrupted, control: %s, local: %s",
            channel->alias, channel->control, channel->digest);
        SetExitState("data corrupted");
        SetExitCode(EPIPE);
      }

      ZLOGS(LOG_DEBUG, "%s closed with tag %s, getsize %ld",
          channel->alias, channel->digest, channel->counters[GetSizeLimit]);
    }

    zmq_msg_close(&channel->msg);
    zmq_close(channel->socket);
  }

  /* will destroy context and netlist after all network channels closed */
  NetDtor();

  return 0;
}
Esempio n. 17
0
 // ctor
 wxEventLoopImpl()
     {
         SetExitCode(0);
         SetKeepLooping(TRUE);
     }
Esempio n. 18
0
    virtual hUint32 RunUnitTest() override {
        if (doTest_)
        {
            hUint data1[201];
            hUint data2[200];
            hUint data3[199];
            hChar encode1[268*sizeof(hUint)];
            hChar encode2[267*sizeof(hUint)];
            hChar encode3[266*sizeof(hUint)];
            hUint decode1[201];
            hUint decode2[200];
            hUint decode3[199];
            hUint needdecodesize;
            hUint needencodesize;

            hcPrintf("%s Generating Data", __FUNCTION__);

            GenRandomNumbers(data1, (hUint)hStaticArraySize(data1));
            GenRandomNumbers(data2, (hUint)hStaticArraySize(data2));
            GenRandomNumbers(data3, (hUint)hStaticArraySize(data3));

            hcPrintf("%s Encoding Data", __FUNCTION__);

            needencodesize=Heart::hBase64::EncodeCalcRequiredSize(sizeof(data1));
            hcAssert(needencodesize==sizeof(encode1));
            Heart::hBase64::Encode(data1, sizeof(data1), encode1, needencodesize);

            needencodesize=Heart::hBase64::EncodeCalcRequiredSize(sizeof(data2));
            hcAssert(needencodesize==sizeof(encode2));
            Heart::hBase64::Encode(data2, sizeof(data2), encode2, needencodesize);

            needencodesize=Heart::hBase64::EncodeCalcRequiredSize(sizeof(data3));
            hcAssert(needencodesize==sizeof(encode3));
            Heart::hBase64::Encode(data3, sizeof(data3), encode3, needencodesize);

            hcPrintf("%s Decoding Data",__FUNCTION__);

            needdecodesize=Heart::hBase64::DecodeCalcRequiredSize(encode1, sizeof(encode1));
            hcAssert(needdecodesize==sizeof(decode1));
            Heart::hBase64::Decode(encode1, sizeof(encode1), decode1, sizeof(decode1));
            hcAssert(memcmp(data1, decode1, sizeof(decode1)) == 0);

            needdecodesize=Heart::hBase64::DecodeCalcRequiredSize(encode2, sizeof(encode2));
            hcAssert(needdecodesize==sizeof(decode2));
            Heart::hBase64::Decode(encode2, sizeof(encode2), decode2, sizeof(decode2));
            hcAssert(memcmp(data2, decode2, sizeof(decode2)) == 0);

            needdecodesize=Heart::hBase64::DecodeCalcRequiredSize(encode3, sizeof(encode3));
            hcAssert(needdecodesize==sizeof(decode3));
            Heart::hBase64::Decode(encode3, sizeof(encode3), decode3, sizeof(decode3));
            hcAssert(memcmp(data3, decode3, sizeof(decode3)) == 0);

            hcPrintf("%s Test Complete",__FUNCTION__);

            doTest_=hFalse;
        }

        {
            SetExitCode(UNIT_TEST_EXIT_CODE_OK);
        }

        return 0;
    }
Esempio n. 19
0
	void CServerHandshake::Run()
	{
		VERIFY(AfxSocketInit());

		CSocket socket; // führen Handshake innerhalb des Threads synchron aus
		socket.Attach(m_hSocket);

		clock_t end = clock() + HANDSHAKE_TIMEOUT * CLOCKS_PER_SEC;

		// (1.) auf eingehenden Identifizierungs-String (HANDSHAKE_CLIENTID) + Versionsnummer
		// vom Client warten
		UINT nCount = strlen(HANDSHAKE_CLIENTID) + 1 + sizeof(UINT) + 1;
		if (!RequestData(socket, nCount, end))
		{
			DEBUG_MSG("client timed out, disconnected");
			SetExitCode(1);
			return;
		}

		// Daten in Puffer übertragen
		BYTE *lpBuf = new BYTE[nCount];
		int nDone = socket.Receive(lpBuf, nCount);
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < nCount) goto error;

		// Pufferinhalt prüfen
		if (memcmp(lpBuf, HANDSHAKE_CLIENTID, strlen(HANDSHAKE_CLIENTID)) != 0
			|| lpBuf[strlen(HANDSHAKE_CLIENTID)] != 0
			|| lpBuf[nCount - 1] != 0)
		{
			DEBUG_MSG("client is not a BotE client, disconnected");
			delete[] lpBuf;
			SetExitCode(1);
			return;
		}

		// Puffer erfolgreich geprüft, Versionsnummer extrahieren
		UINT nClientVersion;
		memcpy(&nClientVersion, lpBuf + (strlen(HANDSHAKE_CLIENTID) + 1), sizeof(UINT));
		TRACE("server: client has version %u\n", nClientVersion);
		delete[] lpBuf;
		lpBuf = NULL;

		// abbrechen, wenn andere Versionsnummer
		if (nClientVersion != m_nServerVersion)
		{
			DEBUG_MSG("client has incompatible version, disconnected");
			SetExitCode(1);
			return;
		}

		// (2.) Server-Identifizierung + Versionsnummer senden
		nDone = socket.Send(HANDSHAKE_SERVERID, strlen(HANDSHAKE_SERVERID));
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < strlen(HANDSHAKE_SERVERID)) goto error;

		lpBuf = new BYTE[nCount = 1 + sizeof(UINT) + 1];
		lpBuf[0] = lpBuf[nCount - 1] = 0;
		memcpy(&lpBuf[1], &m_nServerVersion, sizeof(UINT));

		nDone = socket.Send(lpBuf, nCount);
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < nCount) goto error;

		delete[] lpBuf;
		lpBuf = NULL;

		// (3.a) Bestätigung vom Client abwarten
		int nLen = 3 + sizeof(UINT);
		if (!RequestData(socket, nLen, end))
		{
			DEBUG_MSG("client timed out, disconnected");
			SetExitCode(1);
			return;
		}

		// Bestätigung prüfen
		lpBuf = new BYTE[3];
		nDone = socket.Receive(lpBuf, 3);
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < 3) goto error;

		if (memcmp(lpBuf, "OK\0", 3) != 0)
		{
			DEBUG_MSG("client did not confirm, disconnected");
			delete[] lpBuf;
			SetExitCode(1);
			return;
		}

		delete[] lpBuf;

		// Länge des Benutzernamens ermitteln
		lpBuf = new BYTE[sizeof(UINT)];
		nDone = socket.Receive(lpBuf, sizeof(UINT));
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < sizeof(UINT)) goto error;

		UINT nStrLen = 0;
		memcpy(&nStrLen, lpBuf, sizeof(UINT));

		delete[] lpBuf;

		// (3.b) Benutzername empfangen
		if (!RequestData(socket, nStrLen, end))
		{
			DEBUG_MSG("client timed out, disconnected");
			SetExitCode(1);
			return;
		}

		// Benutzername lesen
		lpBuf = new BYTE[nStrLen + 1];
		nDone = socket.Receive(lpBuf, nStrLen);
		if (nDone == SOCKET_ERROR) goto sockerror;
		else if (nDone < nStrLen) goto error;

		{
			lpBuf[nStrLen] = 0;
			CString strUserName((char *)lpBuf);
			strUserName.Trim();

			// dem Server einen neuen Client melden; verwenden kleinere Versionsnummer zur
			// Kommunikation
			server.OnNewClient(socket.Detach(), min(m_nServerVersion, nClientVersion), strUserName);
		}

		delete[] lpBuf;
		return;

	sockerror:
		server.OnSocketError(socket.GetLastError());
	error:
		if (lpBuf) delete[] lpBuf;
		SetExitCode(1);
	}
Esempio n. 20
0
 // ctor
 wxEventLoopImpl()
     {
         SetExitCode(0);
         SetKeepLooping(true);
     }
Esempio n. 21
0
 // ctor
 wxEventLoopImpl() { SetExitCode(0); }
Esempio n. 22
0
int FolderTree::ProcessKey(const Manager::Key& Key)
{
	int LocalKey=Key.FarKey();
	if (LocalKey>=KEY_ALT_BASE+0x01 && LocalKey<=KEY_ALT_BASE+65535)
		LocalKey=ToLower(LocalKey-KEY_ALT_BASE);
	else if (LocalKey>=KEY_RALT_BASE+0x01 && LocalKey<=KEY_RALT_BASE+65535)
		LocalKey=ToLower(LocalKey-KEY_RALT_BASE);

	switch (LocalKey)
	{
		case KEY_F1:
		{
			Help::create(L"FindFolder");
		}
		break;
		case KEY_ESC:
		case KEY_F10:
			Global->WindowManager->DeleteWindow();
			SetExitCode(XC_MODIFIED);
			break;
		case KEY_NUMENTER:
		case KEY_ENTER:
			strNewFolder = Tree->GetCurDir();

			if (os::fs::exists(strNewFolder))
			{
				Global->WindowManager->DeleteWindow();
				SetExitCode(XC_MODIFIED);
			}
			else
			{
				Tree->ProcessKey(Manager::Key(KEY_ENTER));
				DrawEdit();
			}

			break;
		case KEY_F5:
			IsFullScreen=!IsFullScreen;
			ResizeConsole();
			Show();
			return TRUE;
		case KEY_CTRLR:		case KEY_RCTRLR:
		case KEY_F2:
			Tree->ProcessKey(Manager::Key(KEY_CTRLR));
			DrawEdit();
			break;
		case KEY_CTRLNUMENTER:       case KEY_RCTRLNUMENTER:
		case KEY_CTRLSHIFTNUMENTER:  case KEY_RCTRLSHIFTNUMENTER:
		case KEY_CTRLENTER:          case KEY_RCTRLENTER:
		case KEY_CTRLSHIFTENTER:     case KEY_RCTRLSHIFTENTER:
		{
			string strName;
			FindEdit->GetString(strName);
			Tree->FindPartName(strName, TRUE, LocalKey == KEY_CTRLSHIFTENTER || LocalKey == KEY_RCTRLSHIFTENTER || LocalKey == KEY_CTRLSHIFTNUMENTER || LocalKey == KEY_RCTRLSHIFTNUMENTER? -1 : 1);
			DrawEdit();
		}
		break;
		case KEY_UP:
		case KEY_NUMPAD8:
		case KEY_DOWN:
		case KEY_NUMPAD2:
		case KEY_PGUP:
		case KEY_NUMPAD9:
		case KEY_PGDN:
		case KEY_NUMPAD3:
		case KEY_HOME:
		case KEY_NUMPAD7:
		case KEY_END:
		case KEY_NUMPAD1:
		case KEY_MSWHEEL_UP:
		case(KEY_MSWHEEL_UP | KEY_ALT):
		case(KEY_MSWHEEL_UP | KEY_RALT):
		case KEY_MSWHEEL_DOWN:
		case(KEY_MSWHEEL_DOWN | KEY_ALT):
		case(KEY_MSWHEEL_DOWN | KEY_RALT):
			FindEdit->SetString(L"");
			Tree->ProcessKey(Key);
			DrawEdit();
			break;
		default:

			if (LocalKey == KEY_ADD || LocalKey == KEY_SUBTRACT) // OFM: Gray+/Gray- navigation
			{
				Tree->ProcessKey(Key);
				DrawEdit();
				break;
			}

			/*
			      else
			      {
			        if((Key&(~KEY_CTRLMASK)) == KEY_ADD)
			          Key='+';
			        else if((Key&(~KEY_CTRLMASK)) == KEY_SUBTRACT)
			          Key='-';
			      }
			*/
			if (FindEdit->ProcessKey(Key))
			{
				string strName;
				FindEdit->GetString(strName);

				if (Tree->FindPartName(strName, FALSE, 1))
					strLastName = strName;
				else
				{
					FindEdit->SetString(strLastName.data());
					strName = strLastName;
				}

				DrawEdit();
			}

			break;
	}

	return TRUE;
}