With the upgraded Broadcast Power, we completely changed the user interface.
Instead of a dockable tabbed interface with a top menu, we have chosen to use a RibbonMenu with buttons. Each button displays a specific part or aspect of the application, shielding you from all others. This simplifies your user experiences and focuses your attention on the task on hand.
Searching for a specific functionality is now easier as the RibbonMenu has its items grouped in a logical manner.
Also, our installer now has been slashed in size; it's smaller and better. The installer does not attempt to create the database schema, instead, we have placed this functionality within the application.
Many of the error messages have been modified and made more readable with, where possible, suggestions for solving the error.
A new Broadcast Power License was written for Broadcast Power.
Here's how this new user interface looks like:
We have increased the functionality coverage of our software.
Now you can:
• Play audio on multiple devices from the same application (Main device and PFL device for each player)
• Play audio with the following players: Two main players, jingle players (10), news player, commercial player.
• Mix multiple audio files on the same device using software mixing
• Control the same playback and change data from multiple computers
• Control the same playback and change data over the internet without special configurations to your firewall
• View and playback news and news clips
• Limit user access with enhanced security and finer access control
• Get detailed exception or error logs from the event viewer
• Redirect exception and error logging to a file, email address, and other stores
• Control more than a single station feed from the one user interface with a click of a button using our ingenious remote player controller engine, provided all controlled player executables are connected through a network and are reachable to the controller
• Schedule your programs in a hierarchical structure
• Schedule commercials and campaigns in three different methods giving you flexibility
• Schedule programs visually using a multi track editor
• Automate volumes on individual occurrences of an audio file within a program or schedule
• With a click of a button fully automate the playback and audio selection
• Control audio selection using rule based algorithms and settings
• Playback audio and view their status through either the volume control, progress bar, or graphical audio frequency visualization
• Work with the application in either assisted or automated modes
• Scale up from a free database engine (SQL Server 2005 Express) to a full fledged SQL Server 2005 or SQL Server 2008 database
• Register the application over the internet using a 24x7 automated web service (subject to host availability, matching hardware signature, and license validity)
• Arrange and re-arrange the user interface to your liking. Per user persistence for UI.
• Change the user interface language on the fly or by pre-configuring (subject to language and translation availability). Currently available in English, Dutsh, French and Arabic.
• Finally, enjoy a rugged, robust and intelligent radio automation and management system
2.5.6.6 Changes
List of new features / changes:
• Arabic language translation
• FMB80 RDS plugin. Extensive new features, including scheduled static texts, scrolling texts, scheduled text, and alternate text. Control up to 5 RDS devices at once using UDP protocol. Sends PS and RT messages, static and tagged. When static text is defined, the RDS plugin will not update RDS messages based on events from the remote player host players (jingles, songs, commercials, and news players), instead, a static text is displayed , along with scheduled texts, until it is reset.
• Added Clear Player for commercial player that will clear the spots and commercials added to the player and send a message to all controlled commercial players.
• ReceivePlayerMessage for #region IPlayerEventClient Members is implemented for Player and messages are ignored if player is in automation mode, except for disabling automation. Also enable for news clips. Needs testing.
• Added new config option to allow user to enable/disable automatically playing a news clip when the audio button is pressed when in reading mode. Old behavior was to simply load the file and wait for user to click play.
• Queue refresh speed more than doubled. Instead of refreshing every 2 seconds, now the player refreshes the queue list every 600 millisecond.
• Wrote a watchdog that monitors the audio signal level and if it detects silence, it sends an email and triggers an action, example run another stand-by player. This is part of the RadioLogger component.
• Added a remote player queue refresh button that clears and reloads the queue
• Added an audio editor button that launches an external audio editor. Current audio editor supported: www.wavosaur.com
• Added command line parameters for RemotePlayerHost.exe to allow it to launch in automation mode. (automate=1).
• Added capability to define multiple IP addresses for station feeds. Separate each IP with a comma.
• Added username to UI title
• Added password reset and password hint functionality
• Increased size and font size of info box in players.
• Added support for a variety of new audio file types and support for Winamp DSP. To be enhanced in future versions.
• Removed the WinUI Splash Screen. Annoying thing.
• Added change password dialog box and password tip, accessible from the login dialog box.
• Playing jingles will fade other players by a certain % (can be changed from the config screen), when in manual mode and then restore the volume to 100% when done playing. The fade out / in duration is 1 second. In this version, you will have to restart RemotePlayerHost when you change the setting for it.
• When the stop button is clicked the first time, the stop button will start flashing and the player will fade out to 0 volume in 2 seconds, unless you click it again in the meantime to stop the player from playing altogether. Double click the button to stop playback immediately.
• New File Browser which groups Media files by Category and Style
• New button on queue to edit mix / overlap settings of queued media items
• Added list of element rules to the left of program rule to make it easier to add rules to a program by double clicking or drag/drop.
• Changed the background and font for the player counters. Clicking on a counter will swap its background between black and white. Exiting the application will save the colors for the logged in user.
• Added stop buttons for the Jingle player
• Changed all progress labels to a clearer font and transparent or white background.
• Added a category field on the Media editor screen. This field is now used to group media items by category and display them in a new media browser for faster media selection.
• Dragging and dropping media / songs on the queue will insert the song before the row where you drop the file in the queue. To add the song last in the queue, drop it in the empty space below the last media item in the queue. Adding items in the middle of the queue will mess up the start time of the media element
• Queue refresh speed improved when pressing automate and when dragging and dropping.
• Change spot commercial saving to retrieve a random jingle in/out based on category instead of only first matching one.
• Revamped the program elements screen. Now you can drag and drop audio from the media browser on to the list of program elements. Removed the program element rules since it is now redundant with the introduction of rules at the program level.
• Improved the performance of the graphical editor. The generation of audio graphics is now more than 50 times faster. I’m no longer averaging 256 samples for each section of the audio file, instead, I am averaging only 2 samples for each read operation. One read operation = one second worth of audio data. Also added a progress bar which shows you the progress of rendering an audio file to an image.
• Queue list player used to preview audio entries in the queue now plays back the audio on the server.
• Removed the audio device configuration from the config files and added config for each device at the database level. Now each remote player can have a main device and a PFL device specified. They can be the same if you want to redirect each player to a separate output device and use the mixer PFL button. Also, there is a client audio device that you can specify. This device is used to playback audio on client machines, used mainly for program, news and commercial editors. In future releases we will add new functionality to allow you to use the remote player to play back these preview audio files using a specific device on the server.
Here is a list of all the players that currently use the client audio device: Graphical program element editor, user jingle entry form, audio file dialog boxes, cue point editor, audio tracks (used to retrieve audio length for positioning and drawing).
Please note that you cannot play audio files using these players unless the client has access to the audio files.
List of bug fixes:
• Fixed restore function of user settings when main form loads. Delayed loading of secondary forms so that they don’t get loaded before main form and get hidden by it to become inaccessible.
• Fixed moving queue items up and down the list. The up and down button were not functioning.
• Ensure that when a play on time element is two or more automation elements away, the loop checks for its start time and removes the middle item(s) so that the next loop would stop the current audio and play the element
• Fixed fading in/out volume control. Was not fading in/out correctly.
• Last play date on media was not updating correctly. Fixed.
• Play on time element was repeating if last in queue and causes players to play the same element on both players. Fixed.
• If you modify the queue while automation was pressed the system wasn’t retrieving the correct next audio element to play. Fixed.
• When a �play on time� item is in the queue and the audio elements before it finish before their scheduled time, say because someone stopped them or someone deleted items from the queue while in automation, the �play on time� item was running regardless of its start time. The automation engine now checks to confirm whether an item has the flag �play on time� checked and compares its scheduled time to the current time. If there is a difference is more than 5 seconds, it will clear the queue and retrieve new items from the database, filling in the gap.
• Disabled parent / child program element creation. Was causing a program elements overlap error when saving new program elements. This feature was removed many versions ago, but the element creation functionality remained.
• Fixed translations. All languages other than English were failing on some systems because of wrong icons. Not sure why some systems and not all, but adding the icons to the resource file for those languages / locales fixes it.
• Two songs with the same name in the queue list will cause the up and down arrows to fail moving them up and down the list. Only the first song matched by name will move up and down the list. Fixed.
• Fixed an issue that was causing the queue to send messages to the remoteplayer, when an audio file was not opening correctly on the client, causing it to stop the palyback of the current audio file. An error message will pop up if the file can’t be opened in the client, but it should not send any instruction back to the remoteplayer.
2.5.6.4 Changes
List of new features / changes:
• Queue list now colours the media name background based on the type of media (commercials are in plum colour, news clips are in gray, and jingles are in light yellow).
• Added ProgramRule table which is a mirror of ProgramElementRule. Added right menu to set rules for a program and changed the generate playlist to use the set programrule values to generate program elements with links. This change makes it easier to copy/paste programs and right click to generate a playlist without having to select a rule each time.
• FadeStop is now called on a new thread with provision to cancelling a fade stop when an open command is issued on the player after the fadestop thread has started running.
• Now you can change the jingle tab page name. Select the tab page then right click on it and see what happens. This is done at the user level. If you have administrator rights on the Jingles page, you will be asked if you want to save this new name to all users. If you answer yes, all users will now have this jingle page renamed. Users will have to restart their session to see the new jingle page name.
• Station logo now displays between player1 and player2 on the queue player control.
• Jingle player and commercial player now remember their last float status, location, and position, at the user level.
• Jingle player will now highlight playing jingles in light green. Once the jingle stops playing, it will revert to its original back color.
• When users don’t have access to certain functionality, the buttons on the main menu will now be disabled. Here’s a brief summary of the privileges for each of the buttons that can be disabled for users.
Button Name |
Permission Name |
Commercial Player |
SpotCommercial |
Commercial Editor |
Create SpotCommercial Update SpotCommercial |
Scheduler |
Create ProgramElement Update ProgramElement |
Jingles |
UserJingle |
Media Editor |
Create Media Update Media |
Media Search |
Media |
News Editor |
Create NewsArticle Update NewsArticle |
News Player |
NewsArticle |
Settings |
Create Config Update Config |
Security |
Create UserPermission Update UserPermission |
• Created a new permission assignment screen to allow you to assign permissions by user group instead of by permission name.
• Added a new client plugin that allows you to import scheduled commercials from Excel spreadsheets. If the commercial falls within an existing scheduled commercial break, it will be added to that break, not necessarily the exact time of the commercial as defined in the Excel spreadsheet. However, if a commercial spot is not found where this commercial can be added to, the plugin will create a commercial spot. If a schedule doesn’t exist for the plugin to create a commercial break, it will create a single whole day schedule. So make sure you have your schedules defined before you start using this plugin. The spreadsheet you import has to have its worksheets formatted to a pre-defined format (see sample).
In cell (1,1) you have to specify the first data row number.
The first column is the date for the commercial. Second column onwards is the time during the day of the date in the first column when this commercial has to be scheduled.
Leave a blank first column cell at the end of the list of commercial schedule dates.
Leave a blank cell after the last time column.
The format of the date and time cells should be date/time.
The commercial name is always on the second row, first column.
• Disabled the simple scheduler. The design of schedules has changed with the introduction of program rules which act like the clocks in the simplified scheduler.
List of bug fixes:
• Lyricist and Composer were not populated from mp3 file tags when dragged and dropped on the media editor window. Both now are retrieved and updated during import. This is not the case for ogg files.
• Fixed login issues with users that belong to the DJ group. Issue was with saving user config on application exit. If the login fails for DJ’s, make sure they have the �Login� permission checked in permission assignment.
• Generate playlist in �Programs� was causing a wrong volume envelop to be created when the mixin and mixout values for the rule were set to 0. Fixed.
• Fixed a bug with the reports module. When you clicked on a report that had a parameter value incompatible with your current operating system locale, and error message displays and you couldn’t run the report. Now, instead, it sets the incompatible value to a default one so you could continue to run the report.
• Fixed a bug caused by deleting a grid, schedule, or program when a program has rules associated with it.
2.5.6.3 Changes
List of new features / changes:
• Simplified scheduler implemented. One schedule, one program. Display of elements in grid format and not tree view.
• Implemented hourly clocks and allow user to insert into schedule inside simple scheduler (to implement in full fledged scheduler too).
• Added configuration setting to control the speed of visual effects refresh rate.
• Added configuration settings for Automation Player to control whether the system should check for the player playing mode (playing, paused or stopped) before decided to load and play the next program element.
• Window color scheme now saved on exit for each user.
• Date / Time display color can be changed and saved per user.
• The UI language is now saved per user and restored after login.
• Added digital signal processors in a chain:
Users can enable or disable and configure these DSP’s individually.
• Create a recorder plugin which you can use to record the output of the default Windows audio card to an ogg, aac, or mp3 format with different configurable bit rates.
Also, it records timestamps of the media files being played by BP2X which will be used in a special player that can seek within the recorded file easily.
Each day is saved in a folder and the files are split by the hour.
• Float search control
• Generate playlist routine will now create ProgramElements with �PlayOnTime� set to false. In older versions, if you added a program to the queue and then clicked automate, it would have cleared the queue and loaded a new set of media files, because �PlayOnTime� was set to true.
• Progress Dialog will auto-close after 50 seconds from last progress update.
• Element rules now have the option of returning matches by count instead of timespan of the program element it is assigned to. Program element rules will run matching algorithm in sequence. The number of songs to return is different based on each occurrence of this rule; defaults to the elementRule Media Count value. Be careful of songs with a wide variance in duration. When you use the media count option, if you set the media count to 2 and the program element to 30 minutes and have songs 30 minutes long, the system will return two songs overlapping the subsequent program element. The system will look ahead to check for �playontime� one programelement only. If a program element or a program has multiple rules defined, they will be processed for matching media files in sequence, until it reaches a rule with media count set to 0. When there are multiple rules assigned to a program, the mix duration in, mix duration out and default mix values are used from the first rule in the list.
List of bug fixes:
• Fixed issue with commercial player consuming too much CPU and on some systems audio stutters.
• Fixed browser width setting between application restarts. The width was growing with each restart. Now it will retain the previous run width.
• When we select a program from the queue calendar icon, the queue on the remote player is now properly populated with program elements having �PlayOnTime� set to false.
• Sorted customer names in �Campaign� customer drop down combo.
• In �campaign scheduler�, when we refresh a drop down, the system was refreshing other drop downs and each one would subsequently hit the database to retrieve commercial schedules / grid. This has been fixed to only hit the database once after all combo boxes were refreshed.
• Changing passwords for logins is not working. Fixed.
2.5.6.0 Changes
List of new features:
• Added code to allow rebranding Broadcast Power. But still not accessible to the user.
• Improved the program selection from the Grid screen. When you click on the calendar icon you can now see the start and end time of each of the grids, schedules and programs, in addition to their name. This makes selection easier when you have the same program names in a schedule or the same schedule name within a grid.
• Added real-time view of automation object list. This list is view only. You can stop the currently playing audio file when in automation mode and the automation engine will play the following one. It does not allow you to sort items or insert new items in that list. If your objective is to manually manipulate the list, use manual mode.
• Add shortcut to swap between players (queue=1, jingle=2, and commercial=3) or numpad 1, 2, and 3 with the control key pressed.
• Added floating of the commercial player control.
• Added auto-retrieve of commercials and notification when a spot is due to play.
• Commercial types are now used during scheduling to separate commercials based on type. For every update, we check the whole spot for consecutive commercial types and separate them by other commercials within a spot or if none exist, we randomly select a Commercial of type filler.
• Nominate commercial start and commercial end (break in) (break out), using commercial type.
• Added ability to drag-drop audio files onto queue.
• Ignore Tags option when dragging and dropping files on the media control.
• Add sequence numbering to commercials instead of using creation order.
• Added bulk schedule commercials where you can select a campaign with its multiple commercials to schedule for a particular day on the same grid. This feature is similar to Power 98's bulk scheduler, with one additional feature, an unlimited number of commercials within a campaign can be scheduled on the same grid. The previous version had a limit of 7 commercials to bulk schedule.
• Added new report for commercials.
• Added capabilities to send messages between users and to broadcast messages to all users.
• Added multiple spot selection and loading. Users can now remove specific commercials from the spot before playing back.
• Added ability to select time interval to auto-retrieve commercials.
• Added reset function for a jingle page to clear all buttons.
• Improved the multi-track graphical editor. When you move a track while the shift key is pressed, all subsequent tracks move the same distance in the same direction. This is useful when you want to move a track at the top without messing up the timing of all subsequent tracks.
• Added ability to copy jingles from one page to any other for the same logged in user.
• Added two new media search fields: Intro & Outro.
• Added simulcast for commercials as option instead of default. Other option is to play next scheduled song or program. Effect of this feature is that commercials will be filled
• Changed player display to show song name, performer, and notes. User has to scroll to read.
• Changed play on time handling in automation to apply to any program element type instead of only commercial program elements. The design has been reviewed and improved.
• Change open dialog box for jingles to match media editor. Creates a more consistent UI experience.
List of bug fixes:
• Fixed a display bug when updating a program element. If you update a program element, the element rules will not refresh. The refresh routine was fixed.
• Fixed date and time issues in SQL statements when SQL Server is installed on a machine with date and time settings different to Australia.
• Fixed display of large audio files (MP3 files > 20 MB in size). The cached images in Broadcast Power are stored in JPEG format. JPEG has a limit of 64000 pixel widths in .NET. You can't see an error message but the file will not display in the graphical editor.
• Fixed commercial player playback halting when a commercial has a missing audio file. The player will now skip playing back the missing commercial and attempts to play the following if available.
• Fixed commercial player playback counter update.
• If a program element rule returns no matching songs, a blank error message was showing. The message is fixed to explain the error in detail and allow the user to change the rule.
• Fixed key shortcuts for floating jingles window.
• Fixed mouse click on jingle remaining time and elapsed time counters. Clicking on those counters is supposed to re-attach the jingle player with the jingle server. Now jingle player will re-attach itself to server after a jingle play event occurs on the client.
• Fixed deleting program elements to delete commercial spots unless they fall before current date.
• Fixed news player and editor to display news clip icon in right text position and made button a tad narrower.
• Fixed issue with automation engine improperly retrieving program elements when there is a non-defined gap between two subsequent program elements.
Known Issues:
• Known issue when copying multiple programs. If the copied programs were not created in sequence, they will be inserted in the sequence they were created causing the pasted programs to have unexpected start times. This bug is open and will be fixed in the next version.
2.5.5.8 Changes
1. Added filler for commercial spots where commercials don't line up properly to length of spot. There is a new media type "Filler". Only "Filler" audio files will be used to fill the gaps for commercial spots.
2. Fixed elementRule selection which was randomizing after applying criteria.
3. Jingle mix length was being set the same as the element rule. Now it is set to 0.5 seconds.
4. Changed commercial generation routine in order not to create child program elements. Child program elements were not automating as they should.
5. Removed support in client application for multi-level program elements (parent-child relationships for program elements).
6. Added reportviewer to the installer. This application was missing and users might not have been able to view the reports generated by BP2X because of it.
7. Fixed a null pointer during import of MP3 by dragging and dropping on Media Desk. Also, I have changed the code that reads MP3 tags. You should notice now that MP3 tags will be imported consistently.
8. Changed commercial generation routine to allow commercial spots less than 1 minute in length. Instead of minutes, the dialog box now allows you to enter the duration of a spot in seconds.
9. Added a new plugin (LOVE & HATE). This plugin allows you to tag a song as LOVE or HATE which translates to enabling/disabling the media file. Disabled media files are kept in the database and can be manually played, but the automation engine will not consider them when randomly or by criteria selecting songs. It also allows you to change the style of the currently playing audio file, as long as it is a song.
10. Fixed an index out of bound bug in Commercial Scheduler. This bug was happening when you are scheduling more than 31 days ahead. The code that was retrieving the commercials was returning one day too much.
11. The jingles window can now be floated and displayed at the same time as the other players. This is very handy if you have got two touch screens connected to your PC.
12. Fixed a bug in the player levels exceeding the maximum of 100. There was an out of range error in the program preventing it from painting properly.
13. The automation player was retrieving files every 58 minutes just to refresh its list. However, I have chosen to remove that condition and only refresh the list of files to play when the list currently playing is empty. It takes less than 2 seconds on my P4 3.2 GHz HT desktop computer to retrieve the next list. It can be quicker on faster machines.
14. Added cue points to media files: start, intro, Outro, mix in, and mix out. There is now a new button on the media editor dialog which allows you to set those values. Save the media file if you make any changes to the cue points.
15. Changed the player automation playback to use the cue points defined for media files.
16. Added display of Intro and Outro labels to players on the UI. Now the system will count down to the end of an Intro and the beginning of an Outro and will change the colour of the label.
17. Added a function to cue the player at the Start cue point, when defined, by pressing the ctrl key on your keyboard while clicking with your mouse on the cue button.
2.5.5.5 Changes
1. Added support for streaming plugin.
2. Created a new plugin to stream audio from the default sound card to an ICEcast or SHOUTcast server. This plugin or utility is available to donators.
3. Updated the NowPlayingWebExportPlugin to publish the 10 last played media files.
4. Updated the installer to include executable files required for streaming and the business objects service executable files. Note that although the application will use remoting when configured to use the business objects service instead of directly connecting to SQL Server, the reporting service and reports rely on directly connecting to SQL Server in this version. I might change this behaviour in future releases. Check my newsletter for more on the business objects service.
2.5.5.4 Changes
1. Updated error trapping for SQL Server with clarifying messages. Although this might be considered a security issue, BP2X will now display the database connection string if it can't find a valid connection to the database. A few users were experiencing authentication issues after installation and having the connection string displayed helps with resolving those issues.
There are four main types of errors which BP2X will look for:
A. MSSQL TCP/IP disabled
B. Invalid instance of MSSQL defined
C. Wrong password defined in the connection string
D. Database schema not found
The number of error messages are reduced, when failing to find MSSQL server.
Upon hitting one of the errors above, BP2X will either direct you to the forum entry on my website to read more on this error, or it will dispaly the schema creation dialog box for D above.
2. Changed installer to overwrite files always instead of overwriting only if the file being copied is newer. This means that from now on, the installer will overwrite your config files. Make sure you keep backup copies of your installation before upgrading so you can easily modify the config file to match your configuration after an upgrade.
3. If the RemotePlayerHost application fails to authenticate the RPlayer user, it will exit. Previously it gave you an error message and continued attempting to start the application, displaying more error messages along the way.
4. Fixed database creation script to replace the default password for the user "APR User" with the one the user specified during installation. The value is picked up from the config file.
2.5.5.3 Changes
1. Fixed Media Search. There was a bug with the building of the condition statement. Result was always the full set of data in the database. Now it is filtering the result set properly based on the conditions provided.
2. Added Line-in automation functionality in 2.5.5.2 had a bug. A missing translation string was causing clicking on the "Program Elements" tab to throw an error. It is now fixed.
3. Added media drag and drop templating. You can specify defaults for dropped files and if mp3 or ogg have ID tags, they will replace the default values.
4. Fixed bug with reading ID3 version 3 tags which was causing an error with tags that have null values.
2.5.4.4 Changes
1. When you create a grid, the end date has 12:00 AM as time. This was causing a program overlap error when you try to create schedules or programs on the end date for the grid (Error 1001).
This version changed the grid creation (saving) behaviour to set the end date/time to 11:59:59:999 PM.
If you have grid you want to modify, simply select the grid, edit, then save.
2. There was an error in the campaign scheduler when you select the start date. Only one day was being populated, giving an object not set for following days. fixed.
3. Copy/Paste in campaign scheduler fixed and simplified, removing the need to set a start and end date.
4. There was a bug with one of the stored procedure (esp_CopySchedule) which is now fixed.
5. There was an error when moving from the program tab to program elements. Only occurs first time then works fine. Now fixed.
6. Added plugins engine to client (WinUI), with a sample export plugin.
2.5.4 Changes
1. Added new attribute for program elements (play on time). If set to false, songs will play in full before next program element is played. If user manually truncates a song in program elemnts, even if this parameter is set, it will not play in full. This parameter is critical for system genrated playlists.
For the playback engine to take this new parameter into consideration, it has to have program elements around it. This can be done in one of two ways:
a. Generate playlist from the program control
b. Add a program element for the time before the commercial or program element that should not start on set time, allowing previous song to play. Then assign this program element a rule (can be default rule).
2. Enhanced program song generation.
- generate songs was deleting existing program elements. Behaviour changed with a prompt so you can choose whether to delete.
- generate songs now fills in the blanks between existing program elements and allows for playontime.
3. Improved commercial generation routine in Grids, Schedules and Programs.
4. Replaced grid in commercial campaign scheduler
5. Fixed the commercial player (wasn't palying back)
2.5.3 Changes
1. Fixed right click on Grids form
2. Fixed the creation of the database on first startup - was causing a null pointer exception forcing users to restart the app after database is first created.
3. Reauthenticate automation thread every 15 minutes.
4. Display of song name in player when in automation mode.
5. New reporting engine
6. Plugin config button
Copyright � 2011, Emile Bassil
Created with the Freeware Edition of HelpNDoc: Create HTML Help, DOC, PDF and print manuals from 1 single source