tag:blogger.com,1999:blog-84965449477802301572024-02-20T20:06:51.172-08:00Data Forms Action! Data Forms Action! A Forms editor for LinuxData Forms Action!http://www.blogger.com/profile/07857268732468667216noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-8496544947780230157.post-37023596827078066242014-11-09T12:25:00.000-08:002016-07-13T13:28:04.124-07:00Progress BarThe standard progress bar in gtk+ is usually fine for displaying progress, say on a dialog box and of course it's drawn nicely to your current theme.<br />
<br />
However there can be two problems with it, the first is that the busy animation is just dreadful. When you set the progress bar to that mode it animates a rectangle bouncing from side to side. There's something very reminiscent of Windows 95 in that, and it's not a very nice thing to look at.<br />
<br />
The second problem is that it always seem to obey the minimum size specified on the theme, and so a programmer can't choose how small to make the progressbar.<br />
<br />
So the only answer was to make a custom gtk control for progress and busy animations.<br />
<br />
Here it is as a progress bar and a busy bar in various sizes and types.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhCDkxtftg9G4TP_VpvB2N0SClPqZWZVNJGUI-c7Jo2KKSRSBrEfuVTbbPQYHd8koxAjoviLrB0zxeWTEfxstTwzZTquEuggggslQyCtXTK-ZAdeTfJd89CBKHP_HeiFQS1zCuQDgGC4/s1600/dfa-progress.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhCDkxtftg9G4TP_VpvB2N0SClPqZWZVNJGUI-c7Jo2KKSRSBrEfuVTbbPQYHd8koxAjoviLrB0zxeWTEfxstTwzZTquEuggggslQyCtXTK-ZAdeTfJd89CBKHP_HeiFQS1zCuQDgGC4/s1600/dfa-progress.gif" width="320" /></a></div>
<br />
<br />
In Data Forms Action the progress bar and busy bar are used when opening a page and refreshing the data sources on it for the first time. Therefore the progress bar has to show the progress as connections or queries finish, but also display a busy bar whilst the connections or queries are in progress, so the progress bar I developed here allows you to switch between the two.<br />
<br />
For the visual effect I've borrowed quite shamelessly from Mac OS X and used a barberpole animation as well as rounded corners.<br />
<br />
<br />
<br />Data Forms Action!http://www.blogger.com/profile/07857268732468667216noreply@blogger.com0tag:blogger.com,1999:blog-8496544947780230157.post-39341316735739079592014-10-20T12:50:00.000-07:002017-12-12T11:16:34.153-08:00Quickly Populating a Form in Data Forms Action! for Linux<br />
When building GUI applications, there can sometimes be a lot of tedious work involved in getting controls onto your form, laying them out and then binding them to data.<br />
<br />
<br />
Once you've decided on the data you want to display on a Form, the next step usually involves building a query to get the data and then drag-n-dropping each control onto the form; and finally binding each control to it's respective column on whichever resultset it takes its data from.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwnlLxg6KFgRj8hcbXKi0aOTH11MseOU8EvYB77DOlfIehIR4UDcCx-qsjd-1sU9xwQwyMnD0-kdwe-OYIMRh1R2iCRz3lwCbsjO1rnZJYyR-hLNCSwU6VYzuxRwafIIYzLGtZhsBUwHo/s1600/binding-a-control.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwnlLxg6KFgRj8hcbXKi0aOTH11MseOU8EvYB77DOlfIehIR4UDcCx-qsjd-1sU9xwQwyMnD0-kdwe-OYIMRh1R2iCRz3lwCbsjO1rnZJYyR-hLNCSwU6VYzuxRwafIIYzLGtZhsBUwHo/s640/binding-a-control.png" width="640" /></a></div>
<br />
<i>Adding a Data View control to a form and binding to a Datasource.</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPhhsDAwuEwcazKpFOdfCrTUPNoTk2o93Cr3xqd6zWxypdXLcNRq-gw8flwMbbdRoHcpJFboA6XjqyltfCarjkkocnKHDbsOZM-qHZfeOle0bYTmExHfuwN44Yvp8C-64ZzSTQCD_WGwU/s1600/event-binding-controls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPhhsDAwuEwcazKpFOdfCrTUPNoTk2o93Cr3xqd6zWxypdXLcNRq-gw8flwMbbdRoHcpJFboA6XjqyltfCarjkkocnKHDbsOZM-qHZfeOle0bYTmExHfuwN44Yvp8C-64ZzSTQCD_WGwU/s640/event-binding-controls.png" width="640" /></a></div>
<br />
<i>Adding Labels and Fields bound to the Data View.</i><br />
<br />
<br />
But wouldn't it be nice to automate that a bit, so that you can could create the controls and bind them directly as you drop them on the Form?<br />
<br />
Well that's what <b>Data Forms Action!</b> now allows you to do via the 'Quick Controls' context menu.<br />
<br />
This popup dialog allows you to take any columns from a dataset which is bound to a data view, listbox or drop-down combo and directly create controls that can be placed straight onto the Form.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cK6arJWv2UNkD9aPzFznWUmYdqB6w0_Oh5yABaczuX-iW1lTzO8wJGNRMzepv1BEUfeqo5SG1XMkXEmDPx2UXDhPnzzUDp9hxO_CwWzX97s9UAc2JORETuEAZkGVmb-iO1Op3O2kUT0/s1600/the-quick-controls-window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cK6arJWv2UNkD9aPzFznWUmYdqB6w0_Oh5yABaczuX-iW1lTzO8wJGNRMzepv1BEUfeqo5SG1XMkXEmDPx2UXDhPnzzUDp9hxO_CwWzX97s9UAc2JORETuEAZkGVmb-iO1Op3O2kUT0/s640/the-quick-controls-window.png" width="640" /></a></div>
<br />
<i>The Quick Controls dialog.</i><br />
<br />
<br />
So here it is step by step.<br />
<br />
1. Drag a data view onto the Form and bind it to a dataset.<br />
<br />
2. Right-click the context menu to get the Quick Controls dialog.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQf6HruDB6CMBXbIFplEXgQ77PDtMXOSN1hQ87k4QgydkEa38zp0VwYm4Zbd11hGHlLC8PYp2YOFyeuFM64VSte_WVNFnvtFl2E3GUM9R4T99QRmwYng8fc3qsDVLkD_IyYtEHakVVphc/s1600/launching-quick-controls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQf6HruDB6CMBXbIFplEXgQ77PDtMXOSN1hQ87k4QgydkEa38zp0VwYm4Zbd11hGHlLC8PYp2YOFyeuFM64VSte_WVNFnvtFl2E3GUM9R4T99QRmwYng8fc3qsDVLkD_IyYtEHakVVphc/s640/launching-quick-controls.png" width="640" /></a></div>
<br />
3. Select the columns you want to appear on the Form and choose whether they are labels or fields.<br />
<br />
4. Drag the controls directly onto the Form.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyIJRK2UDHH7GBC_pLMAZ8gl6L0MQv37oHiTmxAqAc4gP10EPTQxqtnt3qXM3yltjCnV2iX1tcfkmXpZo-LaGb489CqMDotZicGyzFjXX7-iHCt7LTmGLims5k_N65Uey25eJacfxq_dg/s1600/dropping-controls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="329" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyIJRK2UDHH7GBC_pLMAZ8gl6L0MQv37oHiTmxAqAc4gP10EPTQxqtnt3qXM3yltjCnV2iX1tcfkmXpZo-LaGb489CqMDotZicGyzFjXX7-iHCt7LTmGLims5k_N65Uey25eJacfxq_dg/s640/dropping-controls.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
5. Ready to Run!</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiSSiL_hGw2HRCJCfElqMkHPnTSu81emb5rnrXCtTZFZuJq5VWgjw1xtzN70RP1jTxxmCdVLIrEK9jxnS4HdvWE3Q3_MC0CS59pDISggytA2Ex_1yjAKn8S-bO7qsqgQLxV8JL8rCPr4I/s1600/first-run.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="550" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiSSiL_hGw2HRCJCfElqMkHPnTSu81emb5rnrXCtTZFZuJq5VWgjw1xtzN70RP1jTxxmCdVLIrEK9jxnS4HdvWE3Q3_MC0CS59pDISggytA2Ex_1yjAKn8S-bO7qsqgQLxV8JL8rCPr4I/s640/first-run.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Obviously that's still a bit rough n' ready to accept as the final product, but with some minor adjustments that can be improved.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So after some small changes, resizing the controls and giving the name label a background color, here's the final result.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk6QjvJNP78cnvkdBnKK96VuYdJ1Q3AiEpdOxjNLgH8VCvNW-TlPcNrMCF560K-nDc2cCdLE79WWPX9QmDiQbqg-8Gg9Yq1j8Zg6R6YWxHO4kBlfNqY10AwMNopTkQSsu-ROrJUKXcej0/s1600/final-product.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="343" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk6QjvJNP78cnvkdBnKK96VuYdJ1Q3AiEpdOxjNLgH8VCvNW-TlPcNrMCF560K-nDc2cCdLE79WWPX9QmDiQbqg-8Gg9Yq1j8Zg6R6YWxHO4kBlfNqY10AwMNopTkQSsu-ROrJUKXcej0/s1600/final-product.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
This was created on Linux Mint, and all without writing one line of code.<br />
<br />
See what you can do with your data, download the demo here:<br />
<a href="http://www.data-forms-action.com/download.owr" target="_blank">Data Forms Action!</a> <br />
<br />Data Forms Action!http://www.blogger.com/profile/07857268732468667216noreply@blogger.com0tag:blogger.com,1999:blog-8496544947780230157.post-86478904119099374612014-09-28T05:00:00.001-07:002015-01-17T11:34:25.404-08:00What Is It and Why It Is<h2>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Data Forms Action! A Database Forms Builder</span></h2>
<h4>
</h4>
<h4>
What it is</h4>
Data Forms Action! is a Forms builder tool for Linux. Currently it supports Postgres and MySQL or MariaDB databases. The intention is to also support DB2, Oracle and Sybase in the future.<br />
<br />
It is also a Rapid Application Development (RAD) tool, which has the aim of making it as easy as possible for somebody with little experience of software development to build Forms for viewing and entering data.<br />
<br />
<h4>
Why it is</h4>
About 2 years ago when I first started developing Data Forms Action! I had some Postgres data that I wanted to view, and was looking for some quick tool that would allow me to throw some controls on a form and start looking at my data. A quick scan of the available software at that time didn't really come up with anything. The closest to what I was looking for was OpenOffice Base, but at the time that didn't support any other databases, and the GUI design element was pretty frustrating to use.<br />
<br />
So I thought to myself, what does it take to develop a simple RAD tool on Linux where I can:<br />
<ul>
<li>Connect to multiple databases and retrieve data.</li>
<li>Create simple interactive Forms where I can drag n' drop controls.</li>
<li>Edit the properties of these controls so I can set colour and font information.</li>
<li>Save the Form so that I can edit it, or share it with others.</li>
<li>Create a Forms player application so that others can simply run the Form as an application.</li>
</ul>
<br />
The answer to that is Data Forms Action!<br />
<br />
<a href="http://www.data-forms-action.com/"><span style="color: #0b5394;">www.data-forms-action.com</span></a><br />
<br />
<br />Data Forms Action!http://www.blogger.com/profile/07857268732468667216noreply@blogger.com0