All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/6] perf scripts python: exported-sql-viewer.py: Add context menu
Date: Mon, 13 May 2019 17:09:27 -0300	[thread overview]
Message-ID: <20190513200927.GE3198@kernel.org> (raw)
In-Reply-To: <20190503120828.25326-6-adrian.hunter@intel.com>

Em Fri, May 03, 2019 at 03:08:27PM +0300, Adrian Hunter escreveu:
> Add a context menu (right-click) that provides options for copying to
> clipboard, including, for trees, the ability to copy only the cell under
> the mouse pointer.

Works as well:

    Committer testing:

      $ python ~acme/libexec/perf-core/scripts/python/exported-sql-viewer.py ~/c/adrian.hunter/simple-retpoline.db

      Simply right click and pick "Copy selection", that at this point has
      just the first line, not expanded, then see what was copied by pressing
      shift+control+v on a terminal:

    Call Path,Object,Count,Time (ns),Time (%),Branch Count,Branch Count (%)
    ▶ simple-retpolin,,,,,,

      Ditto after expanding, i.e. the selection continues to be just one
      line:

    Call Path           Object   Count   Time (ns)   Time (%)   Branch Count   Branch Count (%)
    ▼ simple-retpolin

       Now select all the lines with the mouse and control+shift+v again:

    Call Path                     Object             Count   Time (ns)   Time (%)   Branch Count   Branch Count (%)
      ▼ 14503:14503
        ▼ _start                  ld-2.28.so             1      156267      100.0          10602              100.0
          ▶ unknown               unknown                1        2276        1.5              1                0.0
          ▶ _dl_start             ld-2.28.so             1      137047       87.7          10088               95.2
          ▶ _dl_init              ld-2.28.so             1        9142        5.9            326                3.1
          ▼ _start                simple-retpoline       1        7457        4.8            182                1.7
            ▶ unknown             unknown                1         805       10.8              1                0.5
            ▶ __libc_start_main   libc-2.28.so           1        6347       85.1            179               98.4
 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
>  .../scripts/python/exported-sql-viewer.py     | 41 +++++++++++++++++++
>  1 file changed, 41 insertions(+)
> 
> diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py
> index 5804d9705ab7..421f3828ea43 100755
> --- a/tools/perf/scripts/python/exported-sql-viewer.py
> +++ b/tools/perf/scripts/python/exported-sql-viewer.py
> @@ -901,6 +901,8 @@ class TreeWindowBase(QMdiSubWindow):
>  		self.view.setSelectionMode(QAbstractItemView.ContiguousSelection)
>  		self.view.CopyCellsToClipboard = CopyTreeCellsToClipboard
>  
> +		self.context_menu = TreeContextMenu(self.view)
> +
>  	def DisplayFound(self, ids):
>  		if not len(ids):
>  			return False
> @@ -1674,6 +1676,8 @@ class BranchWindow(QMdiSubWindow):
>  
>  		self.ResizeColumnsToContents()
>  
> +		self.context_menu = TreeContextMenu(self.view)
> +
>  		self.find_bar = FindBar(self, self, True)
>  
>  		self.finder = ChildDataItemFinder(self.model.root)
> @@ -2483,6 +2487,39 @@ def CopyCellsToClipboardHdr(view):
>  def CopyCellsToClipboardCSV(view):
>  	CopyCellsToClipboard(view, True, True)
>  
> +# Context menu
> +
> +class ContextMenu(object):
> +
> +	def __init__(self, view):
> +		self.view = view
> +		self.view.setContextMenuPolicy(Qt.CustomContextMenu)
> +		self.view.customContextMenuRequested.connect(self.ShowContextMenu)
> +
> +	def ShowContextMenu(self, pos):
> +		menu = QMenu(self.view)
> +		self.AddActions(menu)
> +		menu.exec_(self.view.mapToGlobal(pos))
> +
> +	def AddCopy(self, menu):
> +		menu.addAction(CreateAction("&Copy selection", "Copy to clipboard", lambda: CopyCellsToClipboardHdr(self.view), self.view))
> +		menu.addAction(CreateAction("Copy selection as CS&V", "Copy to clipboard as CSV", lambda: CopyCellsToClipboardCSV(self.view), self.view))
> +
> +	def AddActions(self, menu):
> +		self.AddCopy(menu)
> +
> +class TreeContextMenu(ContextMenu):
> +
> +	def __init__(self, view):
> +		super(TreeContextMenu, self).__init__(view)
> +
> +	def AddActions(self, menu):
> +		i = self.view.currentIndex()
> +		text = str(i.data()).strip()
> +		if len(text):
> +			menu.addAction(CreateAction('Copy "' + text + '"', "Copy to clipboard", lambda: QApplication.clipboard().setText(text), self.view))
> +		self.AddCopy(menu)
> +
>  # Table window
>  
>  class TableWindow(QMdiSubWindow, ResizeColumnsToContentsBase):
> @@ -2506,6 +2543,8 @@ class TableWindow(QMdiSubWindow, ResizeColumnsToContentsBase):
>  
>  		self.ResizeColumnsToContents()
>  
> +		self.context_menu = ContextMenu(self.view)
> +
>  		self.find_bar = FindBar(self, self, True)
>  
>  		self.finder = ChildDataItemFinder(self.data_model)
> @@ -2622,6 +2661,8 @@ class TopCallsWindow(QMdiSubWindow, ResizeColumnsToContentsBase):
>  		self.view.setSelectionMode(QAbstractItemView.ContiguousSelection)
>  		self.view.CopyCellsToClipboard = CopyTableCellsToClipboard
>  
> +		self.context_menu = ContextMenu(self.view)
> +
>  		self.ResizeColumnsToContents()
>  
>  		self.find_bar = FindBar(self, self, True)
> -- 
> 2.17.1

-- 

- Arnaldo

  reply	other threads:[~2019-05-13 20:09 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-03 12:08 [PATCH 0/6] perf scripts python: exported-sql-viewer.py: Minor improvements Adrian Hunter
2019-05-03 12:08 ` [PATCH 1/6] perf scripts python: exported-sql-viewer.py: Fix error when shrinking / enlarging font Adrian Hunter
2019-05-13 19:57   ` Arnaldo Carvalho de Melo
2019-05-18  8:55   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-05-03 12:08 ` [PATCH 2/6] perf scripts python: exported-sql-viewer.py: Move view creation Adrian Hunter
2019-05-18  8:54   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-05-03 12:08 ` [PATCH 3/6] perf scripts python: exported-sql-viewer.py: Add tree level Adrian Hunter
2019-05-18  8:55   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-05-03 12:08 ` [PATCH 4/6] perf scripts python: exported-sql-viewer.py: Add copy to clipboard Adrian Hunter
2019-05-13 20:03   ` Arnaldo Carvalho de Melo
2019-05-18  8:56   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-05-03 12:08 ` [PATCH 5/6] perf scripts python: exported-sql-viewer.py: Add context menu Adrian Hunter
2019-05-13 20:09   ` Arnaldo Carvalho de Melo [this message]
2019-05-18  8:57   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-05-03 12:08 ` [PATCH 6/6] perf scripts python: exported-sql-viewer.py: Add 'About' dialog box Adrian Hunter
2019-05-13 20:12   ` Arnaldo Carvalho de Melo
2019-05-18  8:58   ` [tip:perf/core] " tip-bot for Adrian Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190513200927.GE3198@kernel.org \
    --to=arnaldo.melo@gmail.com \
    --cc=adrian.hunter@intel.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.