Changeset 5 for conseil.py

Show
Ignore:
Timestamp:
07/03/06 16:46:20 (3 years ago)
Author:
ploum
Message:

clicking in the list works !

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • conseil.py

    r4 r5  
    1616 
    1717from protocol_dummy import protocol 
     18from bug import bug 
    1819 
    1920class MainWindow : 
     
    2324                #Set the Glade file 
    2425                self.gladefile = "conseil.glade"   
    25                 self.wTree = gtk.glade.XML(self.gladefile) 
     26                self.wTree = gtk.glade.XML(self.gladefile) 
    2627                self.bugs_tabs= self.wTree.get_widget("bugs_tabs")  
    2728                #Create our dictionay and connect it 
     
    3132                #Wich BTS are we using ? 
    3233                self.bts = protocol() 
     34 
     35        def __isint(self,x): 
     36                try: 
     37                        x = int(x) 
     38                        return 1 
     39                except: 
     40                        return 0 
    3341 
    3442        # This function initialize an empty result tree 
     
    5159                return tree 
    5260         
     61        def closeTab(self, widget): 
     62                # FIXME 
     63                # This is ugly as we don't close the clicked tab 
     64                # temporary ugliness 
     65                self.bugs_tabs.remove_page(self.bugs_tabs.get_current_page()) 
     66         
    5367        def simpleSearch_clicked(self, widget): 
    5468                searchString = self.wTree.get_widget("simple_search_entry").get_text() 
    55                 array = string.split(searchString,' ',1) 
    56                 if self.bts.packageExist(array[0]) : 
    57                         tab = self.__searchDisplay(self.bts.packageSearch(array[0],array[1])) 
     69                # Have we a single bug number ? 
     70                if self.__isint(searchString) : 
     71                        self.__bugDisplay(self.bts.retrieveBug(int(searchString))) 
     72                # no, we have a search. 
    5873                else : 
    59                         tab = self.__searchDisplay(self.bts.genericSearch(searchString)) 
    60                 self.bugs_tabs.insert_page(tab, None) 
     74                        array = string.split(searchString,' ',1) 
     75                        if self.bts.packageExist(array[0]) : 
     76                                self.__searchDisplay(self.bts.packageSearch(array[0],array[1])) 
     77                        else : 
     78                                self.__searchDisplay(self.bts.genericSearch(searchString)) 
     79                        #TODO : remplacer le none par un widget digne de ce nom 
     80                         
     81                        #self.bugs_tabs.insert_page(tab, None) 
    6182 
    6283        #We did a simple search 
     
    6485                #First, we ask for the result as it can takes some times                         
    6586                tree=self.__treeInit__() 
     87                handler = tree.connect("row-activated", self.__row_clicked, tree.get_selection()) 
     88                tree.set_headers_clickable(1) 
     89                tree.set_rules_hint(1) 
    6690                tree.set_model(store) 
    67                 return tree 
    68                          
    69         #package search 
     91                self.insertTab(tree,"résultat") 
     92 
     93        #Callback for the row_activated in a search view 
     94        def __row_clicked(widget, path, view_column, user_param1,data) : 
     95                zetuple = data.get_selected() 
     96                bug_nbr = zetuple[0].get_value(zetuple[1],0) 
     97                print "opening bug #"+str(bug_nbr) 
     98                widget.__bugDisplay(widget.bts.retrieveBug(bug_nbr)) 
     99         
     100 
     101        # This function takes a bug Object and then display it nicely 
     102        # (it will be nicely one day, I swear...) 
     103        def __bugDisplay(self, zebug) : 
     104                bugtemplate = "bug_template.glade" 
     105                bugwidget = gtk.glade.XML(bugtemplate) 
     106                widget_nbr = bugwidget.get_widget("number")  
     107                widget_nbr.set_text(str(zebug.getNbr())) 
     108                widget_title = bugwidget.get_widget("title")  
     109                widget_title.set_text(zebug.getTitle()) 
     110                widget_description = bugwidget.get_widget("description")  
     111                widget_description.set_text(zebug.getDescription()) 
     112 
     113                #We take the vbox to insert it 
     114                main_widget = bugwidget.get_widget("bug_main") 
     115                self.insertTab(main_widget,"bug #XXX") 
     116                #self.bugs_tabs.insert_page(main_widget, None) 
     117 
     118        # Adding a tab 
     119        def insertTab(self, widget, name) : 
     120                #this is ugly ! I don't want to use glade for this 
     121                label_widget=gtk.glade.XML("tab_label.glade") 
     122                dic = {"on_close_tab_clicked" : self.closeTab} 
     123                label_widget.signal_autoconnect(dic) 
     124                label=label_widget.get_widget("label1") 
     125                label.set_text(name) 
     126                top=label_widget.get_widget("hbox1") 
     127                tabid = self.bugs_tabs.insert_page(widget, top) 
     128                 
     129                 
    70130 
    71131if __name__ == "__main__":