Difference between revisions of "Project Templates/ru"

From Lazarus wiki
Jump to navigationJump to search
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{MenuTranslate| page=Project Templates}}
+
{{Project Templates}}
  
=Overview=
+
=Обзор=
  
You can adapt how to create new projects. The IDE allows to register your own project types via designtime packages. The package '''projtemplates''' (the normal lazarus binary packages have this preinstalled) allows to simply use existing projects as templates.
+
Вы можете приспособиться при создании новых проектов. Среда IDE позволяет регистрировать собственные типы проектов с помощью пакетов designtime. Пакет '''projtemplates''' ( он предварительно установлен в обычных бинарных пакетах Lazarus) позволяет просто использовать существующие проекты в качестве шаблонов.
  
=Package projtemplates=
+
=Пакет projtemplates=
  
This package implements project templates and comes with the lazarus sources (components/projecttemplates/projtemplates.lpk).
+
Этот пакет реализует шаблоны проектов и поставляется с исходными кодами lazarus (components/projecttemplates/projtemplates.lpk).
  
The package comes preinstalled with the binary packages of Lazarus (e.g. the windows installer). This package adds a category to the '''File-New''' dialog: '''Template projects'''
+
Пакет поставляется с предустановленными бинарными пакетами Lazarus (например, установщик Windows). Этот пакет добавляет категорию в диалог '''File-New''': '''Template projects'''
  
It also adds a '''New project from Template''' menu item to the '''File''' menu, as
+
Он также добавляет пункт меню '''New project from Template''' в меню '''File''', а также меню '''project template options''' в разделе '''Tools''' [общего] меню. Этот пункт меню отображается только в том случае, если каталог шаблонов (см. следующий абзац) существует и содержит хотя бы один подкаталог шаблонов.
well as a '''project template options''' menu under the '''Tools''' menu.
 
This menu item is visible only if the templates directory (see next paragraph)
 
exists and contains at least one template subdirectory.
 
  
In the ''Project template options'', a directory can be selected. This directory
+
В [разделе] ''Project template options'' можно выбрать каталог. Этот каталог должен содержать подкаталог для каждого шаблона. Каждый каталог шаблонов содержит шаблон для проекта: набор файлов, которые будут скопированы и использованы в качестве нового проекта.
should contain a subdirectory per template. Each template directory contains
 
a template for a project: A collection of files which will be copied and
 
used as a new project.
 
  
During the copy, the package will scan the file/directory names and the
+
Во время копирования пакет будет сканировать имена файлов/каталогов и содержимое файлов для подстановки переменных: '''__VARNAME__''' будет заменено значением переменной VARNAME
contents of the files for variable substitution: '''__VARNAME__''' will be
 
replaced by the value of a variable VARNAME
 
  
By default, the engine knows 2 variables:
+
По умолчанию движок знает о 2 переменных:
*ProjDir: The directory where the new project will be created.
+
*ProjDir: Каталог, в котором будет создан новый проект.
*ProjName: The name of the project.
+
*ProjName: Название нового проекта в ProjDir.
  
Additional variables must be defined in a file called '''project.ini''' in the
+
Дополнительные переменные должны быть определены в файле с именем '''project.ini''' в каталоге проекта. Это - файл в формате Windows INI.
directory of the project. This is a file in Windows INI format.
 
  
The section ''[Variables]'' will be scanned for variable names:
+
Раздел ''[Variables]'' будет сканироваться на предмет имен переменных:
 +
 
 +
<syntaxhighlight lang="ini">
 
  [Variables]
 
  [Variables]
  VarName1=Description 1
+
  VarName1=Description 1[|DefaultValue 1]
  VarName2=Description 2
+
  VarName2=Description 2[|DefaultValue 2]
 +
</syntaxhighlight>
  
The variables found will be presented with their description in a dialog,  
+
Найденные переменные будут представлены с их описанием в диалоговом окне, и пользователь должен представить значение для переменных.
and the user must present a value for the variables.
 
  
The' 'project.ini'' file can contain a second section, called ''Project'', which
+
Файл ''project.ini'' может содержать второй раздел, называемый ''Project'', который может содержать некоторую информацию о проекте. Здесь можно найти следующие ключевые слова:
can contain some info about the project. The following keywords can be found
 
there:
 
  
 
==ProjectFile==
 
==ProjectFile==
Any file that has a name equal to this (no extension) is treated specially,  
+
Имя файла (без расширения) lpi-файла проекта шаблона. Любой файл с именем, равным этому (без расширения), обрабатывается специально, он переименовывается в имя проекта. То есть, вот это ''ProjectFile=example'' заменит ''example.lpi'', ''example.lpr'' и ''example.cfg'' на имя, данное пользователем. По умолчанию предполагается, что значением '''ProjectFile''' является ''project'' (обратите внимание, что файл .ini не копируется)
it is renamed to the project name. That is ''ProjectFile=example'' will replace ''example.lpi'', ''example.lpr'' and ''example.cfg'' with the name given by the user. By default, the value of '''ProjectFile''' is assumed to be ''project''.
+
 
(note that the .ini file is not copied)
+
ProjectFile не является обязательным. Первый файл *.lpi в папке проекта шаблона будет принят как ProjectFile, если ProjectFile не указан или не существует.
  
 
==Name==
 
==Name==
Name of the template. The Name and description will be presented in the 'File-New' dialog.
+
Название шаблона. Имя и описание будут представлены в диалоге 'File-New'.
  
 
==Author==
 
==Author==
Author of the template
+
Автор шаблона
  
 
==Description==
 
==Description==
Short (one-line) description of the project. The Name and description will be presented in the 'File-New' dialog.
+
Краткое (однострочное) описание проекта. Имя и описание будут представлены в диалоге 'File-New'.
  
 
==Recurse==
 
==Recurse==
A boolean value (1/0) which tells the engine to recurse in subdirectories or not.
+
Логическое значение (1/0), которое указывает движку [осуществлять] рекурсивный [поиск] в подкаталогах или нет.
  
 
==Exclude==
 
==Exclude==
Comma separated list of filename extensions which should not be searched
+
Разделенный запятыми список расширений имени файла, которые не следует искать для подстановки ключевых слов.
for keyword subsitution.
 
  
==Getting Started==
+
==Как начать==
  
'''Step 1;'''
+
'''Шаг 1;'''
  
Create your own template directory (for example ~/.lazarus/mytemplates) and set this path in Lazarus (menu: Tools -> Project Template Options).
+
Создайте свой собственный каталог шаблонов (например, ~ /.lazarus/mytemplates) и установите этот путь в Lazarus (меню: Tools -> Project Template Options).
  
'''Step 2:'''
+
'''Шаг 2:'''
  
For any template functions to even appear in the Lazarus File menu, you will need at least one template which you can base on your existing (normal) project;
+
Чтобы любые шаблонные функции появились в меню File Lazarus'а, вам понадобится как минимум один шаблон, который вы можете использовать в своем существующем (обычном) проекте;
  
- Create a directory in your template directory (for example ~/.lazarus/mytemplates/myfirsttemplate)
+
- Создайте каталог в вашем каталоге шаблонов (например, ~/.lazarus/mytemplates/myfirsttemplate)
  
- Copy your project files in this new directory (*.lfm, *.pas, *.ico, *.lpi, *.lpr, *.res)
+
- Скопируйте файлы вашего проекта в этот новый каталог (*.lfm, *.pas, *.ico, *.lpi, *.lpr, *.res)
  
'''Step 3:'''
+
'''Шаг 3:'''
  
Create a "project.ini" file in the new template directory.
+
Создайте файл ''project.ini'' в новом каталоге шаблонов.
  
The minimum should look something like this:
+
Минимум, [файл] должен выглядеть примерно так:
  
 
project.ini:
 
project.ini:
 +
 +
<syntaxhighlight lang="ini">
 
  [Variables]
 
  [Variables]
 
   
 
   
 
  [Project]  
 
  [Project]  
 
  Name=My Form Template
 
  Name=My Form Template
 +
</syntaxhighlight>
  
''Optional:''
+
'''Необязательно:'''
 +
Приятной особенностью Project Templates является то, что они поддерживают переменные. Так как проект, вероятно, не будет называться так же, как ваш пример шаблона, вам придется внести некоторые изменения в код и переименовать файл.
  
The nice thing of Project Templates is that it supports variables.
+
'''Файлы''':
Since a project will probably not be named the same as your example template you will have to do some code editing and file renaming.
+
Переименуйте файл проекта (ico, lpi, lpr, res) в __PROJNAME __. Ext (где расширение, конечно, является исходным расширением).
 +
Например: project.lpi становится __PROJNAME __. Lpi.
 +
Примечание: содержимое файла lpi может нуждаться в некоторой очистке, например, удаление истории, ссылки на файлы, даже если вы не уверены, нужен ли файл lpi.
  
'''Files''':  
+
'''Содержимое файла''':  
Rename the project file (ico, lpi, lpr, res) to __PROJNAME__.ext (where extension is the original extension of course).
+
Для всех файлов, которые ссылаются на project.lpi и т.д., измените содержимое ваших файлов, чтобы все ссылки на "project" превратились в "__PROJNAME__" (с кавычками)
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''':
+
Вы можете опционально определить свои собственные переменные, например, чтобы дать "unit.pas" другое имя файла.
For all files that referred to project.lpi etc, change the content of your files  so all "project" references become "__PROJNAME__" (with the quotes).
+
Например, вы можете определить __MAINUNIT__ и __MAINFORM__ в project.ini как MAINUNIT и MAINFORM - во время создания Lazarus запросит у вас эти имена.
 +
Теперь каждое вхождение __MAINUNIT__, например, будет заменено предоставленным вами текстом (избегайте специальных символов и пробелов).
  
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.
+
Каждое вхождение переменной в именах файлов и содержимом файла будет заменено тем, что вы ввели при создании нового проекта на основе вашего шаблона. Предопределенными переменными являются PROJNAME и PROJDIR, но я пока не нашел назначения для PROJDIR.
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'''
 
 
project.ini
 
  
 +
<syntaxhighlight lang="ini">
 
  [Variables]  
 
  [Variables]  
 
  MAINUNIT=Filename for the default unit.pas file
 
  MAINUNIT=Filename for the default unit.pas file
Line 123: Line 115:
 
  Author=Hansaplast
 
  Author=Hansaplast
 
  Description=Lazarus LCL form specifically for my needs
 
  Description=Lazarus LCL form specifically for my needs
 +
</syntaxhighlight>
  
__PROJNAME__.lpr:
+
'''__PROJNAME__.lpr''':
  
 +
<syntaxhighlight lang="pascal">
 
  program __PROJNAME__;
 
  program __PROJNAME__;
 
   
 
   
Line 144: Line 138:
 
   Application.Run;
 
   Application.Run;
 
  end.
 
  end.
 +
</syntaxhighlight>
  
__MAINUNIT__.pas:
+
'''__MAINUNIT__.pas''':
  
 +
<syntaxhighlight lang="pascal">
 
  unit __MAINUNIT__;
 
  unit __MAINUNIT__;
 
      
 
      
Line 169: Line 165:
 
    
 
    
 
  //etc
 
  //etc
 +
</syntaxhighlight>
  
 +
'''__MAINUNIT__.lfm''':
  
__MAINUNIT__.lfm:
+
<syntaxhighlight lang="pascal">
 
 
 
  object __MAINFORM__: T__MAINFORM__
 
  object __MAINFORM__: T__MAINFORM__
 
  ...
 
  ...
 +
</syntaxhighlight>
  
 
+
Имейте в виду, что этот краткий учебник только для начинающих, предлагаемый механизм замены переменных может использоваться для самых разных целей.
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.
 
 
--[[User:Hansaplast|Hansaplast]] 16:30, 4 August 2012 (UTC)
 
--[[User:Hansaplast|Hansaplast]] 16:30, 4 August 2012 (UTC)
 
[[Category:Lazarus]]
 
[[Category:IDE]]
 

Latest revision as of 13:44, 30 January 2022

Deutsch (de) English (en) русский (ru)

Обзор

Вы можете приспособиться при создании новых проектов. Среда 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: Название нового проекта в ProjDir.

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

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

 [Variables]
 VarName1=Description 1[|DefaultValue 1]
 VarName2=Description 2[|DefaultValue 2]

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

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

ProjectFile

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

ProjectFile не является обязательным. Первый файл *.lpi в папке проекта шаблона будет принят как ProjectFile, если ProjectFile не указан или не существует.

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 является то, что они поддерживают переменные. Так как проект, вероятно, не будет называться так же, как ваш пример шаблона, вам придется внести некоторые изменения в код и переименовать файл.

Файлы: Переименуйте файл проекта (ico, lpi, lpr, res) в __PROJNAME __. Ext (где расширение, конечно, является исходным расширением). Например: project.lpi становится __PROJNAME __. Lpi. Примечание: содержимое файла lpi может нуждаться в некоторой очистке, например, удаление истории, ссылки на файлы, даже если вы не уверены, нужен ли файл lpi.

Содержимое файла: Для всех файлов, которые ссылаются на project.lpi и т.д., измените содержимое ваших файлов, чтобы все ссылки на "project" превратились в "__PROJNAME__" (с кавычками)

Вы можете опционально определить свои собственные переменные, например, чтобы дать "unit.pas" другое имя файла. Например, вы можете определить __MAINUNIT__ и __MAINFORM__ в project.ini как MAINUNIT и MAINFORM - во время создания Lazarus запросит у вас эти имена. Теперь каждое вхождение __MAINUNIT__, например, будет заменено предоставленным вами текстом (избегайте специальных символов и пробелов).

Обратите внимание, что это работает для всех переменных; Каждое вхождение переменной в именах файлов и содержимом файла будет заменено тем, что вы ввели при создании нового проекта на основе вашего шаблона. Предопределенными переменными являются PROJNAME и PROJDIR, но я пока не нашел назначения для PROJDIR.

Некоторые примеры:

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__
 ...

Имейте в виду, что этот краткий учебник только для начинающих, предлагаемый механизм замены переменных может использоваться для самых разных целей. Например, чтобы определить заголовок формы, заявление об авторском праве, веб-ссылку на ваши формы, конкретные объекты и т.д. --Hansaplast 16:30, 4 August 2012 (UTC)