2010-08-06 17:35:02 -03:00
# ifndef _PERF_UI_BROWSER_H_
# define _PERF_UI_BROWSER_H_ 1
2014-04-25 21:31:02 +02:00
# include <linux/types.h>
2010-08-06 17:35:02 -03:00
# define HE_COLORSET_TOP 50
# define HE_COLORSET_MEDIUM 51
# define HE_COLORSET_NORMAL 52
# define HE_COLORSET_SELECTED 53
# define HE_COLORSET_CODE 54
2012-04-02 12:59:01 -03:00
# define HE_COLORSET_ADDR 55
2013-03-28 11:34:10 -03:00
# define HE_COLORSET_ROOT 56
2010-08-06 17:35:02 -03:00
struct ui_browser {
2010-08-07 13:56:04 -03:00
u64 index , top_idx ;
void * top , * entries ;
perf ui browser: Add ->rows to disambiguate from ->height
The ui_browser->height is about the whole browser "window", including
any header, status lines or any other space needed for some "Yes", "No",
etc buttons a descendent browser, like hist_browser, may have.
Since the navigation is done mostly on the ui_browser methods, it needs
to know how many rows are on the screen, while details about what other
components are, say, if a header (that may be composed of multiple
lines, etc) is present.
Besides this we'll need to add a ui_browser->refresh_dimensions() hook
so that browsers like hist_browser can update ->rows in response to
screen resizes, this will come in a follow up patch.
This patch just adds ->rows and updates it when updating ->height, keeps
using ->height for the only other widget that can come with ui_browser,
the scrollbar, that goes on using all the height on the rightmost column
in the screen, using ->rows for the keyboard navigation needs.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-xexmwg1mv7u03j5imn66jdak@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-07-01 11:07:54 -03:00
u16 y , x , width , height , rows ;
2012-04-02 12:48:56 -03:00
int current_color ;
2010-08-06 17:35:02 -03:00
void * priv ;
2011-10-13 08:52:46 -03:00
const char * title ;
char * helpline ;
2014-07-01 16:34:42 -03:00
void ( * refresh_dimensions ) ( struct ui_browser * browser ) ;
2013-11-05 15:32:36 -03:00
unsigned int ( * refresh ) ( struct ui_browser * browser ) ;
void ( * write ) ( struct ui_browser * browser , void * entry , int row ) ;
void ( * seek ) ( struct ui_browser * browser , off_t offset , int whence ) ;
bool ( * filter ) ( struct ui_browser * browser , void * entry ) ;
2010-08-06 17:35:02 -03:00
u32 nr_entries ;
2011-10-18 14:31:35 -02:00
bool navkeypressed ;
bool use_navkeypressed ;
2010-08-06 17:35:02 -03:00
} ;
2012-04-02 12:48:56 -03:00
int ui_browser__set_color ( struct ui_browser * browser , int color ) ;
2013-11-05 15:32:36 -03:00
void ui_browser__set_percent_color ( struct ui_browser * browser ,
2010-08-11 14:51:47 -03:00
double percent , bool current ) ;
2013-11-05 15:32:36 -03:00
bool ui_browser__is_current_entry ( struct ui_browser * browser , unsigned row ) ;
void ui_browser__refresh_dimensions ( struct ui_browser * browser ) ;
void ui_browser__reset_index ( struct ui_browser * browser ) ;
2010-08-06 17:35:02 -03:00
2013-11-05 15:32:36 -03:00
void ui_browser__gotorc ( struct ui_browser * browser , int y , int x ) ;
2012-04-20 16:26:14 -03:00
void ui_browser__write_graph ( struct ui_browser * browser , int graph ) ;
2012-04-27 16:27:52 -03:00
void __ui_browser__line_arrow ( struct ui_browser * browser , unsigned int column ,
2012-05-03 13:12:49 -03:00
u64 start , u64 end ) ;
2011-02-25 11:33:31 -03:00
void __ui_browser__show_title ( struct ui_browser * browser , const char * title ) ;
void ui_browser__show_title ( struct ui_browser * browser , const char * title ) ;
2013-11-05 15:32:36 -03:00
int ui_browser__show ( struct ui_browser * browser , const char * title ,
2010-08-10 15:44:20 -03:00
const char * helpline , . . . ) ;
2013-11-05 15:32:36 -03:00
void ui_browser__hide ( struct ui_browser * browser ) ;
int ui_browser__refresh ( struct ui_browser * browser ) ;
2011-10-13 08:52:46 -03:00
int ui_browser__run ( struct ui_browser * browser , int delay_secs ) ;
2011-10-11 16:15:39 -03:00
void ui_browser__update_nr_entries ( struct ui_browser * browser , u32 nr_entries ) ;
2011-10-26 12:04:37 -02:00
void ui_browser__handle_resize ( struct ui_browser * browser ) ;
2012-05-03 13:07:05 -03:00
void __ui_browser__vline ( struct ui_browser * browser , unsigned int column ,
u16 start , u16 end ) ;
2011-10-26 12:04:37 -02:00
2011-10-29 12:15:04 -02:00
int ui_browser__warning ( struct ui_browser * browser , int timeout ,
const char * format , . . . ) ;
2011-10-26 12:04:37 -02:00
int ui_browser__help_window ( struct ui_browser * browser , const char * text ) ;
bool ui_browser__dialog_yesno ( struct ui_browser * browser , const char * text ) ;
2012-03-16 17:50:52 +09:00
int ui_browser__input_window ( const char * title , const char * text , char * input ,
const char * exit_msg , int delay_sec ) ;
2013-12-26 14:37:59 +09:00
struct perf_session_env ;
int tui__header_window ( struct perf_session_env * env ) ;
2010-08-06 17:35:02 -03:00
2011-10-26 07:11:03 -02:00
void ui_browser__argv_seek ( struct ui_browser * browser , off_t offset , int whence ) ;
unsigned int ui_browser__argv_refresh ( struct ui_browser * browser ) ;
2013-11-05 15:32:36 -03:00
void ui_browser__rb_tree_seek ( struct ui_browser * browser , off_t offset , int whence ) ;
unsigned int ui_browser__rb_tree_refresh ( struct ui_browser * browser ) ;
2010-08-06 17:35:02 -03:00
2013-11-05 15:32:36 -03:00
void ui_browser__list_head_seek ( struct ui_browser * browser , off_t offset , int whence ) ;
unsigned int ui_browser__list_head_refresh ( struct ui_browser * browser ) ;
2010-08-06 17:35:02 -03:00
void ui_browser__init ( void ) ;
2012-05-29 22:06:30 -03:00
void annotate_browser__init ( void ) ;
2010-08-06 17:35:02 -03:00
# endif /* _PERF_UI_BROWSER_H_ */