<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Radio.. Yes same ol&#39; problem.</title>
		<link>http://www.allegro.cc/forums/view/591123</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 29 Apr 2007 08:28:30 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m STILL trying to finish this one function for a radio button class I&#39;ve been working on for the past 4 months called is_selected() but since I&#39;m an idiot, it&#39;s slightly difficult for me.</p><p>Basically I want the function to do this:</p><p>1) Check to see if the object that&#39;s stored in the vector is in fact of the radio button class by checking it&#39;s type. (type = radio) All my GUI objects are stored in the same vector.</p><p>2) Check to see what the group ID is.</p><p>3) Check to see if your mouse is hovered over the object.  The function for this is already done (is_hovered())</p><p>4) Check to see if you clicked on the object. If so, that object will become selected and all other objects within that group will become unselected. This will also return true. If nothing is clicked, then return false.</p><p>So outside the class it would be used something like this:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span>myRadioButtonInstance-&gt;is_selected<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="c">// do some stuff</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 00:55:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What exactly is the problem?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ixilom)</author>
		<pubDate>Mon, 23 Apr 2007 01:40:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That I have no clue how to make the function..  Suppose I could&#39;ve mentioned that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 01:43:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not really sure if I follow, but I&#39;ll try to write some sort of simplified code of what I think you&#39;re asking for
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>iter <span class="k3">=</span> vecWidgets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="c">// loop through all the widgets</span></td></tr><tr><td class="number">3</td><td><span class="k1">while</span><span class="k2">(</span>iter<span class="k3">!</span><span class="k3">=</span>vecWidgets.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <span class="c">// is it a radiobutton?</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">if</span><span class="k2">(</span>iter-&gt;type<span class="k3">=</span><span class="k3">=</span>wtRadio<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    <span class="c">// get a real pointer to the RadioButton class</span></td></tr><tr><td class="number">8</td><td>    CRadioButton <span class="k3">*</span>rb <span class="k3">=</span> <span class="k2">(</span>CRadioButton<span class="k3">*</span><span class="k2">)</span>iter<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="c">// is this one currently being clicked on?</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">if</span><span class="k2">(</span>rb-&gt;is_hovered<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> rb-&gt;is_clicked<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>      <span class="c">// we need to loop through the widgets again to find the other RadioButtons in the same GroupID</span></td></tr><tr><td class="number">12</td><td>      iter2 <span class="k3">=</span> vecWidgets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <span class="k1">while</span><span class="k2">(</span>iter2<span class="k3">!</span><span class="k3">=</span>vecWidgets.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>        <span class="c">// is this a radiobutton?</span></td></tr><tr><td class="number">15</td><td>        <span class="k1">if</span><span class="k2">(</span>iter2-&gt;type<span class="k3">=</span><span class="k3">=</span>wtRadio<span class="k2">)</span> <span class="k2">{</span> </td></tr><tr><td class="number">16</td><td>          <span class="c">// get real pointer to RadioButton class</span></td></tr><tr><td class="number">17</td><td>          CRadioButton <span class="k3">*</span>rb2 <span class="k3">=</span> <span class="k2">(</span>CRadioButton<span class="k3">*</span><span class="k2">)</span>iter2<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>          <span class="c">// is the radiobutton in the same group as the other (from outter while-loop)</span></td></tr><tr><td class="number">19</td><td>          <span class="k1">if</span><span class="k2">(</span>rb2-&gt;GroupID<span class="k3">=</span><span class="k3">=</span>rb-&gt;GroupID<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>            <span class="c">// change it's Selected property to true/false depending on whetter its the clicked one or not</span></td></tr><tr><td class="number">21</td><td>            rb2-&gt;Selected <span class="k3">=</span> <span class="k2">(</span>rb2<span class="k3">=</span><span class="k3">=</span>rb<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>        <span class="k3">+</span><span class="k3">+</span>iter2<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>  <span class="k3">+</span><span class="k3">+</span>iter<span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
I&#39;m sure that could be optimized in like 10 ways, but I&#39;m too lazy <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" /></p><p>[Edit]<br />Sorry about the crappy intendation, wrote that in notepad <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ixilom)</author>
		<pubDate>Mon, 23 Apr 2007 02:01:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> going to take a closer look at that.</p><p>I made another post about this before, well similar to it and this was one of the examples given:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>vector<span class="k3">&lt;</span>radiobutton&gt; radios<span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">void</span> changeSelection<span class="k2">(</span><span class="k1">int</span> selection<span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  vector<span class="k3">&lt;</span>radiobutton&gt;::iterator selectedRadio <span class="k3">=</span> radios.at<span class="k2">(</span>selection<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">int</span> theGroup <span class="k3">=</span> selectedRadio-&gt;getGroup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <span class="k1">for</span><span class="k2">(</span>vector<span class="k3">&lt;</span>radiobutton&gt;::iterator curRadio <span class="k3">=</span> radios.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio <span class="k3">!</span><span class="k3">=</span> radios.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">if</span><span class="k2">(</span>curRadio <span class="k3">=</span><span class="k3">=</span> selectedRadio<span class="k2">)</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>      curRadio-&gt;selected <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">14</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>     <span class="k1">if</span><span class="k2">(</span>curRadio-&gt;getGroup<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> theGroup<span class="k2">)</span></td></tr><tr><td class="number">16</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>      curRadio-&gt;selected <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

The problem was I couldn&#39;t seem to alter it the way I wanted..  Like where would I stick in that is_hovered function, or to check to see if the object was clicked on?  The whole int selection part sorta confused me too.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 02:11:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As I see it, that function needs to be called when you have found the RadioButton that has been clicked (and hovering above it).<br />The parameter is the index in the vector of radiobuttons. Observe, its a separate vector for radiobuttons only, not all the widgets.</p><p>so, somewhere in your logic you would do something like
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">unsigned</span> <span class="k1">int</span> RadioIndex <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k1">while</span><span class="k2">(</span>RadioIndex <span class="k3">&lt;</span> radios.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
  <span class="k1">if</span><span class="k2">(</span>radios.at<span class="k2">(</span>RadioIndex<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>is_hovered<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bMouse <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
    changeSelection<span class="k2">(</span>RadioIndex<span class="k2">)</span><span class="k2">;</span>
    <span class="k1">break</span><span class="k2">;</span>
  <span class="k2">}</span>
  RadioIndex<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ixilom)</author>
		<pubDate>Mon, 23 Apr 2007 02:23:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There&#39;s no way to combine all that together in one function that will return a true once an object within the group is selected/clicked?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 02:32:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not really sure what you mean, but here goes <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>vector<span class="k3">&lt;</span>radiobutton&gt; radios<span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">bool</span> CheckRadioButtons<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <span class="k1">bool</span> bRadioWasSelected <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">int</span> RadioIndex <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <span class="k1">while</span><span class="k2">(</span>RadioIndex <span class="k3">&lt;</span> radios.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">if</span><span class="k2">(</span>radios.at<span class="k2">(</span>RadioIndex<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>is_hovered<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bMouse <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>      vector<span class="k3">&lt;</span>radiobutton&gt;::iterator selectedRadio <span class="k3">=</span> radios.at<span class="k2">(</span>selection<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">int</span> theGroup <span class="k3">=</span> selectedRadio-&gt;getGroup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">for</span><span class="k2">(</span>vector<span class="k3">&lt;</span>radiobutton&gt;::iterator curRadio <span class="k3">=</span> radios.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio <span class="k3">!</span><span class="k3">=</span> radios.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>        <span class="k1">if</span><span class="k2">(</span>curRadio <span class="k3">=</span><span class="k3">=</span> selectedRadio<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>          bRadioWasSelected <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>          curRadio-&gt;selected <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>        <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>curRadio-&gt;getGroup<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> theGroup<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>          curRadio-&gt;selected <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>    RadioIndex<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>  <span class="k1">return</span> bRadioWasSelected<span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ixilom)</author>
		<pubDate>Mon, 23 Apr 2007 02:45:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That looks promising!  I still don&#39;t know what getGroup() was suppose to be, though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 02:53:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m guessing it is a &quot;getter function&quot;, which basically just return an int that identifies that group (GroupID)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ixilom)</author>
		<pubDate>Mon, 23 Apr 2007 03:05:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm okay then.  Thank you again! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 23 Apr 2007 03:08:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I haven&#39;t done any GUI programming yet so I&#39;ll just spit my opinion, whatever it&#39;s worth. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>It sounds like the is_selected() method is supposed to do too much work. There should be events for mouse clicks or activation/deactivation, and there should be numerous methods for many of the things you want done with this one function. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>A GUI doesn&#39;t work well as a single thread.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 23 Apr 2007 08:02:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
A GUI doesn&#39;t work well as a single thread.
</p></div></div><p>
Funny, I would have said the opposite...:-X
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 23 Apr 2007 09:47:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It sounds like the is_selected() method is supposed to do too much work.
</p></div></div><p>

I&#39;ve been looking this over again and I think your probably right.  I might just put the for statement in a seperate function called updater() or something, which should look something like this:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> radioButton::updater<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">for</span> <span class="k2">(</span>curRadio <span class="k3">=</span> radios.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio <span class="k3">!</span><span class="k3">=</span> radios.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curRadio<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">if</span><span class="k2">(</span>this-&gt;is_hovered <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span><span class="n">1</span><span class="k2">)</span>
    <span class="k2">{</span>
      this-&gt;selected <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
      group-&gt;selected <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span> <span class="c">// everything that has the same group_id is made false</span>
    <span class="k2">}</span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

I just don&#39;t understand the whole, tracking-the-group-and-switching-its-bool-to-false, part.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Sun, 29 Apr 2007 08:28:30 +0000</pubDate>
	</item>
</rss>
