client

package module
v0.0.0-...-cf97640 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2023 License: MIT Imports: 14 Imported by: 0

README

webapi client

一个简单的 GUI 客户端,用于调用 go-webapi 库中相应协议开发的 Web API 。

安装

从源码

图形界面基于 Fyne 开发,编译源码需要本地有 gcc ,如果你本地没有, 可参考这里安装, Windows 建议安装 TDM-GCC 。

准备好环境后,执行:

go install github.com/cmstar/go-webapi-client/cmd/webapi-client@latest

在 Windows ,若直接双击运行 exe 会额外看到看到一个 cmd 窗口,如果不想看到这个窗口,可在安装时添加 -H=windowsgui 参数:

go install -ldflags -H=windowsgui github.com/cmstar/go-webapi-client/cmd/webapi-client@latest

编译较慢,需要耐心等待。

修改配置文件的存储路径

默认情况下,配置文件会被存储在用户的 home 目录的 .go-webapi-client 子目录:

  • 在 Mac/Linux 是 ~/.go-webapi-client
  • 在 Windows 是 %UserProfile%\.go-webapi-client

可以通过启动程序时添加 -c 参数来指定你想要的位置:

webapi-client -c=/my/favor/path

功能扩展

主窗口 client.MainWindow 支持在多个 client.Client 间的切换,每个 Client 表示一个界面。

package main

import (
	client "github.com/cmstar/go-webapi-client"
)

// 自己实现的 Client 接口。
var (
	myClient1 = NewMyClient1()
	myClient2 = NewMyClient2()
	myClient3 = NewMyClient3()
)

// 展示主窗体,可以通过菜单切换展示上面的三个 Client 。
func main() {
	client.RunClients([]client.Client{
		myClient1,
		myClient2,
		myClient3,
	})
}

Documentation

Overview

Package client runs a window with the fyne Framework. It provides features for calling web APIs from github.com/cmstar/go-webapi.

Index

Constants

View Source
const (
	DefaultWindowWidth  = 1440 // 默认的窗口宽度。
	DefaultWindowHeight = 800  // 默认的窗口高度。
)

Variables

This section is empty.

Functions

func GetDefaultConfigDir

func GetDefaultConfigDir() string

返回默认的配置存储目录。默认存储在用户的 home 目录的 .go-webapi-client 子目录。

  • 在 *nix 是 ~/.go-webapi-client
  • 在 Windows 是 %UserProfile%\.go-webapi-client

func RunClients

func RunClients(clients []Client)

运行并展示主窗体,在窗体中展示给定的 Client

会从程序的启动参数中读取下列参数,其余参数均使用默认值:

  • -c 指定配置文件的存储目录。

Types

type Client

type Client interface {
	// 唯一的标识一个 [Client] ,配置的保存和读取需要用到此值。
	// 应符合 Go 变量命名规则。
	Name() string

	// 界面展示的标题。
	Title() string

	// 读取当前界面的元素。
	Box() fyne.CanvasObject

	// 读取当前界面的配置。用于配置的保存和读取功能。
	GetConfig() map[string]any

	// 设置当前界面的配置。用于配置的保存和读取功能。
	SetConfig(config map[string]any)
}

描述一个 Web API 客户端的界面。

type ConfigManager

type ConfigManager struct {
	// contains filtered or unexported fields
}

用于读写配置。

配置存放在 rootPath 所指向的目录下,每个 ClientName 一个子目录, 每个 key 一个 .json 文件。

root
|- ClientName1
|  |- key1.json
|  |- key2.json
|- ClientName2
|  |- key1.json
|  |- key2.json

注意:

  • key 可以在不同的 ClientName 下重复。
  • Windows 平台的文件名是大小写不敏感的;*nix 则是敏感的。

func NewConfigManager

func NewConfigManager(rootPath string) *ConfigManager

创建一个 ConfigManager ,给定存放配置文件的根目录的路径。

func (*ConfigManager) ListKeys

func (x *ConfigManager) ListKeys(clientName string) []string

返回一个 clientName 下的所有配置项的 key ,按字典顺序排列。

clientName 子目录不存在时,返回 nil ;无效的配置会被忽略。

func (*ConfigManager) Load

func (x *ConfigManager) Load(clientName, key string) map[string]any

读取一个 clientName 下指定 key 的配置的值。 不会返回 nil ,若对应配置不存, 返回 nil 。 应先通过 ListKeys 获取相关的数据。

func (*ConfigManager) Remove

func (x *ConfigManager) Remove(clientName, key string)

移除 clientName 下指定 key 的配置。若配置不存在,操作被忽略。

func (*ConfigManager) Save

func (x *ConfigManager) Save(clientName, key string, conf map[string]any)

保存一个配置。若 key 在 clientName 下的配置中已存在,则覆盖原配置。 若配置目录或文件不存在,会被创建出来。

type MainWindow

type MainWindow struct {
	// contains filtered or unexported fields
}

程序的主界面。

func NewMainWindow

func NewMainWindow(op *MainWindowOption) *MainWindow

创建主界面。

func (*MainWindow) ShowAndRun

func (x *MainWindow) ShowAndRun()

运行并显示窗口。

type MainWindowOption

type MainWindowOption struct {
	ConfigPath string   // 指定存储配置的目录。若为空,则使用 [GetDefaultConfigDir] 。
	Width      float32  // 窗口的宽度。若为0,套用 [DefaultWindowWidth] 。
	Height     float32  // 窗口的高度。若为0,套用 [DefaultWindowHeight] 。
	Clients    []Client // 给定可在窗口内切换的 [Client] 。
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL