Sign in Join
Wiki copytemporary

IDE Development/ja: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: IDE Development/ja

OldNewLine
1+**日本語版メニュー**
2+---
3+[[Main Page/ja|メインページ]] \- [[Lazarus Documentation/ja|Lazarus Documentation日本語版]] \- [[Japanese Localization Notes|翻訳ノート]] \- [[Bug Tracking/ja|日本語障害情報]]
4+
5+
6+This page contains notes for lazarus core developers about ongoing development.
7+
8+# Multi form properties / using DataModules from other forms in the designer
9+
10+Note: This paragraph is referenced by [[Lazarus 0.9.26 release notes]].
11+
12+## Short Description
13+
14+This feature allows to use components of other designer forms. A common example is to use the TDataSource on a DataModule for the DataSource property of a db control. Designer forms can only reference each other if they have a CreateForm statement in the lpr file (Project Options / Forms).
15+
16+## Working
17+
18+ * Manual referencing via source code works.
19+ * TPersistentPropertyEditor.GetValues - List all possible values. Check for class compatibility and if the target form is listed in the CreateForm statements of the lpr file and if the target unit does not belong to a package that will conflict if used.
20+ * TPersistentPropertyEditor.GetValue - Show component path
21+ * TPersistentPropertyEditor.SetValue - search the component via the given path
22+ * When component is deleted, the property must be set to nil - This is not the job of the IDE, but should be achieved by the normal TComponent FreeNotification feature. Maybe eventually a check could be added, if this is implemented properly and force a nil on error.
23+ * When a component is renamed the property does not need to be updated, because the form is open and use the pointer not the name. But the designer must be flagged 'modified', because the lfm has changed. See below.
24+ * When reference form is opened, then target forms are opened too.
25+ * When target form is closed, then only the designer is closed. The component is kept hidden.
26+ * When all referring forms are closed/hidden, the hidden component will be automatically freed.
27+ * Circle dependencies are allowed.
28+ * When referenced component is renamed, the using units must be set modified.
29+ * When referenced component is deleted, the using units must be set modified.
30+ * Opening a unit now checks if designer is already created
31+ * Reopen/Revert a form - all connected forms are now closed
32+
33+## ToDo
34+
35+ * Allow to connect to forms, that are used in the uses section. Technically there is _no_ connection between the uses section and the form streaming, because form streaming uses global variables. But the IDE must somehow find the referenced form. Without the uses section the IDE must in worst case search and read every reachable lfm file on disk. So the uses section is a good compromise between speed and flexibility.
36+
37+# Translations, i18n, lrt files, po files
38+
39+## Short Description
40+
41+This feature automatically creates and updates .po files for packages and projects.
42+
43+## Working
44+
45+ * Dialog options for project/package to enable i18n
46+ * Collect TTranslateStrings from RTTI while designer form writing and writing them to lrt file.
47+ * Copying new strings from rst and lrt files to a single .po file for each project
48+ * load the .po files
49+ * Delete unused strings from the .po file of package/projects
50+ * Update translated .po files, similar to the updatepofiles tool.
51+
52+## ToDo
53+
54+ * Copying new strings from rst and lrt files to a single .po file for each package (implemented, need dialog option to change po filename or need agreedment to use same name of package)
55+ * Collect all .po files of project and all used packages into a directory. This directory can then be used by the project to load the strings at runtime. And installers can copy the content.
56+ * standardize filenames and path, so that loading the translations at runtime is possible without writing code.
57+
58+# Frames
59+
60+## Short Description
61+
62+Frames are special child forms. The goal is to edit them like forms in the IDE designer, and to use them as components on designer forms.
63+
64+## Working
65+
66+compile lazarus clean with passing **-dEnableTFrame** (not necessary starting from svn release 16909)
67+
68+ * Manually creating via source
69+ * gtk1, gtk2, qt, win32/win64
70+ * Create a new frame
71+ * Open a frame in the designer
72+ * Save a frame
73+ * Close a frame
74+ * Revert a frame
75+ * Design a frame (adding, selecting, moving controls, ...)
76+ * Opening a nested frame
77+ * Opening a nested frame with ancestors
78+ * Support for the inline keyword for lfm and lrs streams.
79+ * Add a frame to a form, add unit to uses section, package to project dependencies
80+ * Auto opening frame if not yet loaded
81+ * Close a frame that is currently used by a nested frame
82+ * Close a form with an embedded frame
83+ * Save a form with an embedded frame
84+ * Delete a frame embedded in a form
85+ * Inherited nested Components (Components with the frame as Owner and not the Form)
86+ * Show inherited nested components properties in OI
87+ * Forbid deleting nested inherited components
88+ * Forbid renaming nested inherited components
89+ * Show inherited nested components events in OI as ClassName.MethodName
90+ * When dblclick on inherited nested components events in OI create an event with the following code: Frame1.FrameResize(Sender);
91+ * When Ctrl+Click on inherited nested components events in OI jump to inherited code.
92+ * show nested components in OI component tree
93+ * Write nested component to stream
94+ * Forbid putting a component onto a nested frame, because TWriter does not support that.
95+ * Revert a form with an embedded frame
96+
97+## ToDo
98+
99+ * Propagate changes of ancestor to nested controls
100+ * Tutorial
101+ * Documentation
102+ * Update
103+
104+# VFI - Visual Form Inheritance
105+
106+## Short Description
107+
108+Forms can inherit from other forms. The .lfm streams of ancestors are read/applied before the current lfm. The .lfm of the descendant is the difference between ancestor and current state. The IDE allows to open and edit inherited forms. VFI does not only apply to TForm, but TDataModule, TFrame and any registered base designer class. For the full features compile with -dEnableTFrame.
109+
110+## Working
111+
112+ * find ancestor unit, lfm and class
113+ * automatically open ancestor form hidden in background
114+ * open descendant and read ancestor lfm first
115+ * show hidden ancestor form
116+ * hide ancestor form
117+ * automatically close hidden ancestor form if not needed anymore
118+ * create new ancestor form via 'File / New ... / Inherited Items'
119+ * forbid deleting inherited components
120+ * forbid renaming inherited components
121+
122+## ToDo
123+
124+ * inherited events (partially working)
125+ * apply changes of ancestor to descendants when both are open
126+ * Tutorial
127+ * Documentation
128+
129+# CodeTools Debugging
130+
131+## Short Description
132+
133+The codetools and its integration in the IDE is a complex part and a bug can create strange side effects, happen sometimes only after a long time and are hard to reproduce. The IDE needs some debugging tools to show the internal structures and run consistency checks.
134+
135+## Working
136+
137+ * Compile with -dCheckNodeTool to make consistency checks on various.
138+ * IDE Internals / Package Links
139+
140+## ToDo
141+
142+ * Consistency Checks for all codetools node caches
143+
144+
145+
146+
147+
148+# Create auto generated files in the output directory
149+
150+## Short Description
151+
152+The IDE auto creates some files, like the .lrs files of the .lfm files. These files should be auto created in the output directory. This has the advantage that they are not in the source directory, making browsing and version control systems easier.
153+
154+## Working
155+
156+ * Option for projects for .lrs files
157+
158+## ToDo
159+
160+ * .rc and .lrs file of project main source (version and icon)
161+ * option for packages
162+ * new projects should by default use an output directory (Questions: except for the executable? what name?)
163+ * I would prefer if the executable remains in the same location. I have lot's of scripts which depend on that. About the output directory name I would suggest: output or Output --[Sekelsenmat](</User:Sekelsenmat> "User:Sekelsenmat") 15:04, 18 December 2008 (CET)
164+
165+---
166+*From the Free Pascal wiki, page "IDE Development/ja", as the Internet Archive kept it on 2021-01-20, last changed on 2009-01-25. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history