|
From: <wa...@us...> - 2009-07-21 07:02:11
|
Revision: 19295
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=19295&view=rev
Author: wattsk
Date: 2009-07-21 07:02:06 +0000 (Tue, 21 Jul 2009)
Log Message:
-----------
Updates in prep for wrist test with latest Test Manager version
Modified Paths:
--------------
pkg/trunk/pr2/life_test/head_test/life_test/test_gui.launch
pkg/trunk/pr2/life_test/scripts/wrist_test.py
pkg/trunk/pr2/life_test/simple_test/fake_test.py
pkg/trunk/pr2/life_test/src/life_test/life_test.py
pkg/trunk/pr2/life_test/src/life_test/trans_monitor.py
pkg/trunk/pr2/life_test/src/life_test/ui.py
pkg/trunk/pr2/life_test/tests.xml
pkg/trunk/pr2/life_test/wrist_test/test_gui.launch
pkg/trunk/pr2/life_test/xrc/gui.fbp
Removed Paths:
-------------
pkg/trunk/pr2/life_test/wrist_test/test_gui_bar.launch
Modified: pkg/trunk/pr2/life_test/head_test/life_test/test_gui.launch
===================================================================
--- pkg/trunk/pr2/life_test/head_test/life_test/test_gui.launch 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/head_test/life_test/test_gui.launch 2009-07-21 07:02:06 UTC (rev 19295)
@@ -1,19 +1,16 @@
<launch>
<param name="robotdesc/pr2" command="$(find xacro)/xacro.py '$(find life_test)/head_test/life_test/head.xml'" />
-
<node machine="test_host_root" pkg="pr2_etherCAT" type="pr2_etherCAT" args="-i eth0 -x robotdesc/pr2"/>
-
<!-- Calibration -->
<node pkg="mechanism_bringup" type="calibrate.py"
args="$(find life_test)/head_test/cal_head.xml"
output="screen" />
-
- <!-- Runtime Diagnostics Logging -->
- <!--node pkg="rosrecord" type="rosrecord"
- args="-f ~/wrist_test.bag /diagnostics" /-->
<include file="$(find life_test)/head_test/life_test/life_test.launch" />
+ <node pkg="life_test" type="ethercat_test_monitor.py" args="$(find life_test)/head_test/head_trans.csv" />
+
+
</launch>
Modified: pkg/trunk/pr2/life_test/scripts/wrist_test.py
===================================================================
--- pkg/trunk/pr2/life_test/scripts/wrist_test.py 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/scripts/wrist_test.py 2009-07-21 07:02:06 UTC (rev 19295)
@@ -86,8 +86,9 @@
def main():
rospy.init_node('wrist_test', anonymous=True)
+
rospy.wait_for_service('spawn_controller')
-
+
resp = spawn_controller(xml_for_flex())
if len(resp.ok) < 1 or not ord(resp.ok[0]):
rospy.logerr("Failed to spawn effort controller")
@@ -114,17 +115,13 @@
else:
print "Spawned grip controller successfully"
- if fixed_to_bar:
- effort_flex = 1000
- effort_roll = 1000
- else:
- effort_flex = 6
- effort_roll = 3 # Turn down effort roll to make wrist flex up and down
-
-
-
+ effort_flex = rospy.get_param('flex_effort')
+ effort_roll = rospy.get_param('roll_effort')
+
effort_grip = -100
-
+
+ freq = rospy.get_param('cycle_rate')
+
try:
while not rospy.is_shutdown():
if random.randint(0, 1) == 1:
@@ -135,15 +132,11 @@
pub_grip.publish(Float64(effort_grip))
pub_flex.publish(Float64(effort_flex))
+ pub_roll.publish(Float64(effort_roll))
- if fixed_to_bar and random.randint(0, 5) == 1:
- pub_roll.publish(Float64(0))
- else:
- pub_roll.publish(Float64(effort_roll))
+ sleep(1.0 / freq)
- sleep(0.3)
-
finally:
kill_controller('grip_effort')
kill_controller('wrist_flex_effort')
Modified: pkg/trunk/pr2/life_test/simple_test/fake_test.py
===================================================================
--- pkg/trunk/pr2/life_test/simple_test/fake_test.py 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/simple_test/fake_test.py 2009-07-21 07:02:06 UTC (rev 19295)
@@ -88,7 +88,8 @@
self._start_time = rospy.get_time()
def on_mech_timer(self, event = None):
- self._mech_timer.Start(10, True)
+ if not rospy.is_shutdown():
+ self._mech_timer.Start(10, True)
# Joint state is a sine, period 1s, Amplitude 2,
trig_arg = rospy.get_time() - self._start_time
@@ -169,8 +170,8 @@
self.range_param_ctrl.SetValue(range_param)
def on_timer(self, event = None):
- print 'Making message'
- self._diag_timer.Start(1000, True)
+ if not rospy.is_shutdown():
+ self._diag_timer.Start(1000, True)
level_dict = { "OK": 0, "Warn": 1, "Error": 2 }
Modified: pkg/trunk/pr2/life_test/src/life_test/life_test.py
===================================================================
--- pkg/trunk/pr2/life_test/src/life_test/life_test.py 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/src/life_test/life_test.py 2009-07-21 07:02:06 UTC (rev 19295)
@@ -88,7 +88,6 @@
xrc_path = os.path.join(roslib.packages.get_pkg_dir('life_test'), 'xrc/gui.xrc')
self._panel = xrc.XmlResource(xrc_path).LoadPanel(self, 'test_panel')
- #self._test_data_panel = self._manager._xrc.LoadPanel(self, 'test_data')
self._test_desc = xrc.XRCCTRL(self._panel, 'test_desc')
self._test_desc.SetValue(self._test._desc)
@@ -388,7 +387,7 @@
self._launch_button.Enable(not self.is_launched())
self._close_button.Enable(not self.is_launched())
- def print_cur_log(self):
+ def display_logs(self):
kys = dict.keys(self._current_log)
kys.sort()
@@ -397,7 +396,8 @@
log_str += strftime("%m/%d/%Y %H:%M:%S: ",
localtime(ky)) + self._current_log[ky] + '\n'
- return log_str
+ self._log_ctrl.AppendText(log_str)
+ self._current_log = {}
def stop_if_done(self):
remain = self.calc_remaining()
@@ -426,11 +426,6 @@
if event is not None: # In GUI thread
self.update_controls()
-
- def display_logs(self):
-
- self._log_ctrl.AppendText(self.print_cur_log())
- self._current_log = {}
def status_callback(self, msg):
self._mutex.acquire()
@@ -450,7 +445,6 @@
self.stop_if_done()
self.update_controls(self._status_msg.test_ok, self._status_msg.message)
-
self._mutex.release()
@@ -469,10 +463,7 @@
# Include our launch file
launch += '<include file="$(find life_test)/%s" />' % self._test._launch_script
- # TODO: Check bag, make sure it's on the right topic
- # Record our diagnostics remaped back to local diagnostics
- launch += '<remap from="%s" to="/diagnostics" />' % local_diag_topic
- launch += ' <node pkg="rosrecord" type="rosrecord" args="-f /hwlog/test_runtime_automatic %s" />' % local_diag_topic
+ launch += ' <node pkg="rosrecord" type="rosrecord" args="-f /hwlog/test_runtime_automatic /diagnostics" />'
launch += '</group>\n</launch>'
@@ -520,7 +511,6 @@
self._monitor_panel.change_diagnostic_topic(local_diag)
self.update_controls()
- #self._diag_sub = rospy.Subscriber(local_diagnostics, DiagnosticMessage, self.diag_callback)
self._status_sub = rospy.Subscriber(local_status, TestStatus, self.status_callback)
Modified: pkg/trunk/pr2/life_test/src/life_test/trans_monitor.py
===================================================================
--- pkg/trunk/pr2/life_test/src/life_test/trans_monitor.py 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/src/life_test/trans_monitor.py 2009-07-21 07:02:06 UTC (rev 19295)
@@ -60,6 +60,8 @@
self._num_errors = 0
self._num_errors_since_reset = 0
self._rx_count = 0
+ self._max_position = -1000000
+ self._min_position = 10000000
def reset(self):
self._ok = True
@@ -72,7 +74,7 @@
return True # Don't bother with uncalibrated joints
if self._continuous: # Reset position to home value
- normalized = position % (2*math.pi) - math.pi # Between -pi, pi
+ position = position % (2*math.pi) - math.pi # Between -pi, pi
# Reverse for joints that have negative search velocities
cal_bool = cal_reading % 2 == 0
@@ -97,8 +99,8 @@
diag.strings.append(DiagnosticString(value=self._joint, label="Joint"))
diag.strings.append(DiagnosticString(value=self._actuator, label="Actuator"))
- diag.values.append(DiagnosticString(value=self._positive, label="Positive Joint"))
- diag.values.append(DiagnosticString(value=self._continuous, label="Continuous Joint"))
+ diag.strings.append(DiagnosticString(value=str(self._positive), label="Positive Joint"))
+ diag.strings.append(DiagnosticString(value=str(self._continuous), label="Continuous Joint"))
diag.values.append(DiagnosticValue(value=float(self._ref_position), label="Reference Position"))
diag.values.append(DiagnosticValue(value=float(self._deadband), label="Deadband"))
diag.values.append(DiagnosticValue(value=float(self._rx_count), label="Mech State RX Count"))
@@ -123,6 +125,8 @@
diag.strings.append(DiagnosticString(value=str(act_exists), label='Actuator Exists'))
diag.strings.append(DiagnosticString(value=str(joint_exists), label='Joint Exists'))
+
+
# First check existance of joint, actuator
if not (act_exists and joint_exists):
diag.level = 2
@@ -151,6 +155,12 @@
diag.values.append(DiagnosticValue(value=self._num_errors, label='Total Errors'))
diag.values.append(DiagnosticValue(value=self._num_errors_since_reset, label='Errors Since Reset'))
+
+ self._max_position = max(self._max_position, position)
+ diag.values.append(DiagnosticValue(value = self._max_position, label='Max Obs. Position'))
+
+ self._min_position = min(self._min_position, position)
+ diag.values.append(DiagnosticValue(value = self._min_position, label='Min Obs. Position'))
return diag, self._ok
Modified: pkg/trunk/pr2/life_test/src/life_test/ui.py
===================================================================
--- pkg/trunk/pr2/life_test/src/life_test/ui.py 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/src/life_test/ui.py 2009-07-21 07:02:06 UTC (rev 19295)
@@ -244,7 +244,7 @@
p_desc = param_xml.attributes['desc'].value
p_val = param_xml.attributes['val'].value
- p_rate = int(param_xml.attributes['rate'].value) == 1
+ p_rate = param_xml.attributes['rate'].value == 'true'
test_params.append(TestParam(p_name, p_param_name,
Modified: pkg/trunk/pr2/life_test/tests.xml
===================================================================
--- pkg/trunk/pr2/life_test/tests.xml 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/tests.xml 2009-07-21 07:02:06 UTC (rev 19295)
@@ -1,4 +1,4 @@
-<!-- Stores key data on every test that can run through the test manager -->
+<!-- Stores data on every test that can run through the test manager -->
<tests>
<test serial="faketes" name="Simple Test"
short="Fake" trac="007"
@@ -9,11 +9,11 @@
<!-- Load test parameters -->
<param name="Rate" param_name="cycle_rate"
desc="Changes the frequency of the test"
- rate="1" val="1.0" />
+ rate="true" val="1.0" />
<param name="Choice Param" param_name="test_choice"
desc="Chooses between a few choices"
- val="A" rate="0" />
+ val="A" rate="false" />
</test>
<test serial="6804213" name="Free Wrist Test"
@@ -23,29 +23,29 @@
type="Life Test" >
<param name="Rate" param_name="cycle_rate"
desc="Frequency of commands"
- val="3.0" rate="1" />
+ val="3.0" rate="true" />
<param name="Flex Effort" param_name="flex_effort"
desc="Wrist Flex Effort"
- val="4.0" rate="0" />
+ val="4.0" rate="false" />
<param name="Roll Effort" param_name="roll_effort"
desc="Wrist Roll Effort"
- val="3.0" rate="0" />
+ val="3.0" rate="false" />
</test>
<test serial="6804213" name="Fixed Wrist Test"
short="Wrist" trac="438"
desc="Test of wrist attached to a bar, jerking around."
- rate="3" script="wrist_test/test_gui_bar.launch"
+ rate="3" script="wrist_test/test_gui.launch"
type="Life Test" >
<param name="Rate" param_name="cycle_rate"
desc="Frequency of commands"
- val="3.0" rate="1" />
+ val="3.0" rate="true" />
<param name="Flex Effort" param_name="flex_effort"
desc="Wrist Flex Effort"
- val="4.0" rate="0" />
+ val="100.0" rate="false" />
<param name="Roll Effort" param_name="roll_effort"
desc="Wrist Roll Effort"
- val="3.0" rate="0" />
+ val="100.0" rate="false" />
</test>
@@ -53,39 +53,65 @@
<test serial="6804040" name="Head Life Test"
short="Head" trac="289"
desc="Tests head on test cart, moving between [-0.4, 1.4] tilt, [-2.7, 2.7] pan."
- rate="2.0" script="head_test/life_test/test_gui.launch"
- type="Life Test" />
+ script="head_test/life_test/test_gui.launch"
+ type="Life Test" >
+ <param name="Cycle rate" param_name="cycle_rate"
+ desc="Cycle rate of head"
+ val="2.0" rate="true" />
+ </test>
<test serial="6804040" name="Head Impact Test"
short="Head" trac="288"
desc="Impacts head, pan and tilt"
- rate="0.25" script="head_test/impact_test/test_gui.launch"
- type="Impact Test" />
+ script="head_test/impact_test/test_gui.launch"
+ type="Impact Test" >
+ <param name="Cycle rate" param_name="cycle_rate"
+ desc="Cycle rate of head"
+ val="0.25" rate="true" />
+ </test>
<test serial="6804139" name="Arm Cable Wrap Test"
short="Cable" trac="320/400"
desc="Tests arm cables."
rate="1.0" script="arm_life_test/test_gui.launch"
- type="Life Test" />
+ type="Life Test" >
+ <param name="Forearm Roll" param_name="forearm_roll"
+ desc="Forearm roll true/false"
+ val="false" rate="false" />
+ </test>
<!-- Add forearm roll cycle rate values -->
<test serial="6804139" name="Arm Cable Wrap Test - With Roll"
short="Cable" trac="320/400"
desc="Tests arm cables."
- rate="1.0" script="arm_life_test/test_roll_gui.launch"
- type="Life Test" />
+ script="arm_life_test/test_gui.launch"
+ type="Life Test" >
+ <param name="Forearm Roll" param_name="forearm_roll"
+ desc="Forearm roll true/false"
+ val="true" rate="false" />
+ <param name="Forearm roll rate" param_name="fore_roll_rate"
+ desc="Forearm roll rate"
+ val="1.0" rate="true" />
+ </test>
<test serial="6804178" name="Full Arm Counterbalance Test"
short="Full CB" trac="402"
desc="Moves arm up and down for full counterbalance workout."
- rate="0.5" script="arm_life_test/test_gui_cb.launch"
- type="Life Test" />
+ script="arm_life_test/test_gui_cb.launch"
+ type="Life Test" >
+ <param name="Cycle rate" param_name="cycle_rate"
+ desc="Cycle rate of arm/CB"
+ val="0.5" rate="true" />
+ </test>
<test serial="6804178" name="Full Arm CB Test - Dummy Forearm"
short="Dummy CB" trac="402"
desc="Moves arm up and down for full counterbalance workout."
- rate="0.5" script="arm_life_test/test_gui_cb_forearm.launch"
- type="Life Test" />
-
+ script="arm_life_test/test_gui_cb_forearm.launch"
+ type="Life Test" >
+ <param name="Cycle rate" param_name="cycle_rate"
+ desc="Cycle rate of arm/CB"
+ val="0.5" rate="true" />
+ </test>
</tests>
Modified: pkg/trunk/pr2/life_test/wrist_test/test_gui.launch
===================================================================
--- pkg/trunk/pr2/life_test/wrist_test/test_gui.launch 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/wrist_test/test_gui.launch 2009-07-21 07:02:06 UTC (rev 19295)
@@ -9,7 +9,9 @@
args="$(find life_test)/wrist_test/wrist_cal.xml"
output="screen" />
-
- <include file="$(find life_test)/wrist_test/life_test.launch" />
+ <node pkg="life_test" type="wrist_test.py" />
+ <node pkg="life_test" type="ethercat_test_monitor.py" />
+
+
</launch>
Deleted: pkg/trunk/pr2/life_test/wrist_test/test_gui_bar.launch
===================================================================
--- pkg/trunk/pr2/life_test/wrist_test/test_gui_bar.launch 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/wrist_test/test_gui_bar.launch 2009-07-21 07:02:06 UTC (rev 19295)
@@ -1,10 +0,0 @@
-<launch>
- <param name="robotdesc/pr2" command="$(find xacro)/xacro.py '$(find life_test)/wrist_test/wrist.xml'" />
-
- <node machine="test_host_root" pkg="pr2_etherCAT" type="pr2_etherCAT" args="-i eth0 -x robotdesc/pr2"/>
-
- <!-- Don't calibrate wrist attached to bar. -->
-
- <include file="$(find life_test)/wrist_test/life_test.launch" args="--bar" />
-
-</launch>
Modified: pkg/trunk/pr2/life_test/xrc/gui.fbp
===================================================================
--- pkg/trunk/pr2/life_test/xrc/gui.fbp 2009-07-21 06:47:35 UTC (rev 19294)
+++ pkg/trunk/pr2/life_test/xrc/gui.fbp 2009-07-21 07:02:06 UTC (rev 19295)
@@ -1195,21 +1195,74 @@
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer46</property>
- <property name="orient">wxHORIZONTAL</property>
+ <property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
- <object class="spacer" expanded="1">
- <property name="height">0</property>
- <property name="permission">protected</property>
- <property name="width">0</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer51</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxALIGN_RIGHT</property>
+ <property name="proportion">0</property>
+ <object class="wxButton" expanded="1">
+ <property name="bg"></property>
+ <property name="context_help"></property>
+ <property name="default">0</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="font"></property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Close</property>
+ <property name="maximum_size"></property>
+ <property name="minimum_size"></property>
+ <property name="name">close_button</property>
+ <property name="permission">protected</property>
+ <property name="pos"></property>
+ <property name="size">60,-1</property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnButtonClick"></event>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
- <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL</property>
+ <property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_BOTTOM</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="bg"></property>
@@ -1267,63 +1320,11 @@
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
- <object class="wxBoxSizer" expanded="0">
+ <object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer49</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
- <object class="sizeritem" expanded="1">
- <property name="border">5</property>
- <property name="flag">wxALL</property>
- <property name="proportion">0</property>
- <object class="wxButton" expanded="1">
- <property name="bg"></property>
- <property name="context_help"></property>
- <property name="default">0</property>
- <property name="enabled">1</property>
- <property name="fg"></property>
- <property name="font"></property>
- <property name="hidden">0</property>
- <property name="id">wxID_ANY</property>
- <property name="label">Close</property>
- <property name="maximum_size"></property>
- <property name="minimum_size"></property>
- <property name="name">close_button</property>
- <property name="permission">protected</property>
- <property name="pos"></property>
- <property name="size">60,-1</property>
- <property name="style"></property>
- <property name="subclass"></property>
- <property name="tooltip"></property>
- <property name="window_extra_style"></property>
- <property name="window_name"></property>
- <property name="window_style"></property>
- <event name="OnButtonClick"></event>
- <event name="OnChar"></event>
- <event name="OnEnterWindow"></event>
- <event name="OnEraseBackground"></event>
- <event name="OnKeyDown"></event>
- <event name="OnKeyUp"></event>
- <event name="OnKillFocus"></event>
- <event name="OnLeaveWindow"></event>
- <event name="OnLeftDClick"></event>
- <event name="OnLeftDown"></event>
- <event name="OnLeftUp"></event>
- <event name="OnMiddleDClick"></event>
- <event name="OnMiddleDown"></event>
- <event name="OnMiddleUp"></event>
- <event name="OnMotion"></event>
- <event name="OnMouseEvents"></event>
- <event name="OnMouseWheel"></event>
- <event name="OnPaint"></event>
- <event name="OnRightDClick"></event>
- <event name="OnRightDown"></event>
- <event name="OnRightUp"></event>
- <event name="OnSetFocus"></event>
- <event name="OnSize"></event>
- <event name="OnUpdateUI"></event>
- </object>
- </object>
</object>
</object>
</object>
@@ -2064,6 +2065,16 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="spacer" expanded="1">
+ <property name="height">0</property>
+ <property name="permission">protected</property>
+ <property name="width">0</property>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
@@ -2123,7 +2134,7 @@
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
- <object class="wxBoxSizer" expanded="0">
+ <object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer321</property>
<property name="orient">wxHORIZONTAL</property>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|