summaryrefslogtreecommitdiff
path: root/widget.proto
blob: 703c0e1aa82d3fbdcad9c190c1ddd57ae80c7e8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
syntax = "proto3";

// playing around with ideas here

package gitpb;

// import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
import "google/protobuf/any.proto"; // Import 'Any'

message Size  {
        int64                 width        = 1;
        int64                 height       = 2;
}

// used for grid layouts
message Location  {
        int64                 x            = 1;
        int64                 y            = 2;
}

message Widget {
        message Internal {
                string     progName     = 1;
        }
        message Standard {
                string     progName     = 1;
                string     name         = 2;
        }
        oneof type {
                Internal   root         = 9;
                Standard   button       = 10;
                Standard   window       = 11;
                Standard   tab          = 12;
                Standard   checkbox     = 13;
                bytes      tablePB      = 14;
                Standard   textbox      = 15;
        }
        int64                 id           = 1;
        string                name         = 2;
        google.protobuf.Any   val          = 3;
        WidgetType            Type         = 6;
        Location              location     = 7;
        repeated Widget       children     = 8;
}
message Widgets {                                // `autogenpb:marshal`
        string                uuid         = 1;  // `autogenpb:uuid:0331fcd7-3c8c-43e4-be1b-77db6a6bc58c`
        string                version      = 2;  // `autogenpb:version:v1`
        repeated Widget       Widgets      = 3;  // this never gets used, but it's not worth violating the autogenpb standard
        Widget                tree         = 4;  // everything is sent from go.wit.com/gui here
}

enum WidgetType {
        Root                = 0;  // the master 'root' node of the binary tree
        Flag                = 1;  // internal use
        Window              = 2;  //
        Tab                 = 3;  // a tab like in firefox
        Box                 = 4;  // must be either Vertical or Horizontal arrangment
        Group               = 5;  // think 'Appetizers' on a restaurant menu
        Grid                = 6;  // like drawers in a chest or post office boxes
        Button              = 7;  // user can click on this
        Checkbox            = 8;  // true or false
        Dropdown            = 9;  //
        Combobox            = 10; // a dropdown menu that can be edited by the user
        Label               = 11; // a simple label
        Textbox             = 12; // enter text
        TablePB             = 13; // special case to allow the arbitrary GUI display of any other protobuf
}