def createMenuItems(self, invoker):
        global immediate_data, compuracer_communication_lock
        self.invoker = invoker

        if not (invoker.getInvocationContext()
                == IContextMenuInvocation.CONTEXT_MESSAGE_EDITOR_REQUEST
                or invoker.getInvocationContext()
                == IContextMenuInvocation.CONTEXT_MESSAGE_VIEWER_REQUEST
                or invoker.getInvocationContext()
                == IContextMenuInvocation.CONTEXT_TARGET_SITE_MAP_TABLE
                or invoker.getInvocationContext()
                == IContextMenuInvocation.CONTEXT_PROXY_HISTORY):
            return None

        self.messages = self.invoker.getSelectedMessages()
        if self.messages is None:
            return None
        if len(self.messages) > 1:
            button_text = "Send {} requests to CompuRacer".format(
                len(self.messages))
        else:
            button_text = "Send request to CompuRacer"
        global racer_alive
        if not racer_alive:
            button_text += " (offline)"
        elif compuracer_communication_lock.locked():
            button_text += " (busy)"
        send_menu = JMenuItem(button_text,
                              actionPerformed=self.start_request_transmitter)
        option_menu = JCheckBoxMenuItem("Immediate mode",
                                        actionPerformed=self.mode_changed)
        option_menu.setSelected(immediate_data['mode'] == 'on')
        # self.set_icon(menu_send)
        send_menu.setEnabled(racer_alive
                             and not compuracer_communication_lock.locked())
        option_menu.setEnabled(racer_alive
                               and not compuracer_communication_lock.locked())
        return [send_menu, option_menu]
示例#2
0
    def createMenuItems(self, invoker):

        self.invoker = invoker

        self.selection = self.invoker.getSelectionBounds()

        context = self.invoker.getInvocationContext()
        if not (context == self.invoker.CONTEXT_MESSAGE_EDITOR_REQUEST
                or context == self.invoker.CONTEXT_MESSAGE_VIEWER_REQUEST
                or context == self.invoker.CONTEXT_MESSAGE_EDITOR_RESPONSE
                or context == self.invoker.CONTEXT_MESSAGE_VIEWER_RESPONSE):
            return None

        menu_translate_sel = JMenuItem(self.src_menu_text,
                                       actionPerformed=self.translate)
        menu_translate_sel.setEnabled(False)
        menu_translate_clip = JMenuItem(self.dst_menu_text,
                                        actionPerformed=self.translate)
        menu_translate_clip.setEnabled(False)

        if self.selection is not None and self.selection[0] != self.selection[
                1]:
            menu_translate_sel.setEnabled(True)
        if self.get_clipboard_text() is not None:
            menu_translate_clip.setEnabled(True)

        menu_header = JMenu(
            '%s v%s' %
            (BurpExtender.extension_name, BurpExtender.extension_version))
        menu_src = JMenu('Source Language [%s]' % (self.src))
        menu_dst = JMenu('Destination Language [%s]' % (self.dst))
        menu_automatic = JCheckBoxMenuItem('Automatic',
                                           actionPerformed=self.select_src)
        menu_src.add(menu_automatic)
        if self.src == menu_automatic.getText():
            menu_automatic.setSelected(True)
        for lang in sorted(langs):
            menu_item = JCheckBoxMenuItem(lang,
                                          actionPerformed=self.select_src)
            if lang == self.src:
                menu_item.setSelected(True)
            menu_src.add(menu_item)
            menu_item = JCheckBoxMenuItem(lang,
                                          actionPerformed=self.select_dst)
            if lang == self.dst:
                menu_item.setSelected(True)
            menu_dst.add(menu_item)

        menu_header.add(menu_src)
        menu_header.add(menu_dst)
        menu_header.add(menu_translate_sel)
        menu_header.add(menu_translate_clip)

        return [menu_header]