Project Templates/ru

From Lazarus wiki
Jump to navigationJump to search

Template:MenuTranslate

Обзор

Вы можете приспособиться при создании новых проектов. Среда IDE позволяет регистрировать собственные типы проектов с помощью пакетов designtime. Пакет projtemplates ( он предварительно установлен в обычных бинарных пакетах Lazarus) позволяет просто использовать существующие проекты в качестве шаблонов.

Пакет projtemplates

Этот пакет реализует шаблоны проектов и поставляется с исходными кодами lazarus (components/projecttemplates/projtemplates.lpk).

Пакет поставляется с предустановленными бинарными пакетами Lazarus (например, установщик Windows). Этот пакет добавляет категорию в диалог File-New: Template projects

Он также добавляет пункт меню New project from Template в меню File, а также меню project template options в разделе Tools [общего] меню. Этот пункт меню отображается только в том случае, если каталог шаблонов (см. следующий абзац) существует и содержит хотя бы один подкаталог шаблонов.

В [разделе] Project template options можно выбрать каталог. Этот каталог должен содержать подкаталог для каждого шаблона. Каждый каталог шаблонов содержит шаблон для проекта: набор файлов, которые будут скопированы и использованы в качестве нового проекта.

Во время копирования пакет будет сканировать имена файлов/каталогов и содержимое файлов для подстановки переменных: __VARNAME__ будет заменено значением переменной VARNAME

По умолчанию движок знает о 2 переменных:

  • ProjDir: Каталог, в котором будет создан новый проект.
  • ProjName: Название проекта.

Дополнительные переменные должны быть определены в файле с именем project.ini в каталоге проекта. Это - файл в формате Windows INI.

Раздел [Variables] будет сканироваться на предмет имен переменных:

[Variables]
VarName1=Description 1
VarName2=Description 2

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

Файл project.ini может содержать второй раздел, называемый Project, который может содержать некоторую информацию о проекте. Здесь можно найти следующие ключевые слова:

ProjectFile

Любой файл с именем, равным этому (без расширения), обрабатывается специально, он переименовывается в имя проекта. То есть, вот это ProjectFile=example заменит example.lpi, example.lpr и example.cfg на имя, данное пользователем. По умолчанию предполагается, что значением ProjectFile является project (обратите внимание, что файл .ini не копируется)

Name

Название шаблона. Имя и описание будут представлены в диалоге 'File-New'.

Author

Автор шаблона

Description

Краткое (однострочное) описание проекта. Имя и описание будут представлены в диалоге 'File-New'.

Recurse

Логическое значение (1/0), которое указывает движку [осуществлять] рекурсивный [поиск] в подкаталогах или нет.

Exclude

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

Как начать

Шаг 1;

Создайте свой собственный каталог шаблонов (например, ~ /.lazarus/mytemplates) и установите этот путь в Lazarus (меню: Tools -> Project Template Options).

Шаг 2:

Чтобы любые шаблонные функции появились в меню File Lazarus'а, вам понадобится как минимум один шаблон, который вы можете использовать в своем существующем (обычном) проекте;

- Создайте каталог в вашем каталоге шаблонов (например, ~/.lazarus/mytemplates/myfirsttemplate)

- Скопируйте файлы вашего проекта в этот новый каталог (*.lfm, *.pas, *.ico, *.lpi, *.lpr, *.res)

Шаг 3:

Создайте файл project.ini в новом каталоге шаблонов.

Минимум, [файл] должен выглядеть примерно так:

project.ini:

[Variables]

[Project] 
Name=My Form Template

Необязательно:

Приятной особенностью Project Templates является то, что они поддерживают переменные. Так как проект, вероятно, не будет называться так же, как ваш пример шаблона, вам придется внести некоторые изменения в код и переименовать файл.

Files: Rename the project file (ico, lpi, lpr, res) to __PROJNAME__.ext (where extension is the original extension of course). For example: project.lpi becomes __PROJNAME__.lpi. Note: the content of the lpi file might need some cleaning, for example removing history, reference to files, not sure if the lpi file is even needed.

File content: For all files that referred to project.lpi etc, change the content of your files so all "project" references become "__PROJNAME__" (with the quotes).

You can optionally define your own variables, for example to give the "unit.pas" a different filename. You could define for example __MAINUNIT__ and __MAINFORM__ in project.ini as MAINUNIT and MAINFORM - during creation Lazarus will ask you for these names. Now every occurrence of __MAINUNIT__, for example, will be replaced with the text you provided (avoid special characters and spaces).

Note that this works for all variables; Every occurrence of a variable in filenames and file content will be replaced by what you entered on creation of a new project based on your template. Predefined variables are PROJNAME and PROJDIR but I didn't find a purpose for PROJDIR just yet.

Some examples:

project.ini

 [Variables] 
 MAINUNIT=Filename for the default unit.pas file
 MAINFORM=Form name
 
 [Project]
 Name=My Custom Form
 Author=Hansaplast
 Description=Lazarus LCL form specifically for my needs

__PROJNAME__.lpr:

 program __PROJNAME__;
 
 {$mode objfpc}{$H+}
   
 uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, __MAINUNIT__; 
   
 {$R *.res}
   
 begin
  Application.Initialize;
  Application.CreateForm(T__MAINFORM__, __MAINFORM__);
  Application.Run;
 end.

__MAINUNIT__.pas:

 unit __MAINUNIT__;
    
 {$mode objfpc}{$H+}
   
 interface
   
 uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Buttons, StdCtrls, LCLIntf, LCLType, ComCtrls;
   
 type
   
  { __MAINFORM__ }
   
  T__MAINFORM__ = class(TForm)
   
 ...
   
 procedure T__MAINFORM__.FormPaint(Sender: TObject);
 ...
   
 //etc


__MAINUNIT__.lfm:

 object __MAINFORM__: T__MAINFORM__
 ...

Keep in mind that this brief tutorial is just to get you started, the variable replacement mechanism offered can be utilized for many different purposes. For example to define a form caption, a copyright statement, a web link on your forms, specific objects, etc. --Hansaplast 16:30, 4 August 2012 (UTC)