Author:halw

Date:2008-10-25T08:00:01.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@97 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
halw
2008-10-25 08:00:01 +00:00
parent 2e37ddeca3
commit 19bcd2b1ec
26 changed files with 454 additions and 354 deletions

View File

@@ -9,7 +9,7 @@ You can access [[EiffelBuild Notation|objects]] from both the [[Builder window|
{{note|Although window and dialog objects may be accessed within the [[Widget selector|widget selector]] , it is not possible to build into these objects, you should use the [[Layout constructor|layout constructor]] or [[Builder window|builder window]] directly in this situation. }}
For more information about an [[EiffelBuild Notation|objects]] capacity and permitted children, see the [[EiffelVision Introduction|EiffelVision2]] documentation.
For more information about an [[EiffelBuild Notation|objects]] capacity and permitted children, see the [[EiffelVision Introduction|EiffelVision 2]] documentation.
{{seealso|<br/>
[[Create an object|Create an object]] <br/>

View File

@@ -7,7 +7,7 @@ This window may either be shown or hidden (default). To change between these two
[[Image:builder-window]]
The content of this window is a representation of the [[EiffelBuild Notation|objects]] you have defined in your project. Each [[EiffelBuild Notation|object]] is represented by the [[EiffelVision Introduction|EiffelVision2]] control matching its type. For example, an [[EiffelBuild Notation|object]] representing an <eiffel>EV_BUTTON</eiffel> will be displayed in here using an <eiffel>EV_BUTTON</eiffel>. As this view provides direct access to the objects ( [[EiffelBuild Notation|Pick]] any of the controls in this window), it enables you to build your interface within a view which provides rich visual feedback.
The content of this window is a representation of the [[EiffelBuild Notation|objects]] you have defined in your project. Each [[EiffelBuild Notation|object]] is represented by the [[EiffelVision Introduction|EiffelVision 2]] control matching its type. For example, an [[EiffelBuild Notation|object]] representing an <eiffel>EV_BUTTON</eiffel> will be displayed in here using an <eiffel>EV_BUTTON</eiffel>. As this view provides direct access to the objects ( [[EiffelBuild Notation|Pick]] any of the controls in this window), it enables you to build your interface within a view which provides rich visual feedback.
Because this window is just a view of the [[EiffelBuild Notation|objects]] , it will be always synchronized with the [[Layout constructor| layout constructor]] . This means you can [[Reparent an Object| re-parent objects]] , using the [[EiffelBuild Notation|pick and drop]] transport method, seamlessly between the two views. <br/>
{{note|Holding Ctrl while right clicking on an [[EiffelBuild Notation|object]] in the Builder Window creates a new [[Object editor|object editor]] targeted to the [[EiffelBuild Notation|object]] . Holding Ctrl and Shift while right clicking on an [[EiffelBuild Notation|object]] , highlights it within the [[Layout constructor|layout constructor]] .}}
@@ -16,7 +16,7 @@ Because this window is just a view of the [[EiffelBuild Notation|objects]] , it
Although the builder window attempts to show you the interface you are developing, it is not a completely accurate representation (Unlike the [[Display window|display window]] ). The main difference is that all [[EiffelBuild Notation|objects]] representing descendents of EV_CONTAINER are parented in a frame. This was implemented so that you would be able to easily manipulate the containers.
Imagine that this was not the case, and each container [[EiffelBuild Notation|object]] was just represented by an [[EiffelVision Introduction|EiffelVision2]] object matching its type. Because these containers have no visible screen space when filled with children, manipulation of them would have been difficult, and the functionality of this view would be compromised.
Imagine that this was not the case, and each container [[EiffelBuild Notation|object]] was just represented by an [[EiffelVision Introduction|EiffelVision 2]] object matching its type. Because these containers have no visible screen space when filled with children, manipulation of them would have been difficult, and the functionality of this view would be compromised.
In the screenshot above, you can see that there are two [[EiffelBuild Notation|objects]] representing containers in your project, an <eiffel>EV_VERTICAL_BOX</eiffel>, and an <eiffel>EV_HORIZONTAL_BOX</eiffel> (Excluding the <eiffel>EV_TITLED_WINDOW</eiffel> [[EiffelBuild Notation|object]] represented by this window).

View File

@@ -16,8 +16,8 @@ Alternatively, you can hold down the Ctrl key while starting a [[EiffelBuild Not
==View types==
Looking at the left-hand screenshot above, you can see that the [[Image:icon-component-display-view-color]] button is depressed, meaning the component viewer is in display view mode. Clicking on [[Image:icon-component-build-view-color]] will put the component viewer into build mode view as shown in the right-hand screenshot. These modes are mutually exclusive and are described below:
* '''Builder view''' - This view is similar to the view used by the [[Display window|display window]] . i.e. the [[EiffelVision Introduction|EiffelVision2]] controls are displayed exactly as is defined in the [[EiffelBuild Notation|component]] .
* '''Display view''' - This view is similar to the view used by the [[Builder window|builder window]] . i.e. all [[EiffelVision Introduction|EiffelVision2]] containers are represented by frames so they are immediately visible. This makes the actual structure represented by the [[EiffelBuild Notation|component]] completely visible.
* '''Builder view''' - This view is similar to the view used by the [[Display window|display window]] . i.e. the [[EiffelVision Introduction|EiffelVision 2]] controls are displayed exactly as is defined in the [[EiffelBuild Notation|component]] .
* '''Display view''' - This view is similar to the view used by the [[Builder window|builder window]] . i.e. all [[EiffelVision Introduction|EiffelVision 2]] containers are represented by frames so they are immediately visible. This makes the actual structure represented by the [[EiffelBuild Notation|component]] completely visible.
{{note|The type of the "root_object" within the component is displayed in the toolbar of the component viewer. }}

View File

@@ -56,11 +56,11 @@ As objects are reliant on the constant you are removing, you must confirm that y
A String constant represents an Eiffel STRING, and may be any valid STRING. For example, in the generated constants file, for a String constant named `modify_button_text', the following code is generated:
<code>
modify_button_text: STRING is
-- `Result' is STRING constant named modify_button_text.
once
Result := "Modify"
end
modify_button_text: STRING
-- `Result' is STRING constant named modify_button_text.
once
Result := "Modify"
end
</code>
@@ -68,21 +68,21 @@ A String constant represents an Eiffel STRING, and may be any valid STRING. For
A Integer constant represents an Eiffel INTEGER, and may be any valid INTEGER value. For example, in the generated constants file, for an Integer constant named `medium_padding', the following code is generated:
<code>
medium_padding: INTEGER is
-- `Result' is INTEGER constant named medium_padding.
once
Result := 8
end</code>
medium_padding: INTEGER
-- `Result' is INTEGER constant named medium_padding.
once
Result := 8
end</code>
==Directory constant==
A Directory constant is an Eiffel representation of a directory, as a STRING value. For example, in the generated constants file, for a Directory constant named `pixmap_location', the following code is generated:
<code>
pixmap_location: STRING is
-- `Result' is DIRECTORY constant named pixmap_location.
once
Result := "C:\pixmaps"
end</code>
pixmap_location: STRING
-- `Result' is DIRECTORY constant named pixmap_location.
once
Result := "C:\pixmaps"
end</code>
==Pixmap constant==
@@ -90,30 +90,30 @@ A Directory constant is an Eiffel representation of a directory, as a STRING val
A pixmap constant is a representation of a pixmap image, and two types are available:
* '''Absolute''' - The generated code contains a constant of type EV_PIXMAP, built from a single, absolute path, based on the location of the original pixmap on disk as follows:
<code>
main_pixmap: EV_PIXMAP is
-- `Result' is PIXMAP constant named main_pixmap.
local
a_file_name: FILE_NAME
once
create Result
create a_file_name.make_from_string ("C:\pixmaps\main_pixmap.png")
-- Now set `Result' based on `a_file_name'.
set_with_named_file(Result, a_file_name)
end</code>
main_pixmap: EV_PIXMAP
-- `Result' is PIXMAP constant named main_pixmap.
local
a_file_name: FILE_NAME
once
create Result
create a_file_name.make_from_string ("C:\pixmaps\main_pixmap.png")
-- Now set `Result' based on `a_file_name'.
set_with_named_file(Result, a_file_name)
end</code>
* '''Relative''' - The generated code contains a constant of type EV_PIXMAP, built from a file name and a directory constant. This type of pixmap constant is the most frequently used, as it is more flexible. By redefining the value of the directory constant on which it is based, your systems may easily account for the installation location of the pixmap. A relative Pixmap constant is generated as follows:
<code>
main_pixmap: EV_PIXMAP is
-- `Result' is PIXMAP constant named main_pixmap.
local
a_file_name: FILE_NAME
once
create Result
create a_file_name.make_from_string (pixmap_location)
a_file_name.set_file_name("main_pixmap.png")
-- Now set `Result' based on `a_file_name'.
set_with_named_file(Result, a_file_name)
end</code>
main_pixmap: EV_PIXMAP
-- `Result' is PIXMAP constant named main_pixmap.
local
a_file_name: FILE_NAME
once
create Result
create a_file_name.make_from_string (pixmap_location)
a_file_name.set_file_name("main_pixmap.png")
-- Now set `Result' based on `a_file_name'.
set_with_named_file(Result, a_file_name)
end</code>
Where `pixmap_location' is the name of the Directory constant to which the pixmap is relative.
@@ -121,25 +121,27 @@ Where `pixmap_location' is the name of the Directory constant to which the pixma
==Font constant==
A Font constant represents an EV_FONT. For example, in the generated constants file, for a font constant named `times_new_roman', the following code is generated:
<code>times_new_roman: EV_FONT is
-- `Result' is EV_FONT constant named `times_new_roman'.
once
create Result
Result.set_family (feature {EV_FONT_CONSTANTS}.Family_roman)
Result.set_weight (feature {EV_FONT_CONSTANTS}.Weight_regular)
Result.set_shape (feature {EV_FONT_CONSTANTS}.Shape_regular)
Result.set_height_in_points (12)
Result.preferred_families.extend ("Times New Roman")
end</code>
<code>
times_new_roman: EV_FONT
-- `Result' is EV_FONT constant named `times_new_roman'.
once
create Result
Result.set_family (feature {EV_FONT_CONSTANTS}.Family_roman)
Result.set_weight (feature {EV_FONT_CONSTANTS}.Weight_regular)
Result.set_shape (feature {EV_FONT_CONSTANTS}.Shape_regular)
Result.set_height_in_points (12)
Result.preferred_families.extend ("Times New Roman")
end</code>
==Color constant==
A Color constant represents an EV_COLOR. For example, in the generated constants file, for a color constant named `red', the following code is generated:
<code>red: EV_COLOR is
-- `Result' is EV_COLOR constant named `red'.
once
Result := create {EV_COLOR}.make_with_8_bit_rgb (255, 0, 0)
end</code>
<code>
red: EV_COLOR
-- `Result' is EV_COLOR constant named `red'.
once
Result := create {EV_COLOR}.make_with_8_bit_rgb (255, 0, 0)
end</code>
===Pixmap constant dialog===

View File

@@ -7,9 +7,9 @@ This window may either be shown or hidden (default). To change between these two
[[Image:display-window]]
This view is provided so that you can really see what your project will look like when it has been generated and is running as a stand alone [[EiffelVision Introduction|EiffelVision2]] system.
This view is provided so that you can really see what your project will look like when it has been generated and is running as a stand alone [[EiffelVision Introduction|EiffelVision 2]] system.
All properties that have been set on the [[EiffelBuild Notation|objects]] in your project are set in the [[EiffelVision Introduction|EiffelVision2]] control matching its type.
All properties that have been set on the [[EiffelBuild Notation|objects]] in your project are set in the [[EiffelVision Introduction|EiffelVision 2]] control matching its type.
{{seealso|<br/>
[[Builder window|Builder window]] <br/>

View File

@@ -7,10 +7,18 @@ The docking mechanism permits customization of the EiffelBuild interface through
To dock one of the three supported tools, press and hold the left mouse button on the title of the tool, and move the mouse so that it points to the new location for the tool. Upon releasing the mouse button, the dock completes, and based on the mouse location, the following may occur:
* '''Re-positioning in the main window''' - If the mouse is held over the three part vertical split area displayed to the left hand side of the EiffelBuild window, the position of the tool within this structure may be modified, providing simple re-ordering. A small grayed area indicates the insertion position of the tool, only displayed if the tools position will be changed upon release. The gray area indicating the new insertion point has the following appearance:
[[Image:docking-insert]]
In this case, the tool being docked will be moved to immediately above the component selector. If no feedback is provided regarding the insertion, upon releasing the mouse button to complete the dock, the tool is moved to an external window.
* '''Docking externally''' - Completing a dock while not above the left hand area of the main window, or if no insert feedback is provided, causes the tool to be moved from its current location to an external window. A tool that is docked externally has the following appearance:
[[Image:docked-external]]
The tool may now be freely moved to any location on screen, in the same fashion as you would move any standard window. The window in which the tool is contained is always displayed "on top" of the main window. There are two methods of restoring the dialog back to its original location in the main window:
** '''Docking back''' - Start a drag from the title of the tool, and point the mouse to the position in which you wish to insert the tool within the main window. If the position is valid, feedback (the gray bar) is displayed, and completing the dock closes the dialog, and re-inserts the tool. If no feedback is provided, the pointed position is not valid, and completing the dock simply moves the window to that position on screen.
** '''Closing the window''' - Clicking the cross displayed to the right hand side of the windows title bar causes the window to be destroyed, and the tool contained to be restored back to its original position within the main window.
@@ -21,6 +29,8 @@ The tool may now be freely moved to any location on screen, in the same fashion
==Main window with externally docked tools==
The following screenshot illustrates the appearance of the main window with all dockable tools external:
[[Image:main-window-with-docked-tools]]

View File

@@ -7,7 +7,7 @@ The layout constructor provides a view of the [[EiffelBuild Notation|objects]]
[[Image:layout-constructor]]
Each item in the tree represents one object. The screenshot above represents the following [[EiffelVision Introduction|EiffelVision2]] interface definition - An EV_TITLED_WINDOW containing one child, of type EV_VERTICAL_BOX. Within the vertical box there is an EV_HORIZONTAL_BOX and an EV_LIST. The list is empty, but the horizontal box contains three different objects of type EV_BUTTON.
Each item in the tree represents one object. The screenshot above represents the following [[EiffelVision Introduction|EiffelVision 2]] interface definition - An EV_TITLED_WINDOW containing one child, of type EV_VERTICAL_BOX. Within the vertical box there is an EV_HORIZONTAL_BOX and an EV_LIST. The list is empty, but the horizontal box contains three different objects of type EV_BUTTON.
{{note|The widget displayed as the root of the Layout Constructor is the currently selected object in the [[Widget selector|Widget Selector]] . To edit the contents of a different widget, select the widget you wish to manipulate from the [[Widget selector|widget selector]] .}}

View File

@@ -29,9 +29,9 @@ When an object editor is targeted to an [[EiffelBuild Notation|object]] , you wi
* String properties inputted via a text field are updated within the object every time a key is pressed
* Integer properties inputted via a text field are only updated within the object when return is pressed, or the input box looses the focus.
* Almost without exception, a push button which controls a property, will open up a dialog, allowing the property to be edited. Examples are colors, pixmaps and events.
* If when you attempt to modify a property, it returns back to its original value, it means that the value you attempted to enter was invalid. For example, looking at the screen show above, if you enter -50 into the minimum_height text field and press return, it will revert back to 23. This is because the minimum_height of an <eiffel>EV_BUTTON</eiffel> may not be set to less than 0. To find allowable values for properties of an [[EiffelBuild Notation|object]] , consult the [[EiffelVision Introduction|EiffelVision2]] documentation.
* If when you attempt to modify a property, it returns back to its original value, it means that the value you attempted to enter was invalid. For example, looking at the screen show above, if you enter -50 into the minimum_height text field and press return, it will revert back to 23. This is because the minimum_height of an <eiffel>EV_BUTTON</eiffel> may not be set to less than 0. To find allowable values for properties of an [[EiffelBuild Notation|object]] , consult the [[EiffelVision Introduction|EiffelVision 2]] documentation.
All properties that may be manipulated in an object editor correspond directly to a property of the [[EiffelVision Introduction|EiffelVision2]] control that is represented by the [[EiffelBuild Notation|object]] (Displayed in an object editor as '''type'''). There is one exception to that rule though, and that is the '''Name''' field which is specific to EiffelBuild. This field is used for your identification of the [[EiffelBuild Notation|object]] and as the attribute name in the generated code. For example, when EiffelBuild generates code corresponding to the [[EiffelBuild Notation|object]] targeted in the editor shown above, it would declare the vision2 component as - button1: EV_BUTTON
All properties that may be manipulated in an object editor correspond directly to a property of the [[EiffelVision Introduction|EiffelVision 2]] control that is represented by the [[EiffelBuild Notation|object]] (Displayed in an object editor as '''type'''). There is one exception to that rule though, and that is the '''Name''' field which is specific to EiffelBuild. This field is used for your identification of the [[EiffelBuild Notation|object]] and as the attribute name in the generated code. For example, when EiffelBuild generates code corresponding to the [[EiffelBuild Notation|object]] targeted in the editor shown above, it would declare the EiffelVision 2 component as - button1: EV_BUTTON
{{note|You may have as many object editors targeted to the same [[EiffelBuild Notation|object]] as you wish. Whenever a change is made to the [[EiffelBuild Notation|object]] through one of the editors, all other editors targeted to that [[EiffelBuild Notation|object]] are synchronized. }}

View File

@@ -1,13 +1,13 @@
[[Property:title|Type selector]]
[[Property:weight|4]]
[[Property:uuid|893343c2-417f-90c5-147e-941bc232fe43]]
The type selector contains all the available Vision2 types supported by EiffelBuild. These are the basic building blocks for your system.
The type selector contains all the available EiffelVision 2 types supported by EiffelBuild. These are the basic building blocks for your system.
[[Image:type-selector]]
The types are organized into three groups - Primitives, Containers and Items. All types that may be used in EiffelBuild have a text in uppercase, corresponding to their type in [[EiffelVision Introduction|EiffelVision2]] . For example, looking at the screenshot above, the <eiffel>BUTTON</eiffel> item represents an <eiffel>EV_BUTTON</eiffel>, and the <eiffel>EV_COMBO_BOX</eiffel> item represents <eiffel>EV_COMBO_BOX</eiffel>.
The types are organized into three groups - Primitives, Containers and Items. All types that may be used in EiffelBuild have a text in uppercase, corresponding to their type in [[EiffelVision Introduction|EiffelVision 2]] . For example, looking at the screenshot above, the <eiffel>BUTTON</eiffel> item represents an <eiffel>EV_BUTTON</eiffel>, and the <eiffel>EV_COMBO_BOX</eiffel> item represents <eiffel>EV_COMBO_BOX</eiffel>.
{{note|The types available in the type selector are fixed, and cannot be modified. Almost all [[EiffelVision Introduction|EiffelVision2]] components are available. }}
{{note|The types available in the type selector are fixed, and cannot be modified. Almost all [[EiffelVision Introduction|EiffelVision 2]] components are available. }}
==Creating a new object==
[[EiffelBuild Notation|Objects]] are the building blocks used in EiffelBuild to construct your interface. To create a new [[EiffelBuild Notation|object]] for use in your system, [[EiffelBuild Notation|pick]] the type corresponding to the type of object you wish to create,and [[EiffelBuild Notation|drop]] onto an [[EiffelBuild Notation|object]] representation. If an object is full, or does not allow other objects of the new type to be contained, then you will not be able to [[EiffelBuild Notation|drop]] on it. <br/>
@@ -18,7 +18,7 @@ This shows how simple it is to Build new [[EiffelBuild Notation|objects]] in Ei
You may drop an object directly from the Type Selector into the [[Widget selector|widget selector]] which creates the object as a "top level object" ensuring that upon generation, it is represented by an individual set of classes. These top level objects may then be re-used within your interface as desired.
{{note|To understand the types accepted, and the capacity of objects, you should consult the [[EiffelVision Introduction|EiffelVision2]] library reference. }}
{{note|To understand the types accepted, and the capacity of objects, you should consult the [[EiffelVision Introduction|EiffelVision 2]] library reference. }}
==Changing the type of an existing object==