Пример #1
0
void FarPlugin::OpenPlugin(const struct OpenInfo *OInfo)
{
	int command = -1;

	if (OInfo->OpenFrom == OPEN_FROMMACRO) {
		OpenMacroInfo *macroInfo = (OpenMacroInfo*)OInfo->Data;
		if (macroInfo->Count >= 1) {
			FarMacroValue &v = macroInfo->Values[0];
			if (v.Type == FMVT_DOUBLE) {
				command = v.Double;
			};
		};
	} 
	if (command == -1) {
		FarMenu menu;
		menu.SetFlags(FMENU_WRAPMODE);
		menu.SetTitle(LOC("PluginName"));
		menu.SetHelpTopic("Menu");
		menu.AddLine(LOC("Menu.CopyFiles"));
		menu.AddLine(LOC("Menu.MoveFiles"));
		menu.AddLine(LOC("Menu.CopyFilesUnderCursor"));
		menu.AddLine(LOC("Menu.MoveFilesUnderCursor"));
		menu.AddSep();
		menu.AddLine(LOC("Menu.Config"));
		command = menu.Execute();
	}

	int move=0, curOnly=0;
	switch (command)
	{
		case 0: move = 0; curOnly = 0; break;
		case 1: move = 1; curOnly = 0; break;
		case 2: move = 0; curOnly = 1; break;
		case 3: move = 1; curOnly = 1; break;
		case 5: Config(); return; 
		default: return;
	}
	CallCopy(move, curOnly);
}
Пример #2
0
void FarPlugin::OpenPlugin(const struct OpenInfo * OInfo)
{
    intptr_t command = -1;

    if (OInfo->OpenFrom == OPEN_FROMMACRO)
    {
        OpenMacroInfo * macroInfo = reinterpret_cast<OpenMacroInfo *>(OInfo->Data);
        if (macroInfo->Count >= 1)
        {
            FarMacroValue & v = macroInfo->Values[0];
            if (v.Type == FMVT_DOUBLE)
            {
                command = static_cast<intptr_t>(v.Double);
            }
        }
    }
    if (command == -1)
    {
        bool repeat = true;
        size_t selectedMenuItem = 0;
        while (repeat)
        {
            FarMenu menu;
            menu.SetFlags(FMENU_WRAPMODE);
            menu.SetTitle(LOC(L"PluginName"));
            menu.SetHelpTopic(L"Menu");
            menu.AddLine(LOC(L"Menu.CopyFiles"));
            menu.AddLine(LOC(L"Menu.MoveFiles"));
            menu.AddLine(LOC(L"Menu.CopyFilesUnderCursor"));
            menu.AddLine(LOC(L"Menu.MoveFilesUnderCursor"));
            menu.AddSep();
            menu.AddLine(LOC(L"Menu.Config"));
            menu.SetSelection(selectedMenuItem);
            command = menu.Execute();

            bool move, curOnly;
            bool copy = true;
            switch (command)
            {
            case 0:
                move = false;
                curOnly = false;
                selectedMenuItem = 0;
                repeat = false;
                break;
            case 1:
                move = true;
                curOnly = false;
                selectedMenuItem = 1;
                repeat = false;
                break;
            case 2:
                move = false;
                curOnly = true;
                selectedMenuItem = 2;
                repeat = false;
                break;
            case 3:
                move = true;
                curOnly = true;
                selectedMenuItem = 3;
                repeat = false;
                break;
            case 5:
                Config();
                copy = false;
                selectedMenuItem = 5;
                repeat = true;
                break;
            default:
                return;
            }
            if (copy)
            {
                if (!CallCopy(move, curOnly))
                    repeat = true;
            }
        }
    }
    else
    {
        switch (command)
        {
        case 0:
            CallCopy(false, false);
            break;
        case 1:
            CallCopy(true, false);
            break;
        case 2:
            CallCopy(false, true);
            break;
        case 3:
            CallCopy(true, true);
            break;
        default:
            break;
        }
    }
}