<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Wiseman Softworks. Non-standard software development.</title>
	<atom:link href="http://wisemansoftworks.com/en/feed/" rel="self" type="application/rss+xml" />
	<link>http://wisemansoftworks.com/en</link>
	<description>Non-standard software development</description>
	<pubDate>Thu, 14 Apr 2011 16:42:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>&#171;Projects&#187; page update</title>
		<link>http://wisemansoftworks.com/en/2011/04/10/projects-page-update/</link>
		<comments>http://wisemansoftworks.com/en/2011/04/10/projects-page-update/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 14:39:40 +0000</pubDate>
		<dc:creator>wiseman</dc:creator>
		
		<category><![CDATA[Projects: WebDev]]></category>

		<guid isPermaLink="false">http://wisemansoftworks.com/en/?p=21</guid>
		<description><![CDATA[Recently, we have updated our projects page. Our most interesting web development projects are presented.
]]></description>
			<content:encoded><![CDATA[<p>Recently, we have updated our <a href="http://wisemansoftworks.com/en/projects/"  rel="nofollow">projects page</a>. Our most interesting web development projects are presented.</p>
]]></content:encoded>
			<wfw:commentRss>http://wisemansoftworks.com/en/2011/04/10/projects-page-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bounce Subscribers WP plugin</title>
		<link>http://wisemansoftworks.com/en/2011/03/17/wp-bounce-subscribers-plugin/</link>
		<comments>http://wisemansoftworks.com/en/2011/03/17/wp-bounce-subscribers-plugin/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 09:35:41 +0000</pubDate>
		<dc:creator>wiseman</dc:creator>
		
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://wisemansoftworks.com/en/?p=15</guid>
		<description><![CDATA[While creating another site, I&#8217;ve made such a simple plugin. It&#8217;s goal is simple also: subscribers are not allowed to enter your admin panel. After logging in, they are just &#8220;bounced&#8221; to whatever page you like (home page, by default).
Why it&#8217;s may be useful? 
You may create a private section of your site, and your [...]]]></description>
			<content:encoded><![CDATA[<p>While creating another site, I&#8217;ve made such a simple plugin. It&#8217;s goal is simple also: subscribers are not allowed to enter your admin panel. After logging in, they are just &#8220;bounced&#8221; to whatever page you like (home page, by default).<br />
Why it&#8217;s may be useful? <span id="more-15"></span><br />
You may create a private section of your site, and your subscribers can access it, by simply logging in. After their login and password are entered, they are redirected to certain page. And they are not entering your admin panel, which may confuse them a little bit <img src='http://wisemansoftworks.com/en/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . To mention more - you can hide some data (links, for example) just in your public posts. It&#8217;s easy - check the is_user_logged_in() statement and then choose which message to show.<br />
If this last sentence seams confusing to you - never mind. You can use this plugin just as an additional security precaution. Install it, if you suppose your subscribers have nothing to do in your admin panel.<br />
Plugin is VERY simple - 5 lines of code, actually. But this simplicity can give you some bonuses <img src='http://wisemansoftworks.com/en/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Download <a href="http://wisemansoftworks.com/_misc/wp_bounce_subscribers.zip"  rel="nofollow">wp_bounce_subscribers.zip</a> (350 bytes)</p>
]]></content:encoded>
			<wfw:commentRss>http://wisemansoftworks.com/en/2011/03/17/wp-bounce-subscribers-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ergo CT#1 goes open-source!</title>
		<link>http://wisemansoftworks.com/en/2011/01/11/ergo-ct1-goes-open-source/</link>
		<comments>http://wisemansoftworks.com/en/2011/01/11/ergo-ct1-goes-open-source/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 20:14:14 +0000</pubDate>
		<dc:creator>wiseman</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Projects: Ergo]]></category>

		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://wisemansoftworks.com/en/?p=14</guid>
		<description><![CDATA[I&#8217;ve decided to share with all the world sources of my Ergo Concept Test #1. I hope they&#8217;ll help somebody on a hard way of gamedev, or just entertain a little bit :). If anybody gonna find some ideas of this CT interesting, or even better want to take part in further development - feel [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided to share with all the world sources of my <a href="http://wisemansoftworks.com/en/projects/ergo/ergo-concept-test-1/"  rel="nofollow">Ergo Concept Test #1</a>. I hope they&#8217;ll help somebody on a hard way of gamedev, or just entertain a little bit :). If anybody gonna find some ideas of this CT interesting, or even better want to take part in further development - feel free to contact me with any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://wisemansoftworks.com/en/2011/01/11/ergo-ct1-goes-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Custom interface elements</title>
		<link>http://wisemansoftworks.com/en/2009/03/29/custom-interface-elements/</link>
		<comments>http://wisemansoftworks.com/en/2009/03/29/custom-interface-elements/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 10:17:57 +0000</pubDate>
		<dc:creator>wiseman</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Interfaces]]></category>

		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://wisemansoftworks.com/en/?p=13</guid>
		<description><![CDATA[This article is  my first tutorial,  describing process of creating custom interface elements.
Every modern developer, who had to create interfaces,  no doubt, have used these modern WYSIWYG editors. Of course, this invention gives many advantages - simplicity of use and reduced development time to begin with. But there are  quite many  projects [...]]]></description>
			<content:encoded><![CDATA[<p>This article is  my first tutorial,  describing process of creating custom interface elements.</p>
<p>Every modern developer, who had to create interfaces,  no doubt, have used these modern <a href="http://en.wikipedia.org/wiki/WYSIWYG"  rel="nofollow">WYSIWYG</a> editors. Of course, this invention gives many advantages - simplicity of use and reduced development time to begin with. But there are  quite many  projects   where   standard interface elements are of no use at all. For example, multimedia applications,  games or just so-fond-of-design customer. There are two distinct ways to outflank standard interface elements.<br />
<span id="more-13"></span><br />
First one is a usage of stylized standard components. There are plenty of them all over internet. Some of them are free (quality is relevant). Different prices, different quality but average pack is worth $100-$200. It&#8217;s not so much, I can tell - and this way is quite suitable for everyone who wants to &#8220;decorate&#8221; an application without paying much attention to improper details. There are some disadvantages of this method: since you have no sources of your interface elements you can&#8217;t improve or tweak them for your liking. Sometimes you can buy sources along with components, but their prices can bite you : ).</p>
<p>Second way is a subject of this article - usage of custom interface elements. Main disadvantage here is obvious: more code to write and to support. But, in my opinion solving these problems is worth of trying, because in turn you&#8217;ll get more advantages - flexiblity of your interface and total control.</p>
<p>Enough theory let&#8217;s move to practice. My example is written in Delphi (my favorite :)) but you can use it&#8217;s principles with any language you like.</p>
<p>Let&#8217;s start simple - we&#8217;ll create root class for custom buttons first. It&#8217;ll look like:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;">TCustomButton <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span>
&nbsp;
ParentCanvas  <span style="color: #000066;">:</span> TCanvas<span style="color: #000066;">;</span>
&nbsp;
PosRect          <span style="color: #000066;">:</span> TRect<span style="color: #000066;">;</span>
&nbsp;
Selected      <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
Pressed       <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">constructor</span> Create<span style="color: #000066;">&#40;</span>Canvas<span style="color: #000066;">:</span> TCanvas<span style="color: #000066;">;</span> TheRect<span style="color: #000066;">:</span> TRect<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">virtual</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">destructor</span>  Destroy<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">override</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span>   ChangeWidth<span style="color: #000066;">&#40;</span>NewWidth <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>            <span style="color: #000000; font-weight: bold;">virtual</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">procedure</span>   ChangeHeight<span style="color: #000066;">&#40;</span>NewHeight <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>          <span style="color: #000000; font-weight: bold;">virtual</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">procedure</span>   ChangePosition<span style="color: #000066;">&#40;</span>NewLeft<span style="color: #000066;">,</span> NewTop <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>  <span style="color: #000000; font-weight: bold;">virtual</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span>    InRect<span style="color: #000066;">&#40;</span>X<span style="color: #000066;">,</span>Y <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">&#41;</span> <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span>   Draw<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>Classes&#8217;s fields in details:</p>
<p>ParentCanvas: TCanvas;<br />
Link to &#8220;parent&#8217;s&#8221; Canvas. Parent - is an object which contains our button, usually it&#8217;s a menu panel or eveb a form itself. We don&#8217;t create some buffer objects (with their own Canvas) for buttons. It is so, because we want to be able to use some special effects on our buttons. Like, for example, non-rectangular buttons or even buttons with holes in them :).  </p>
<p>PosRect: TRect;<br />
TRect object stores info containing button&#8217;s size and position on it&#8217;s parent.</p>
<p>Selected : boolean;<br />
Pressed : boolean;<br />
These field&#8217;s names are pretty self-pronounced. Info about button&#8217;s status is stored here.<br />
Selected - is true when cursor is hold above the button (it&#8217;s pretty simple to realize input focus movement from keyboard, as well).<br />
Pressed - button is pressed.</p>
<p>In my next article we&#8217;ll continue discussing this root button class and I&#8217;ll present first working example.</p>
]]></content:encoded>
			<wfw:commentRss>http://wisemansoftworks.com/en/2009/03/29/custom-interface-elements/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

