Changeset 38 for conseil.py

Show
Ignore:
Timestamp:
07/14/06 23:58:33 (2 years ago)
Author:
ploum
Message:

#27 : ability to open a bug or a result in the web-browser
#38 : no bug error !

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • conseil.py

    r37 r38  
    1414        import gtk.glade 
    1515        import gobject 
     16        import gnome 
    1617except: 
    1718        sys.exit(1) 
     
    100101        # This function initialize an empty result tree 
    101102        def __treeInit__(self): 
     103                def callback_click(widget, event) : 
     104                        #middle click, open in background 
     105                        if event.button == 2 : 
     106                                print "TODO : open bug in background" 
     107                        #right click menu 
     108                        elif event.button == 3 : 
     109                                zetuple = widget.get_selection().get_selected() 
     110                                itera = zetuple[1] 
     111                                store = zetuple[0] 
     112                                def browser_callback(menuitem) : 
     113                                        #if we have not yet left clicked in the results 
     114                                        # itera will be None 
     115                                        # Fixme ! 
     116                                        if itera != None : 
     117                                                bugnbr = store.get_value(itera,0) 
     118                                                gnome.url_show(self.bts.getBugUrl(bugnbr)) 
     119                                browser = gtk.MenuItem("Open in a web browser") 
     120                                browser.connect("activate", browser_callback) 
     121                                browser.show() 
     122                                menu = gtk.Menu() 
     123                                menu.append(browser) 
     124                                menu.popup(None, None, None, event.button, event.time) 
    102125                #We add an empty tree result first 
    103126                listing = gtk.ListStore(gobject.TYPE_INT,gobject.TYPE_STRING) 
    104127                tree = gtk.TreeView(listing) 
     128                tree.connect("button-press-event",callback_click) 
    105129                renderer = gtk.CellRendererText() 
    106130                column = gtk.TreeViewColumn("Bug #", renderer, text=0) 
     
    225249        #We did a simple search 
    226250        def __searchDisplay(self, store,args): 
    227                 #First, we ask for the result as it can takes some times                         
    228                 tree=self.__treeInit__() 
    229                 tree.connect("row-activated", self.__row_clicked, tree.get_selection()) 
    230                 tree.set_headers_clickable(1) 
    231                 tree.set_rules_hint(1) 
    232                 tree.set_model(store) 
    233                 tab = gtk.ScrolledWindow() 
    234                 tab.show() 
    235                 tab.add(tree) 
     251                #First, we ask for the result as it can takes some times 
     252                if len(store) == 0 : 
     253                        tab = gtk.Label("No result matching your search") 
     254                        tab.show() 
     255                else : 
     256                        tree=self.__treeInit__() 
     257                        tree.connect("row-activated", self.__row_clicked, tree.get_selection()) 
     258                        tree.set_headers_clickable(1) 
     259                        tree.set_rules_hint(1) 
     260                        tree.set_model(store) 
     261                        tab = gtk.ScrolledWindow() 
     262                        tab.show() 
     263                        tab.add(tree) 
    236264                zepage = page(tab, args) 
    237265                self.insertTab(zepage)           
     
    250278        # (it will be nice one day, I swear...) 
    251279        def __bugDisplay(self, zebug, descr) : 
    252                 bugnbr=str(zebug.getNbr()) 
    253                 bugtemplate = "bug_template.glade" 
    254                 bugwidget = gtk.glade.XML(bugtemplate) 
    255                 widget_comments_nbr = bugwidget.get_widget("comments_nbr") 
    256                 # handle nicely plurals 
    257                 bugtotal = zebug.comNbr() 
    258                 if bugtotal > 1 : 
    259                         com_text = "%d comments : "%bugtotal 
     280                nbr = zebug.getNbr() 
     281                def callback_click(widget, event) : 
     282                        #middle click, open in background 
     283                        if event.button == 2 : 
     284                                print "What do you want to do with middle click ?" 
     285                        #right click menu 
     286                        elif event.button == 3 : 
     287                                def browser_callback(menuitem) : 
     288                                        gnome.url_show(self.bts.getBugUrl(nbr)) 
     289                                browser = gtk.MenuItem("Open in a web browser") 
     290                                browser.connect("activate", browser_callback) 
     291                                browser.show() 
     292                                menu = gtk.Menu() 
     293                                menu.append(browser) 
     294                                menu.popup(None, None, None, event.button, event.time)   
     295         
     296                if nbr < 0 : 
     297                        main_widget = gtk.Label("This specific bug doesnt exist") 
     298                        main_widget.show() 
    260299                else : 
    261                         com_text = "%d comment : "%bugtotal 
    262                 widget_comments_nbr.set_text(com_text) 
    263                 widget_comments = bugwidget.get_widget("com_frame") 
    264                 widget_nbr = bugwidget.get_widget("number")  
    265                 title_bugnbr = "Bug #%s :" %bugnbr 
    266                 widget_nbr.set_text(title_bugnbr) 
    267                 widget_title = bugwidget.get_widget("title")  
    268                 title_title = "%s" %zebug.getTitle() 
    269                 widget_title.set_text(title_title) 
    270                 widget_description = bugwidget.get_widget("description")  
    271                 widget_description.set_text(zebug.getDescription()) 
    272                 widget_status= bugwidget.get_widget("status") 
    273                 widget_status.set_text(zebug.getStatus()) 
    274                 widget_importance= bugwidget.get_widget("importance") 
    275                 widget_importance.set_text(zebug.getImportance()) 
    276                 widget_assignee= bugwidget.get_widget("assigned") 
    277                 widget_assignee.set_text(zebug.getAssignee()) 
    278                 widget_package= bugwidget.get_widget("package") 
    279                 widget_package.set_text(zebug.getPackage()) 
    280                 #inserting comments 
    281                 hbox = gtk.VBox(spacing=2) 
    282                 hbox.show() 
    283                 for i in zebug.getAllComments(): 
    284                         comwidget = gtk.glade.XML("comment.glade") 
    285                         comwidget.get_widget("poster").set_text(i.getAuthor()) 
    286                         comwidget.get_widget("title").set_text(i.getTitle()) 
    287                         comwidget.get_widget("date").set_text(i.getDate()) 
    288                         comwidget.get_widget("comment_body").set_text(i.getContent()) 
    289                         hbox.add(comwidget.get_widget("comment")) 
    290  
    291                 to_remove = bugwidget.get_widget("dummy_label") 
    292                 widget_comments.remove(to_remove) 
    293                 widget_comments.add(hbox) 
    294                 #We take the vbox to insert it 
    295                 main_widget = bugwidget.get_widget("bug_main") 
     300                        bugnbr=str(nbr) 
     301                        bugtemplate = "bug_template.glade" 
     302                        bugwidget = gtk.glade.XML(bugtemplate) 
     303                        widget_comments_nbr = bugwidget.get_widget("comments_nbr") 
     304                        # handle nicely plurals 
     305                        bugtotal = zebug.comNbr() 
     306                        if bugtotal > 1 : 
     307                                com_text = "%d comments : "%bugtotal 
     308                        else : 
     309                                com_text = "%d comment : "%bugtotal 
     310                        widget_comments_nbr.set_text(com_text) 
     311                        widget_comments = bugwidget.get_widget("com_frame") 
     312                        widget_nbr = bugwidget.get_widget("number")  
     313                        title_bugnbr = "Bug #%s :" %bugnbr 
     314                        widget_nbr.set_text(title_bugnbr) 
     315                        widget_title = bugwidget.get_widget("title")  
     316                        title_title = "%s" %zebug.getTitle() 
     317                        widget_title.set_text(title_title) 
     318                        widget_description = bugwidget.get_widget("description")  
     319                        widget_description.set_text(zebug.getDescription()) 
     320                        widget_status= bugwidget.get_widget("status") 
     321                        widget_status.set_text(zebug.getStatus()) 
     322                        widget_importance= bugwidget.get_widget("importance") 
     323                        widget_importance.set_text(zebug.getImportance()) 
     324                        widget_assignee= bugwidget.get_widget("assigned") 
     325                        widget_assignee.set_text(zebug.getAssignee()) 
     326                        widget_package= bugwidget.get_widget("package") 
     327                        widget_package.set_text(zebug.getPackage()) 
     328                        #inserting comments 
     329                        hbox = gtk.VBox(spacing=2) 
     330                        hbox.show() 
     331                        for i in zebug.getAllComments(): 
     332                                comwidget = gtk.glade.XML("comment.glade") 
     333                                comwidget.get_widget("poster").set_text(i.getAuthor()) 
     334                                comwidget.get_widget("title").set_text(i.getTitle()) 
     335                                comwidget.get_widget("date").set_text(i.getDate()) 
     336                                comwidget.get_widget("comment_body").set_text(i.getContent()) 
     337                                hbox.add(comwidget.get_widget("comment")) 
     338 
     339                        to_remove = bugwidget.get_widget("dummy_label") 
     340                        widget_comments.remove(to_remove) 
     341                        widget_comments.add(hbox) 
     342                        #We take the vbox to insert it 
     343                        main_widget = bugwidget.get_widget("bug_main") 
     344                        main_widget.connect("button-press-event",callback_click) 
     345                 
    296346                zepage = page(main_widget, descr) 
    297347                self.insertTab(zepage)