Skip to main content

一般查看器

项目描述

# 通用查看器 (GViewer)
[![构建状态](https://travis-ci.org/chhsiao90/gviewer.svg?branch=master)](https://travis-ci.org/chhsiao90/gviewer)
[ ![覆盖状态](https://coveralls.io/repos/github/chhsiao90/gviewer/badge.svg?branch=master)](https://coveralls.io/github/chhsiao90/gviewer?branch=master)

**简单、轻量、功能强大**
GViewer 是一个终端 UI 库,它依赖于 [urwid](https://github.com/urwid/urwid) 简化了编写基于 tui 的报告系统。
您可以编写一个功能强大的终端 UI,用越来越少的代码显示和操作数据。

## 安装
```shell
pip install gviewer
```

## 运行示例
示例中有一些示例提供了一些用例。
您可以查看并运行示例。

```shell
python examples/panama.py
```

## Usage

### Data Store

####StaticDataStore
用于静态数据列表,如日志文件
以 eny 类型的内容列表启动
内容将传输到稍后您定义的显示器用于显示

```python
from gviewer import StaticDataStore
data_store = StaticDataStore(data)
```

#### AsyncDataStore
用于异步数据列表,例如订阅 [zeromq](http://zeromq.org/)发布者

```python
def register_func(on_message):
some_listener.on_message(on_message)

data_store = AsyncDataStore(register_func)
```

### Displayer
定义了如何将数据从 Data Store 显示到摘要/详细信息

```python
from gviewer import BaseDisplayer, View, Group, PropsGroup, Text, Prop

class MyDisplayer(BaseDisplayer):
def to_summary(self, message):
"""
return a str or text markup
reference: http://urwid.org/manual/displayattributes.html#text-markup
"""
return message["summary "]

def get_views(self):
"""返回一个元组数组,其中包含视图标题和将消息转换为详细信息的函数""“
返回[
("view1", self.view1),
("view2", self.view2),
]

def view1(self, message):
"""return groups"""
return View(
[Group("title", [Text( m) for m in message["view1"]])]
)

def view2(self, message):
"""return groups"""
return View(
[PropsGroup("title", [Prop(p[0], p [1]) for p in message["view2"]])]
)
```

### GViewer
主类启动 tui
构造函数接受任何 urwid。MainLoop 参数启动自定义配置

```python
from gviewer import GViewer, DisplayerContext
context = DisplayerContext(data_store, displayer)
viewer = GViewer(context)
viewer.start()
```

## Advanced Usage
### Summary Actions
将函数绑定到特定键以应用自定义操作,例如:export
```python
from gviewer import GViewer, DisplayerContext

def custom_export(controller, message, widget, *args, **kwargs):
with open("export", "w") as f:
f.write(str(message))
controller.notify("file is export")

context = DisplayerContext(data_store, displayer, actions=Actions([("a", "Custom export", custom_export)]))
viewer = GViewer(context)
```

### View Actions
将函数绑定到特定键以应用自定义操作,例如:export
```python
from gviewer import View, BaseDisplayer
class MyDisplayer(BaseDisplayer):
def get_views(self):
return [("view", self.view)]

def view( self, message):
return View([], actions=Actions([("a", "Custom export", self.custom_export)]))

def custom_export(controller, message, *args, **kwargs):
with open ("export", "w") as f:
f.write(str(message))
controller.notify("file is export")
```

## 内置操作
### 摘要
- /: 搜索
- g : top
- G: bottom
- x: 清除当前项目
- X: 清除所有项目
- q: 退出
- ?: help

### 详细信息
- /: 搜索
- tab: 下一个视图
- shift+tab: 上一个视图
- n: 搜索下一个结果
- N: 搜索上一个结果
- e: 导出当前要归档的内容
- q: quit
- ?: help


## Contribution
请随意创建问题或创建 PR


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

gviewer-3.0.6.tar.gz (22.6 kB 查看哈希

已上传 source

内置分布

gviewer-3.0.6-py2-none-any.whl (37.1 kB 查看哈希

已上传 py2