~mistrynitesh/clicompanion/python2.5

« back to all changes in this revision

Viewing changes to clicompanion.py

  • Committer: duanedesign
  • Date: 2010-09-20 01:15:23 UTC
  • mfrom: (47.1.3 fix-638243)
  • Revision ID: duanedesign@gmail.com-20100920011523-t2pikcf62sjay615
users can now enter commands that require multiple arguments in different places within the command

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#
20
20
#
21
21
 
 
22
import re
22
23
import sys
23
24
import pygtk
24
25
pygtk.require('2.0')
142
143
        dialog.run()
143
144
 
144
145
        ## user text assigned to a variable
 
146
 
145
147
        text = entry.get_text()
 
148
        user_input = text.split(' ')
 
149
 
146
150
        ## The destroy method must be called otherwise the 'Close' button will
147
151
        ## not work.
148
152
        dialog.destroy()
149
 
        return text
 
153
        return user_input
150
154
 
151
155
    def responseToDialog(self, text, dialog, response):
152
156
        dialog.response(response)
326
330
 
327
331
    def _filter_commands(self, widget, data=None):
328
332
        """Show commands matching a given search term.
329
 
 
330
333
        The user should enter a term in the search box and the treeview should
331
334
        only display the rows which contain the search term.
332
335
        Pretty straight-forward.
364
367
        widget = self.notebook.get_nth_page(pagenum)
365
368
        page_widget = widget.get_child()
366
369
 
367
 
        cmnd = CMNDS[row_int] ## CMNDS is where commands are stored
 
370
        ## CMNDS is where commands are stored
 
371
        cmnd = CMNDS[row_int] 
 
372
        ## find how many @(user arguments) are in command
 
373
        match = re.findall('@', cmnd) 
 
374
        #print match ## debug
 
375
        #match_group = match.group()
 
376
        
 
377
        '''
 
378
        Make sure user arguments were found. Replace @ with something
 
379
        .format can read. This is done so the user can just enter @, when
 
380
        adding a command where arguments are needed, instead
 
381
        of {0[1]}, {0[1]}, {0[2]}
 
382
        '''    
 
383
        if match == False:
 
384
            pass
 
385
        else:
 
386
            num = len(match)
 
387
            ran = 0
 
388
            new_cmnd = self.replace(cmnd, num, ran)
 
389
            print new_cmnd ## debug
 
390
 
368
391
        if not self.liststore[row_int][1] == " ": # command with user input
369
392
            text = Companion.get_info(self, text)
370
 
            page_widget.feed_child(cmnd+" "+text+"\n") #send command w/ input
 
393
            #print text ## debug
 
394
            print new_cmnd
 
395
            c = new_cmnd.format(text)
 
396
            print c ## debug
 
397
            page_widget.feed_child(c+"\n") #send command w/ input
371
398
            page_widget.show()
372
399
        else: ## command that has no user input
373
400
            page_widget.feed_child(cmnd+"\n") #send command
374
401
            page_widget.show()
375
402
            page_widget.grab_focus()
 
403
            
 
404
    ## replace @ with {0[n]}
 
405
    def replace(self, cmnd, num, ran):
 
406
        replace_cmnd=re.sub('@', '{0['+str(ran)+']}', cmnd, count=1)
 
407
        cmnd = replace_cmnd
 
408
        ran += 1
 
409
        if ran < num:
 
410
            return self.replace(cmnd, num, ran)    
 
411
        else:
 
412
            pass
 
413
        return cmnd     
376
414
 
 
415
            
 
416
        
 
417
        
 
418
        
377
419
    ## open the man page for selected command
378
420
    def man_page(self, widget, data=None):
379
421
        row_int = int(ROW[0][0]) # removes everything but number from EX: [5,]