Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ToolsApi. Узнать проект сохранен после создания или еще нет / 14 сообщений из 14, страница 1 из 1
06.02.2019, 12:02
    #39770071
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Добрый день.
Можно узнать через ToolsAPI сохранен ли проект?
Например у меня есть экземпляр IOTAProject.
Когда через Wizard создается новый проект, его еще нет в файловой системе. И IDE предлагает его сохранить.
Я хочу узнать, проект уже имеет эти файлы в файловой системе или еще нет?

Цель: Сделать действие только когда проект имеет сохраненный dproj+dpr файл, иначе уведомить о необходимости сохранения.

IOTAProject.FileName - возвращает полный путь к файлу, даже если он не сохранен.
На вскидку решение просто проверять наличие этого файла. Если его нет - то проект новый.
Но это как-то через одно место. Может есть какой-то признак?
...
Рейтинг: 0 / 0
06.02.2019, 12:13
    #39770078
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
X-Citeвозвращает полный путь к файлу, даже если он не сохранен.Вот и проверь, есть ли этот файл
...
Рейтинг: 0 / 0
06.02.2019, 12:17
    #39770084
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Найти Action Save и проверить Enabled
...
Рейтинг: 0 / 0
06.02.2019, 12:29
    #39770090
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
авторВот и проверь, есть ли этот файл
Это же я предложил, но может есть более цивильный способ. Вдруг там лежит этот файл но не относится к проекту, совпало просто.
авторНайти Action Save и проверить Enabled
Нет ничего такого
...
Рейтинг: 0 / 0
06.02.2019, 12:32
    #39770092
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
X-CiteНет ничего такого
Меню-то есть. Обычное TMainMenu.
...
Рейтинг: 0 / 0
06.02.2019, 12:38
    #39770098
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
wadmanX-CiteНет ничего такого
Меню-то есть. Обычное TMainMenu.
Такой же через одно место вариант, к тому же AddIn у меня в DLL, а не BPL.
...
Рейтинг: 0 / 0
06.02.2019, 12:49
    #39770107
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Например у меня есть экземпляр IOTAProject.
Значит есть и BorlandIDEServices и INTAServices.ActionList
...
Рейтинг: 0 / 0
06.02.2019, 13:02
    #39770114
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  IOTAProjectFileStorageNotifier = interface(IInterface)
    ['{D6B7B13F-F5EA-4320-BDCE-55236638BDE2}']
    { This function will return the name of your node in the project file. }
    function GetName: string;
    { Called when a project is loaded and there is a node that matches the
      result of GetName.  You may keep a reference to Node and edit the contents
      but you must free the reference when ProjectClosing is called. }
    procedure ProjectLoaded(const ProjectOrGroup: IOTAModule; const Node: IXMLNode);
    procedure CreatingProject(const ProjectOrGroup: IOTAModule);
   procedure ProjectSaving(const ProjectOrGroup: IOTAModule; const Node: IXMLNode);
    procedure ProjectClosing(const ProjectOrGroup: IOTAModule);
    property Name: string read GetName;
  end;
...
Рейтинг: 0 / 0
06.02.2019, 15:34
    #39770226
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
X-CiteВдруг там лежит этот файл но не относится к проекту, совпало просто.Не совпадет. При наличии файла с существующим именем IDE создаст другие модули
...
Рейтинг: 0 / 0
06.02.2019, 16:49
    #39770289
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
_Vasilisk_X-CiteВдруг там лежит этот файл но не относится к проекту, совпало просто.Не совпадет. При наличии файла с существующим именем IDE создаст другие модули
Можно создать проект, потом подложить файл.
...
Рейтинг: 0 / 0
06.02.2019, 17:55
    #39770334
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
X-CiteМожно создать проект, потом подложить файл.И IDE попросит его перезагрузить.

А еще можно открыть проект и час его редактировать не сохраняя.

Нельзя работая с проектом втихую лезть к его файлам
...
Рейтинг: 0 / 0
06.02.2019, 20:31
    #39770414
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Вообще на самом деле суть другая.
Надо по клику в меню добавить в проект файлы с собственным расширением, например Config.xml

Если добавить через CreateModule не указывая имени файла, он создает по умолчанию Unit1.pas и т.д. и добавляет в проект, хотя явно выставлен sText = 'Text'; // Raw single file module with no skeleton code

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

Если задать полный путь с именем, то все ок.

Но, если проект только создан и не сохранен, то странно задавать путь, т.к. неизвестно куда сохранится потом проект.

Поэтому решения два:
1) Если проект не сохранен физически - не разрешить добавление файла.
2) Добавить файл в проект с моим именем, но без физического размещения и так, чтобы он был виден в проекте, и соответственно потом сохранился при сохранении проекта.

Вариант 2 предпочтительнее. Но непонятно пока что, где указать.
...
Рейтинг: 0 / 0
06.02.2019, 21:56
    #39770437
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Код: pascal
1.
2.
3.
4.
procedure ProjectSaving(const ProjectOrGroup: IOTAModule; const Node: IXMLNode)
This method is called when the project is being saved so you can save your custom XML information. 
ProjectOrGroup is the IOTAModule interface to the project or group being loaded and Node is a 
reference to the XML code in the project / group file.



Код: pascal
1.
2.
3.
Этот метод вызывается при сохранении проекта, чтобы вы могли сохранить свою пользовательскую 
информацию XML. ProjectOrGroup - это интерфейс IOTAModule для загружаемого проекта или группы,
а Node - это ссылка на код XML в файле проекта / группы.
...
Рейтинг: 0 / 0
07.02.2019, 22:51
    #39770864
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ToolsApi. Узнать проект сохранен после создания или еще нет
Разобрался.
Оказывается в IOTAModuleCreator.GetImplFileName если указать полное имя файла, то это не значит что он его физически создаст.
В совокупности с
GetCreatorType = sText
GetExisting = False
GetUnnamed = True
Создается нужный файл и он физически нигде не расположен и IDE предлагает его сохранить.
А я то думал что задавая полный путь к файлу в GetImplFileName она его создаст сама.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ToolsApi. Узнать проект сохранен после создания или еще нет / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]