public inbox for linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox