예제 #1
0
 def context_menu(self, x, y):
     """ Show context menu at the coordinate. """
     index = self.get_selected_entry_index()
     if index < 0: return
     _ = self.res.get
     popup = self._context_menu
     if popup is None:
         popup = PopupMenuWrapper(self.ctx, 
             (
                 MenuEntry(_("Go to Cell"), 4, 0, "goto"), 
                 MenuEntry(_("Go to"), 6, 1, "gotocell"), 
                 MenuEntry(_("Remove"), 8, 2, "delete"), 
                 MenuEntry("", -1, 3), 
                 MenuEntry(_("Up"), 10, 4, "up"), 
                 MenuEntry(_("Down"), 11, 5, "down")
             ), True)
         self._context_menu = popup
     
     if popup:
         addr = self.get_selected_entry_heading()
         state = False
         if addr:
             refs = self.model.get_cell_references(addr)
             if refs:
                 popup.setPopupMenu(
                     6, 
                     PopupMenuWrapper(
                         self.ctx, 
                         [MenuEntry(ref, i + 1000, i, "") 
                             for i, ref in enumerate(refs)], 
                         False
                     )
                 )
                 state = True
         popup.enableItem(6, state)
         popup.enableItem(10, self.is_selected_entry_moveable(True))
         popup.enableItem(11, self.is_selected_entry_moveable(False))
         
         ps = self.grid.getPosSize()
         n = popup.execute(self.cont.getPeer(), x + ps.X, y + ps.Y)
         if n > 0 and n < 1000:
             self.execute_cmd(popup.getCommand(n))
         elif n >= 1000:
             addr = refs[n - 1000]
             self.cmd_goto(addr)