Duplicating the Line Graph Widget
The Line Graph widget is part of the LiveCode distribution so we can’t make changes to it directly.
To create a modified version of the Line Graph widget we will make a copy of the LCB file in a new folder and update the name, extension id and author so the two Line Graph widgets can exist together without conflicts.
We will also use a different icon when installing our version so it’s clear which widget is which in the Tools Palette.
Start by creating a new folder.
Next we will copy in the LiveCode Builder source file for the Line Graph widget.
You can find the source for all the extensions used in LiveCode inside your LiveCode application package.
- Mac: <LiveCode 8.1.app>/Contents/Tools/Extensions
- Windows: <LiveCode 8.1>/Extensions
In the Extensions folder you will find a folder for each extension. Copy the graph.lcb file from the com.livecode.widget.lineGraph folder into the new directory you created.
The source file can also be found in the Resources for this lesson.
Update the Widget Metadata
Update the widget identifier and metadata.
- Set the widget identifier to “community.livecode.<developer id>.lineGraph2”
- Set the author to your name.
- Set the version number to “1.0.0”
- Set the title to “Modified Line Graph”
- Remove the svgicon metadata. We’ll be selecting our icons in the Extension Builder and this piece of metadata would override the icons.
This will ensure LiveCode recognises the modified Line Graph as a unique widget, not a version of the initial widget.
widget community.livecode.elanorb.modifiedlinegraph -- dependency declarations -- metadata metadata author is "Elanor Buchanan" metadata version is "1.0.0" metadata title is "Modified Line Graph" metadata preferredSize is "300,175" … widget code continues end widget
Update OnCreate
We also need to update the OnCreate handler to set the default value of the mMarkerStyles variable.
If we don’t set a value for this list variable in OnCreate the Extension Builder will encounter an error when using the Test button to test the widget. This is because LCB throws an error if you try to access a list element that does not exist so we must ensure the variable is set to its default value.
public handler OnCreate() returns nothing … previous codeput [] into mMarkerStylesput ["filled circle","filled square","filled diamond"] into mMarkerStyles … code continues end handler
Test the widget
Test that the widget compiles with these changes.
- Open the Extension Builder from the Tools menu
- Load the Modified Line Graph LCB file.
- Click Test
- The Extension Builder will compile the widget and create a test stack containing an instance of the widget.