NC 8055. Игнорирует флаги PreferCommandLine

возник вопрос:

для PromptOpenFileOptions и PromptSaveFileOptions игнорирование установленного в коде свойства PreferCommandLine это баг или фича?

например я хочу в командном режиме открыть окно выбора файла, а наник тупо предлагает ввести путь в ком строке.. несмотря на то что явно указано

PreferCommandLine=false;

или наоборот…


[internal censorship]

Оформлено как дефект #68376

1 лайк

Добрый день! Можете, пожалуйста, прикрепить пример Вашего кода

private string GetFileOpenDocProperties(string title = "Выберите файл для открытия")
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            PromptOpenFileOptions options = new PromptOpenFileOptions(title);
            options.Filter = "Файлы INI (*.ini)|*.ini|Файлы XML (*.xml)|*.xml";
            options.FilterIndex = 0;
            options.PreferCommandLine = IsCmdActive();
            options.InitialFileName =
                Path.GetFileNameWithoutExtension(Application.GetSystemVariable("dwgname").ToString());

            PromptFileNameResult fileNameResult = ed.GetFileNameForOpen(options);
            if (fileNameResult.Status == PromptStatus.OK)
            {
                return fileNameResult.StringResult;
            }

            return string.Empty;
        }
        internal bool IsCmdActive()
        {
            object cmdactive = Application.GetSystemVariable("CMDACTIVE");
            if ((int)cmdactive == 0)
            {
                //window
                return false;
            }
            else
            {
                //cmd
                return true;
            }
        }

но если жестко задать PreferCommandLine, true or false
независимо от флага, нанокад в зависисмости от CMDACTIVE, будет предлагать окно или ком строку, т.е. смысл PreferCommandLine теряется)

Несколько лет назад я просил именно о таком поведении((
но иногда надо независимо от CMDACTIVE всегда окно или всегда ком строку

PS в релизной сборке 26 не проверял

Добрый день!
Если задавать значение PreferCommandLine явно - файловый диалог будет работать ожидаемым способом (true - ком. строка, false - окно)
При этом переменная CMDACTIVE не влияет на работу файлового диалога, только если явно не присвоить её значение PreferCommandLine
Прикрепляю тестовый проект, для его сборки необходимо указать путь к папке bin нанокада в NcadBinPath внутри .csproj файла

PreferCommandLineTest.zip (1,7 КБ)

1 лайк

добавил метод

    [CommandMethod("PreferCommandLineNone")]
    public void CheckPreferCLNone()
    {
        Document doc = Application.DocumentManager.MdiActiveDocument;
        Editor ed = doc.Editor;
        PromptOpenFileOptions options = new PromptOpenFileOptions("Выберите файл для открытия");
        options.Filter = "Файлы INI (*.ini)|*.ini|Файлы XML (*.xml)|*.xml";
        options.FilterIndex = 0;
        //options.PreferCommandLine = preferCommandLine;
        options.InitialFileName =
            Path.GetFileNameWithoutExtension(Application.GetSystemVariable("dwgname").ToString());

        PromptFileNameResult fileNameResult = ed.GetFileNameForOpen(options);

        if (fileNameResult.Status == PromptStatus.OK)
        {
            ed.WriteMessage(fileNameResult.StringResult);
        }
    }

PreferCommandLineNone запросит путь в браузере файлов
(command "PreferCommandLineNone") запросит путь в ком строке

в нк 8103, 8429 ожидаемое поведение, как в оригинале


после починки:
программная установка свойства PreferCommandLine смысла не имеет
PreferCommandLineNone зависит от контекста вызова, команда или нет

независимо от флага
(command "PREFERCOMMANDLINEISFALSE") всегда будет запрос в ком строке
поведение аналогичное оригиналу, имха глуповато они сделали ((а мы повторили))

я к тому, что в командном режиме браузер файлов открыть невозможно

PreferCommandLineTest.zip (2,9 КБ)

1 лайк

Добрый день! Подскажите, пожалуйста, версию, начиная с которой поведение изменилось.

при всем моем уважении… тестить все версии в поисках отличий не буду, а учитывая, что от версии к версии поведение менялось это бесполезная затея.
Выше описал поведение в нк26, в принципе привели в соответствие с оригиналом, но

оставлять как есть или менять, на усмотрение нанодев, ни на чем не настаиваю.