Changeset 7805

Show
Ignore:
Timestamp:
02/24/08 00:11:56
Author:
jblum
Message:

callbacks in wxgui

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • grc/branches/grc_reloaded/src/grc/gui/SignalBlockParamsDialog.py

    r7742 r7805  
    6161                scrolled_window.add_with_viewport(vbox) 
    6262                self.vbox.pack_start(scrolled_window, True) 
    63                 self.original_data = list() 
    6463                #Error Messages for the block 
    6564                self._error_messages_box = err_box = gtk.VBox() 
     
    7069                #Add all the parameters 
    7170                for param in filter(lambda p: p.get_key() not in ('position',), self.block.get_params()):  
    72                         self.original_data.append(param.get_value()) 
    7371                        vbox.pack_start(param.get_input_object(self._handle_changed), False)     
    7472                vbox.pack_start(err_box, False) 
     
    122120                @return true if a change occured. 
    123121                """ 
     122                original_data = list() 
     123                for param in self.block.get_params(): 
     124                        original_data.append(param.get_value()) 
    124125                gtk.Dialog.run(self)             
    125126                self.destroy() 
    126                 self.data = list() 
     127                new_data = list() 
    127128                for param in self.block.get_params(): 
    128                         self.data.append(param.get_value()) 
    129                 return self.original_data != self.data 
     129                        new_data.append(param.get_value()) 
     130                return original_data != new_data 
    130131                         
  • grc/branches/grc_reloaded/src/grc/gui/elements/Param.py

    r7792 r7805  
    151151                #special markups if param is involved in a callback 
    152152                if hasattr(self.get_parent(), 'get_callbacks') and \ 
    153                         filter(lambda c: self.get_key() in c, self.get_parent().get_callbacks()): 
     153                        filter(lambda c: self.get_key() in c, self.get_parent()._callbacks): 
    154154                        name = '<span underline="low">%s</span>'%name            
    155155                if not self.is_valid():  
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Block.py

    r7777 r7805  
    9696        def get_make(self): return self.resolve_dependencies(self._make, to_code=True) 
    9797         
    98         def get_callbacks(self): return self._callbacks 
     98        def get_callbacks(self): 
     99                return map(lambda c: self.get_id() + '.' + self.resolve_dependencies(c, to_code=True), self._callbacks) 
    99100         
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/FlowGraph.py

    r7777 r7805  
    4343                namespace['__builtins__'] = __builtins__                 
    4444                namespace['gr'] = gr 
    45                 namespace['blks2'] = blks2 
    4645                namespace['firdes'] = firdes 
    4746                namespace['math'] = math 
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/Generator.py

    r7800 r7805  
    4242                all_blocks = self._flow_graph.get_blocks() 
    4343                #get imports 
    44                 imports = ['from gnuradio import gr'
     44                imports = ['from gnuradio import gr', 'from gnuradio.gr import firdes', 'import math', 'import cmath'
    4545                for block in all_blocks: imports.extend(block.get_imports()) 
    4646                imports = set(imports) #all entries unique 
     
    6969                        buttons = filter(lambda v: v.get_key() == 'variable_button', variables) 
    7070                        drop_downs = filter(lambda v: v.get_key() == 'variable_drop_down', variables) 
     71                        #all callbacks 
     72                        callbacks = list() 
     73                        for block in blocks: callbacks.extend(block.get_callbacks()) 
    7174                        #load the namespace 
    7275                        namespace = { 
     
    7982                                'blocks': blocks, 
    8083                                'connections': self._flow_graph.get_connections(), 
     84                                'callbacks': callbacks, 
    8185                        } 
    8286                        #build the template 
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/data/block_tree.xml

    r7794 r7805  
    99        <cat> 
    1010                <name>Sources</name> 
    11                 <block>signal_source</block>   
     11                <block>gr_sig_source_x</block>         
    1212                <block>noise_source</block>      
    1313                <block>vector_source</block>     
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/data/no_gui.tmpl

    r7800 r7805  
    4646#end for 
    4747 
    48 tb.run() 
     48tb.start() 
     49raw_input('Press Enter to quit: ') 
     50tb.stop() 
    4951 
  • grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/data/wx_gui.tmpl

    r7800 r7805  
    1111##@param buttons variable blocks for buttons 
    1212##@param drop_downs variable blocks for drop_downs 
     13##@param callbacks the block callback strings 
    1314######################################################## 
    1415#import time 
     
    2526$('"""') 
    2627 
     28#def make_callback($id) 
     29        #set $my_callbacks = filter(lambda c: id in c, $callbacks) 
     30        #if $my_callbacks 
     31                def callback(value): 
     32                        $id = value 
     33                #for $callback in $my_callbacks 
     34                        exec("""$callback""") 
     35                #end for 
     36        #else 
     37                def callback(value): pass#slurp 
     38        #end if          
     39#end def 
     40 
    2741#for $imp in $imports 
    2842$imp 
     43#end for 
     44 
     45#for $var in $variables 
     46$("%s = %s"%($var.get_id(), $var.get_make())) 
     47#end for 
     48 
     49#for $blk in $blocks 
     50$("%s = %s"%($blk.get_id(), $blk.get_make())) 
     51#end for 
     52 
     53tb = gr.top_block() 
     54 
     55#for $con in $connections 
     56        #set $source = $con.get_source() 
     57        #set $sink = $con.get_sink() 
     58$("tb.connect((%s, %s), (%s, %s))"%( 
     59                $source.get_parent().get_id(),  
     60                $source.get_key(), 
     61                $sink.get_parent().get_id(),  
     62                $sink.get_key(), 
     63        ) 
     64) 
    2965#end for 
    3066 
     
    3773#end if          
    3874                self.SetSizeHints(400, 100) 
    39                 main_box = wx.BoxSizer(wx.VERTICAL) 
    40                  
    41                 def callback(): print "called!!!" 
    42                  
     75                main_box = wx.BoxSizer(wx.VERTICAL)              
    4376#for $slider in $sliders 
     77$make_callback($slider.get_id()) 
    4478                slider = Controls.Slider( 
    4579                        window=self,  
     
    5387                main_box.Add(slider, 0, wx.ALIGN_CENTER) 
    5488#end for                 
    55                  
    5689#for $drop_down in $drop_downs 
     90$make_callback($drop_down.get_id()) 
    5791                drop_down = Controls.DropDown( 
    5892                        window=self,  
     
    6397                ) 
    6498                main_box.Add(drop_down, 0, wx.ALIGN_CENTER) 
    65 #end for                 
    66  
     99#end for 
    67100#for $button in $buttons 
     101$make_callback($button.get_id()) 
    68102                button = Controls.Button( 
    69103                        window=self,  
     
    75109                ) 
    76110                main_box.Add(button, 0, wx.ALIGN_CENTER) 
    77 #end for         
    78                  
     111#end for                 
    79112                self.Bind(wx.EVT_CLOSE, self._quit)      
    80113                self.SetSizerAndFit(main_box) 
    81114                self.Show() 
     115                tb.start() 
    82116                         
    83117        def _quit(self, event): 
    84118                self.Destroy() 
    85                  
    86 class App(wx.App): 
    87          
    88         def __init__(self):              
    89                 wx.App.__init__(self, 0)         
    90                          
    91         def OnInit(self): 
    92                 self.SetTopWindow(Frame()) 
    93                 return True 
    94                  
    95 if __name__ == '__main__':       
    96         app = App() 
    97         app.MainLoop() 
    98         exit(0) 
     119                tb.stop() 
     120 
     121app = wx.App() 
     122app.SetTopWindow(Frame()) 
     123app.MainLoop() 
     124exit(0) 
    99125 
    100126 
  • grc/branches/grc_reloaded/src/grc_gnuradio/wxgui/Controls.py

    r7800 r7805  
    3535        def get_window(self): return self.window 
    3636         
    37         def get_callback(self): return self.callback 
     37        def call(self): return self.callback(self.get_value()) 
    3838         
    3939        def get_value(self): raise NotImplementedError 
     
    7777                self.state = not self.state 
    7878                self._set_button_label() 
    79                 try: self.get_callback()() 
     79                try: self.call() 
    8080                except Exception, e: print 'Error in handle change: "%s".'%e             
    8181 
     
    127127                A change is detected. Call the callback. 
    128128                """ 
    129                 try: self.get_callback()() 
     129                try: self.call() 
    130130                except Exception, e: print 'Error in handle change: "%s".'%e             
    131131 
     
    188188                """ 
    189189                slider_value = self.slider.GetValue()                    
    190                 return str(slider_value*(float(self.max)-float(self.min))/self.num_steps + float(self.min)
     190                return slider_value*(float(self.max)-float(self.min))/self.num_steps + float(self.min
    191191                 
    192192        def _set_slider_value(self, real_value): 
     
    204204                """ 
    205205                new_value = str(self.get_value())       #the new value must be a string! 
    206                 try: self.get_callback()() 
     206                try: self.call() 
    207207                except Exception, e: print 'Error in handle scroll: "%s".'%e  
    208208                self._set_slider_value(new_value) 
     
    214214                """      
    215215                new_value = str(self.text_box.GetValue())       #the new value must be a string!         
    216                 try: self.get_callback()() 
     216                try: self.call() 
    217217                except Exception, e: print 'Error in handle enter: "%s".'%e  
    218218                self._set_slider_value(new_value)