Hi Ivan,

On Mon, Mar 11, 2013 at 09:49:51PM -0600, jorge ivan poot diaz wrote:
> Hello,
> I'm seeing the files in the source code in draw, examples:
> 
> https://svn.apache.org/repos/asf/openoffice/trunk/main/sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml
> 
> I want to know where the source code files are declared Icons Standard
> Toolbar and Formatting.

Do you want to know which of these xml files belongs to the "Standard"
toolbar, which to the "Text Formatting" toolbar, etc.? Or where is the
code that converts these xml into toolbars?

> I want to know how I can add another icon in the toolbar.

If you look at the file, you notice that the concept of an icon does not
exist there; all you have is what is called a UNO command, for example

".uno:FormatLine"

The UNO command is the central point; from the UNO command the
application framework retrieves the label/text of the toolbar item, and
the icon bound to it.

The command to label binding is done in the XxxCommands.xcu that you
already know, with the "Label"/"ContextLabel" proeprty; if the "Property"
property has a value of 1, it indicates that the command is bound to an
icon.

Icons bound to UNO commands are located at
https://svn.apache.org/repos/asf/openoffice/trunk/main/default_images/res/commandimagelist/

the naming scheme is the following:

* prefix:

    sc_     16x16 image
    sch_    16x16 high-contrast image
    lc_     26x26 image
    lch_    26x26 h-c image

* the UNO command without the protocol part (.uno:), in lowercase.

For examle, for .uno:FormatLine:

https://svn.apache.org/repos/asf/openoffice/trunk/main/default_images/res/commandimagelist/sc_formatline.png
https://svn.apache.org/repos/asf/openoffice/trunk/main/default_images/res/commandimagelist/sch_formatline.png
https://svn.apache.org/repos/asf/openoffice/trunk/main/default_images/res/commandimagelist/lc_formatline.png
https://svn.apache.org/repos/asf/openoffice/trunk/main/default_images/res/commandimagelist/lch_formatline.png

In short, you don't add an icon to the toolbar; you add a UNO command.
If this UNO command is new (it does not exist in the current source
code), you'll have to implement the functionality that executes the
command (you click the toolbar item, the UNO command is "dispatched",
that is, the functionality bound to it is executed), and also gives
information about the status of the functionality this command
represents (toolbar items are context sensitive, they are enabled or
disabled, etc., depending on the state of the feature they represent).


> Similarly, I've noticed that there are several xml files at this address:
> 
> https://svn.apache.org/repos/asf/openoffice/trunk/main/sd/uiconfig/sdraw/toolbar/

Yes, because there are several toolbars in Draw.

> What are the interface need to draw the toolbar?

There is a lot of code involved in transforming this xml file into
a toolbar, spread in several modules. The central part is the
application framework, drawing the toolbar onto the screen happens in
vcl. If you want to dive into this, the best -IMO - is setting a break
point in the framework code:

framework::ToolbarLayoutManager::implts_createElement

Note that it's better to start the application from withing the
debugger, because UI elements are cached, you won't see it's creation
from zero (reading that xml file) if you attach to an already opened
document.

If you want to see the creation of the other UI elements (menubar,
statusbar), break in framework::LayoutManager::createElement


Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina

Attachment: pgpNWLpUnqvrC.pgp
Description: PGP signature

Reply via email to