Compare commits

...

2 Commits

Author SHA1 Message Date
sawka 8f7ffa5310 starting on command params 2024-03-18 14:28:09 -07:00
Evan Simkowitz c7b77608a2 Small UI tweaks (#467)
* Extend bottom border for mainview underneath window controls

* Make sidebar button hover color an accent color

* revert 87 to 88

* make mint less bright on light mode

* revert modal border change
2024-03-15 09:54:39 -07:00
6 changed files with 56 additions and 11 deletions
+2 -2
View File
@@ -51,7 +51,7 @@
/* global colors */
--app-bg-color: black;
--app-accent-color: rgb(88, 193, 66);
--app-accent-bg-color: rgba(88, 193, 66, 0.2);
--app-accent-bg-color: rgba(88, 193, 66, 0.25);
--app-error-color: rgb(229, 77, 46);
--app-warning-color: rgb(224, 185, 86);
--app-success-color: rgb(78, 154, 6);
@@ -222,5 +222,5 @@
--modal-bg-color: var(--app-bg-color);
--modal-header-bottom-border-color: rgba(241, 246, 243, 0.15);
--logo-button-hover-bg-color: #1e1e1e;
--logo-button-hover-bg-color: var(--app-accent-bg-color);
}
+1 -2
View File
@@ -23,6 +23,7 @@
/* tab color */
--tab-white: rgb(0, 0, 0, 0.6);
--tab-mint: rgb(70, 235, 156);
/* button colors */
--button-text-color: rgb(50, 50, 50); /* Dark gray for light theme */
@@ -72,6 +73,4 @@
/* toggle colors */
--toggle-thumb-color: var(--app-bg-color);
--logo-button-hover-bg-color: #f0f0f0;
}
+8 -5
View File
@@ -9,6 +9,10 @@
display: none;
}
.header-container {
border-bottom: 1px solid var(--app-border-color);
}
.header {
-webkit-app-region: drag;
display: flex;
@@ -18,7 +22,6 @@
vertical-align: middle;
padding: 0 10px 0 10px;
margin: 0;
border-bottom: 1px solid var(--app-border-color);
.title {
font-size: var(--title-font-size);
@@ -42,10 +45,10 @@
// This ensures the tab bar does not collide with the floating logo. The floating logo sits above the sidebar when it is not collapsed, so no additional margin is needed in that case.
// More margin is given on macOS to account for the traffic light buttons
#main.platform-darwin.mainsidebar-collapsed .header {
margin-left: var(--floating-logo-width-darwin);
#main.platform-darwin.mainsidebar-collapsed .header-container {
padding-left: var(--floating-logo-width-darwin);
}
#main:not(.platform-darwin).mainsidebar-collapsed .header {
margin-left: var(--floating-logo-width);
#main:not(.platform-darwin).mainsidebar-collapsed .header-container {
padding-left: var(--floating-logo-width);
}
+1 -1
View File
@@ -23,7 +23,7 @@ class MainView extends React.Component<{
className={cn("mainview", this.props.className)}
style={{ maxWidth: `calc(100vw - ${maxWidthSubtractor}px)` }}
>
<div className="header-container bottom-border">
<div className="header-container">
<header className="header">
<div className="title text-primary">{this.props.title}</div>
<div className="close-div hoverEffect" title="Close (Escape)" onClick={this.props.onClose}>
+1 -1
View File
@@ -716,7 +716,7 @@ func EvalCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (scbus.U
if rtnErr == nil {
update, rtnErr = HandleCommand(ctxWithHistory, newPk)
} else {
return nil, fmt.Errorf("error in Eval Meta Command: %w", rtnErr)
return nil, fmt.Errorf("[error] eval: %w", rtnErr)
}
if !resolveBool(pk.Kwargs["nohist"], false) {
// TODO should this be "pk" or "newPk" (2nd arg)
+43
View File
@@ -352,6 +352,40 @@ func unescapeBackSlashes(s string) string {
return string(newStr)
}
type ParamDecl struct {
Name string `json:"name"`
ParamType string `json:"paramtype"`
NoQuote bool `json:"noquote"`
}
var commandParamRe = regexp.MustCompile(`@w\{\{.*?\}\}`)
func parseCommandParams(cmdStr string) ([]ParamDecl, error) {
m := commandParamRe.FindAllString(cmdStr, -1)
if m == nil {
return nil, nil
}
var rtn []ParamDecl
for _, paramStr := range m {
paramStr = paramStr[4 : len(paramStr)-2]
parts := strings.Split(paramStr, ":")
decl := ParamDecl{Name: parts[0], ParamType: "str"}
for _, part := range parts[1:] {
if part == "noquote" {
decl.NoQuote = true
continue
}
if part == "int" {
decl.ParamType = "int"
continue
}
// silently ignore unknown parts (for now)
}
rtn = append(rtn, decl)
}
return rtn, nil
}
func EvalMetaCommand(ctx context.Context, origPk *scpacket.FeCommandPacketType) (*scpacket.FeCommandPacketType, error) {
if len(origPk.Args) == 0 {
return nil, fmt.Errorf("empty command (no fields)")
@@ -363,6 +397,15 @@ func EvalMetaCommand(ctx context.Context, origPk *scpacket.FeCommandPacketType)
if err != nil {
return nil, err
}
if !resolveBool(bracketArgs["noparse"], false) {
pdecls, err := parseCommandParams(cmdStr)
if err != nil {
return nil, fmt.Errorf("error parsing command params: %v", err)
}
if len(pdecls) > 0 {
return nil, fmt.Errorf("command params not supported yet len:%d", len(pdecls))
}
}
metaCmd, metaSubCmd, commandArgs := parseMetaCmd(cmdStr)
rtnPk := scpacket.MakeFeCommandPacket()
rtnPk.MetaCmd = metaCmd