[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7713 - in grc/branches/grc_reloaded/src/grc: . elemen
From: |
jblum |
Subject: |
[Commit-gnuradio] r7713 - in grc/branches/grc_reloaded/src/grc: . elements gui gui/elements platforms/gnuradio_python |
Date: |
Fri, 15 Feb 2008 17:44:22 -0700 (MST) |
Author: jblum
Date: 2008-02-15 17:44:22 -0700 (Fri, 15 Feb 2008)
New Revision: 7713
Modified:
grc/branches/grc_reloaded/src/grc/ActionHandler.py
grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py
grc/branches/grc_reloaded/src/grc/elements/Param.py
grc/branches/grc_reloaded/src/grc/gui/Dialogs.py
grc/branches/grc_reloaded/src/grc/gui/SignalBlockParamsDialog.py
grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Block.py
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Port.py
Log:
fixed controllers, added enter hotkey, params dialog handler, nports working
Modified: grc/branches/grc_reloaded/src/grc/ActionHandler.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/ActionHandler.py 2008-02-16 00:16:52 UTC
(rev 7712)
+++ grc/branches/grc_reloaded/src/grc/ActionHandler.py 2008-02-16 00:44:22 UTC
(rev 7713)
@@ -96,6 +96,9 @@
#################### Delete ###############################
elif self.get_focus_flag() and keyname == 'Delete': #mouse
focus
self.handle_states(ELEMENT_REMOVE)
+ #################### Params ###############################
+ elif self.get_focus_flag() and keyname == 'Return': #mouse
focus
+ self.handle_states(BLOCK_PARAM_MODIFY)
#################### Rotate ###############################
elif self.get_focus_flag() and keyname == 'Right': #mouse focus
self.handle_states(BLOCK_ROTATE_RIGHT)
Modified: grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py 2008-02-16
00:16:52 UTC (rev 7712)
+++ grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py 2008-02-16
00:44:22 UTC (rev 7713)
@@ -67,8 +67,14 @@
@return the element list
"""
if self._options_block not in self._elements:
self._elements.append(self._options_block)
- #TODO stupidity
- self._elements = list(set(self._elements))
+ #ensure uniqueness of the elements list
+ element_set = set()
+ element_list = list()
+ for element in self._elements:
+ if element not in element_set:
element_list.append(element)
+ element_set.add(element)
+ #store cleaned up list
+ self._elements = element_list
return self._elements
def get_new_block(self, key):
Modified: grc/branches/grc_reloaded/src/grc/elements/Param.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/elements/Param.py 2008-02-16 00:16:52 UTC
(rev 7712)
+++ grc/branches/grc_reloaded/src/grc/elements/Param.py 2008-02-16 00:44:22 UTC
(rev 7713)
@@ -176,7 +176,7 @@
def get_value(self): return self._value
- def set_value(self, value): self._value = value
+ def set_value(self, value): self._value = str(value) #must be a string
def get_type(self): return
self.get_parent().resolve_dependencies(self._type)
Modified: grc/branches/grc_reloaded/src/grc/gui/Dialogs.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/Dialogs.py 2008-02-16 00:16:52 UTC
(rev 7712)
+++ grc/branches/grc_reloaded/src/grc/gui/Dialogs.py 2008-02-16 00:44:22 UTC
(rev 7713)
@@ -200,17 +200,18 @@
('Redo Change', 'Ctrl + y'),
('Redo Change', 'Ctrl + Z'),
('Delete Block', 'Delete'),
+ ('Modify Parameters', 'Enter'),
('Rotate Block', 'Right'),
('Rotate Block', 'Left'),
('Modify Data Type', 'Up'),
('Modify Data Type', 'Down'),
- ('Add a Socket', '+'),
- ('Remove a Socket', '-'),
+ ('Add a Port', '+'),
+ ('Remove a Port', '-'),
('Close Dialog', 'Esc'),
('Flow Graph Run', 'F5'),
('Flow Graph Stop', 'F7'),
('Screen Shot', 'PrintScreen'),
- ): markup = '%s\n<b>%s:</b>%s'%(markup, action,
hotkey.rjust(25-len(action),' '))
+ ): markup = '%s\n<b>%s:</b>%s'%(markup, action,
hotkey.rjust(25-len(action), ' '))
label = gtk.Label()
label.set_markup('<tt>%s</tt>\n'%markup) #append newline
self.vbox.pack_start(label, False)
Modified: grc/branches/grc_reloaded/src/grc/gui/SignalBlockParamsDialog.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/SignalBlockParamsDialog.py
2008-02-16 00:16:52 UTC (rev 7712)
+++ grc/branches/grc_reloaded/src/grc/gui/SignalBlockParamsDialog.py
2008-02-16 00:44:22 UTC (rev 7713)
@@ -82,8 +82,10 @@
the variable param will need an external update.
@param param the graphical parameter that initiated the
callback
"""
- #TODO
- #map(lambda p: p.update(), filter(lambda p:
p.is_type_dependent(), self.block.get_params()))
+ if param.is_enum():
+ for other_param in param.get_parent().get_params():
+ if param.get_key() in other_param._type:
other_param.update()
+ return True
def run(self):
"""!
Modified: grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py 2008-02-16
00:16:52 UTC (rev 7712)
+++ grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py 2008-02-16
00:44:22 UTC (rev 7713)
@@ -81,12 +81,14 @@
if not filter(lambda e: e.is_block() and e.get_id() ==
id, self.get_elements()):
vAdj =
self.get_scroll_pane().get_vadjustment().get_value()
hAdj =
self.get_scroll_pane().get_hadjustment().get_value()
- x = random.randint(100,400)+int(hAdj)
- y = random.randint(100,400)+int(vAdj)
+ x = random.randint(100,200)+int(hAdj)
+ y = random.randint(100,200)+int(vAdj)
+ #get the new block
block = self.get_new_block(key)
block.set_coordinate((x, y))
block.set_rotation(0)
- block.get_param('id').set_value(id)
+ block.get_param('id').set_value(id)
+ #handle new state
self.handle_states(BLOCK_CREATE)
self.update()
return
@@ -97,18 +99,51 @@
@param direction +1 or -1
@return true for success
"""
- if Element.is_port(self.selected_element):
self.selected_element = self.selected_element.get_parent()
- if Element.is_signal_block(self.selected_element): return
self.selected_element.modify_type_controller(direction)
+ if self.selected_element.is_source() or
self.selected_element.is_sink():
+ self.selected_element =
self.selected_element.get_parent()
+ if self.selected_element.is_block():
+ for child in self.selected_element.get_params() + \
+ self.selected_element.get_sources() + \
+ self.selected_element.get_sinks():
+ #find a param that controls a type
+ for param in self.selected_element.get_params():
+ if param.is_enum() and param.get_key()
in child._type:
+ #try to increment the enum by
direction
+ try:
+ keys =
param.get_option_keys()
+ old_index =
keys.index(param.get_value())
+ new_index = (old_index
+ direction + len(keys))%len(keys)
+
param.set_value(keys[new_index])
+ self.update()
+ return True
+ except: return False
return False
+
def port_controller_modify_selected(self, direction):
"""!
Change port controller for the selected signal block.
@param direction +1 or -1
@return true for success
- """
- if Element.is_port(self.selected_element):
self.selected_element = self.selected_element.get_parent()
- if Element.is_signal_block(self.selected_element): return
self.selected_element.modify_port_controller(direction)
+ """
+ if self.selected_element.is_source() or
self.selected_element.is_sink():
+ self.selected_element =
self.selected_element.get_parent()
+ if self.selected_element.is_block():
+ for get_ports_attr in ('get_sources', 'get_sinks'):
+ ports = getattr(self.selected_element,
get_ports_attr)()
+ if ports and hasattr(ports[0], 'get_nports')
and ports[0].get_nports():
+ #find the param that controls port0
+ for param in
self.selected_element.get_params():
+ if param.get_key() in
ports[0]._nports:
+ #try to increment the
port controller by direction
+ try:
+ value =
param.evaluate()
+ value = value +
direction
+ assert(0 <
value < 11)
+
param.set_value(value)
+ self.update()
+ return True
+ except: return False
return False
def param_modify_selected(self):
@@ -181,7 +216,6 @@
#check the elements
for element in reversed(self.get_elements()):
if element.what_is_selected(coor):
- #TODO remove broken with option block?
self.get_elements().remove(element)
self.get_elements().append(element)
return element.what_is_selected(coor)
Modified: grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Block.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Block.py
2008-02-16 00:16:52 UTC (rev 7712)
+++ grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Block.py
2008-02-16 00:44:22 UTC (rev 7713)
@@ -51,8 +51,44 @@
self._doc = doc
self._deps = deps
self._fcn = fcn
- self._callbacks = callbacks
+ self._callbacks = callbacks
+ def validate(self):
+ _Block.validate(self)
+ for ports, Port in (
+ (self._sources, self.get_parent().get_parent().Source),
+ (self._sinks, self.get_parent().get_parent().Sink),
+ ):
+ #how many ports?
+ num_ports = len(ports)
+ #do nothing for 0 ports
+ if not num_ports: continue
+ #get the nports setting
+ port0 = ports[str(0)]
+ nports = port0.get_nports()
+ #do nothing for no nports
+ if not nports: continue
+ #do nothing if nports is already num ports
+ if nports == num_ports: continue
+ #remove excess ports and connections
+ if nports < num_ports:
+ #remove the connections
+ for key in map(str, range(nports, num_ports)):
+ port = ports[key]
+ for connection in
port.get_connections():
+ self.remove_element(connection)
+ #remove the ports
+ for key in map(str, range(nports, num_ports)):
ports.pop(key)
+ continue
+ #add more ports
+ if nports > num_ports:
+ for key in map(str, range(num_ports, nports)):
+ n = port0._n
+ n['key'] = key
+ port = Port(self, n)
+ ports[key] = port
+ continue
+
def get_doc(self): return self._doc
def get_deps(self): return self._deps
Modified: grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Port.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Port.py
2008-02-16 00:16:52 UTC (rev 7712)
+++ grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Port.py
2008-02-16 00:44:22 UTC (rev 7713)
@@ -52,11 +52,11 @@
_Port.test(self)
if self.get_nports():
try: assert(int(self.get_key()) == 0)
- except (AssertionError,ValueError):
self._exit_with_error('Port key must be "0" when num ports is specified.')
+ except (AssertionError,ValueError):
self._exit_with_error('Port key must be "0" when nports is specified.')
try:
if self.is_sink():
assert(len(self.get_parent().get_sinks()) == 1)
elif self.is_source():
assert(len(self.get_parent().get_sources()) == 1)
- except AssertionError: self._exit_with_error('Other
ports not allowed when num ports is specified.')
+ except AssertionError: self._exit_with_error('Other
ports not allowed when nports is specified.')
def get_vlen(self):
"""
@@ -78,7 +78,10 @@
nports = self.get_parent().resolve_dependencies(self._nports)
#return blank if nports is blank
if not nports: return ''
- try: return int(self.get_parent().get_parent().evaluate(nports))
+ try:
+ nports =
int(self.get_parent().get_parent().evaluate(nports))
+ assert(nports > 0)
+ return nports
except: return 1
def get_optional(self): return bool(self._optional)
@@ -117,6 +120,7 @@
class Source(Port):
def __init__(self, block, n):
+ self._n = n #save n
#key is port index
n['key'] = str(block._source_count)
block._source_count = block._source_count + 1
@@ -125,6 +129,7 @@
class Sink(Port):
def __init__(self, block, n):
+ self._n = n #save n
#key is port index
n['key'] = str(block._sink_count)
block._sink_count = block._sink_count + 1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7713 - in grc/branches/grc_reloaded/src/grc: . elements gui gui/elements platforms/gnuradio_python,
jblum <=