/*
    第一步. 逻辑检查,初始化,选取出需要测的steplist
    第二步. 将要测net的step对应关系整理好 将array  array_c copy到 _tmp 删除排版 打散关系 array_net 删除排版 打散关系
    第三步. doNet 里所有step pgn极性翻转
    第四步. doNet.orig foNet.net 对比测net
    end: 删除辅助层 临时step
*/

var $ = require('topcam.scriptfunc').argv();
var _ = require('lodash');
var JOB = $.job_name;
var GEN = $.gen;
var ikm = $.ikm;

var GUI = $.GUI;
try {
    var r = GUI.msgBox("mo", "info", "are you ok?", ["ok", "cancel"]);
    // GUI.msg(r);   // ok | cancel

    // r = GUI.confirm("are you ok?", ["yes", "no"], "question");
    // GUI.msg(r);   // yes | no

    // var selected = GUI.selectFromTreeview({
    //     title: "test",
    //     size: [600, 400],
    //     selectmode: "single",
    //     columns: [
    //         {
    //             "name": "id",
    //             "display": "ID",
    //             "displayRole": "$id",
    //             "search": true,
    //             "resizeMode": "ResizeToContents"
    //         },
    //         {
    //             "name": "name",
    //             "display": "NAME",
    //             "displayRole": "$name",
    //             "search": true,
    //             "resizeMode": "ResizeToContents"
    //         }
    //     ],
    //     data: [
    //         {
    //             "id": 1,
    //             "name": "mo"
    //         },
    //         {
    //             "id": 2,
    //             "name": "ha"
    //         }
    //     ],
    //     returncols: ["id"]
    // });
    // msg(selected);  // [{id:1}]

    // r = GUI.selectFile("choose something", "*", true, "file", "/home/abby/fast_io");
    // GUI.msg(r);  // ["路径"]

    // var xx = [
    //     {"mo": "too young too simple"},
    //     {"ha": "sometimes naive!"},
    //     {"elder": "+1s"}
    // ];
    // r = GUI.selectSingle({
    //     "title": "select your favar",
    //     "list": xx,
    //     "default": "",
    //     "columns": 2,
    //     "gen":{}
    // });

    // GUI.msg(r) // 'ha'

    // r = GUI.selectMultiple({
    //     "title": "select your favar",
    //     "list": xx,
    //     "defaultvalue": ["mo"],
    //     "columns": 2,
    //     "gen": {}
    // });
    // GUI.msg(r)  // ['ha','mo']

    // r = GUI.selectFromTable({
    //     title: "select from table example",
    //     multiple: true,
    //     list: [
    //         {
    //             "job": "too young",
    //             "name": "elder"
    //         },
    //         {
    //             "job": "too simple",
    //             "name": "elder"
    //         },
    //         {
    //             "job": "sometimes",
    //             "name": "elder"
    //         },
    //         {
    //             "job": "naive",
    //             "name": "elder"
    //         }
    //     ],
    //     gen: function() { function PAUSE() { return true; }}
    // });

    // GUI.msg(r) // [{job":"sometimes","name":"elder",("job":"naive","name":"elder"]

    // r = GUI.snapScreen({
    //     file: "xxx",
    //     dir: "/tmp",
    //     type: "png",
    //     overwrite: true
    // });
    // GUI.msg(r)   //      /tmp/xxx.png

    // r = GUI.imageViewer({
    //     title: "screenshot",
    //     file: "/tmp/xxx.png",
    //     defaultsize: [800, 600]
    // });
    // GUI.msg(r)

    // r = GUI.inputBox({
    //     title: "input box example",
    //     value: "are you ok?"
    // });
    // GUI.msg(r)  // are you ok?

    // r = GUI.showForm({
    //     title: "form example",
    //     ui: {
    //         type: 'ScrollArea',
    //         property: { widget_resizable: true, frame_shape: 'NoFrame', align: 'Top' },
    //         child: {
    //             type: 'VBoxLayout',
    //             property: { margin: 2, spacing: 20, align: 'Top' },
    //             pack: { stretch: 0 },
    //             child: [
    //                 {
    //                     type: 'label'
    //                 },
    //                 {
    //                     type: 'label',
    //                     property: { text: ("Partnumber Info") }
    //                 },
    //                 {
    //                     type: "FormGridLayout",
    //                     property: { columns: 4, label_alignment: 'Top | Right', margin: 10, spacing: 20 },
    //                     pack: { stretch: 0 },
    //                     child: [
    //                         {
    //                             name: 'partnumber',
    //                             type: 'LineEdit',
    //                             pack: { label: ('Partnumber') },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.iscross',
    //                             type: 'ComboBox',
    //                             property: { enabled: true, item_list: [] },
    //                             pack: { label: ('Is Cross') }
    //                         },
    //                         {
    //                             name: 'attrs.pthick',
    //                             type: 'DoubleLineEdit',
    //                             pack: { label: ('Part thickness') },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.producttype',
    //                             type: 'ComboBox',
    //                             property: { enabled: true, item_list: [] },
    //                             pack: { label: ('Product type') }
    //                         },
    //                         {
    //                             name: 'attrs.weft_direction',
    //                             type: 'ComboBox',
    //                             property: { enabled: true, item_list: [] },
    //                             pack: { label: ('Longitude and latitude') }
    //                         },
    //                         {
    //                             name: 'attrs.structure_code',
    //                             type: 'LineEdit',
    //                             pack: { label: ('Structure') },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.array_num_on_panel_y',
    //                             type: 'DoubleLineEdit',
    //                             pack: { label: ('Long edge typesetting') },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.array_num_on_panel_x',
    //                             type: 'DoubleLineEdit',
    //                             pack: { label: ('Short edge typesetting') },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.pre_partnumber',
    //                             type: 'Chips',
    //                             pack: { label: ('Front partnumber'), column_span: 2 },
    //                             property: { enabled: true }
    //                         },
    //                         {
    //                             name: 'attrs.erp_job_remark',
    //                             type: 'PlainTextEdit',
    //                             property: {
    //                                 enabled: true,
    //                                 min_row_count: 1,
    //                                 vertical_scroll_bar_policy: 'ScrollBarAlwaysOff'
    //                             },
    //                             pack: { label: ('ERP Job Remark'), column_span: 2 },
    //                         }
    //                     ]
    //                 },
    //                 {
    //                     type: 'stretch'
    //                 }
    //             ]
    //         }
    //     },
    //     data: {},
    //     runnow: true,
    //     includehide: false,
    //     gen: null
    // });

    // GUI.msg(r)  // obj

    // r = GUI.selectLayer({
    //     title: "+1s",
    //     filter: ".*", // regular expression
    //     selectmode: "single", // single, multiple
    //     context: "all", // all, board, misc
    //     layertype: "inner", // default type of layertypelist
    //     defaultsize: [600, 400], // window size
    //     layermatrix: GEN.getMatrix({job:JOB}),
    //     layertypelist: [
    //         {name: "signal", display_name: "signal", filter: function(x) { return x["layer_type"] === "signal"; }},
    //         {name: "outer", display_name: "Outer", filter: function(x) { return x["layer_type"] === "outer"; }}
    //     ],
    //     gen: null
    // });
    // GUI.msg(r)  // [{name:"layer1"}]

    // r = GUI.lockUnlockLayer({
    //     "title": "+1s",
    //     "layermatrix": {
    //         "layer1": {
    //             "row": 1,
    //             "name": "layer1"
    //         },
    //         "layer2": {
    //             "row": 2,
    //             "name": "layer2"
    //         }
    //     }
    // });
    // GUI.msg(r)  // {"layer1":true,"layer2":false}

    // r = GUI.passwordBox({
    //     title: "password box",
    //     password: "naive!"
    // });
    // GUI.msg(r) // true

    r = GUI.msg('调试选择job').selectJobLayer({
        layertypelist: [{
                name: "mo",
                display_name: "MO",
                filter: function (x) {
                    return x.layer_type === "mo";
                }
            },
            {
                name: "ha",
                display_name: "HA",
                filter: function (x) {
                    return x.layer_type === "ha";
                }
            }
        ],
        //defaultlayertype: "ha",
        joblist: ["job1", "job2"],
        defaultJob: ["job1"], // select by default
        steplist: ["step1", "step2", "step3", "step4"],
        // defaultstep: "step3",
        showstep: true,
        selectmode: "single", // single/multiple
        layermatrix: {
            "layer1": {
                name: "layer1",
                layer_type: "mo",
                row: 1
            },
            "layer2": {
                name: "layer2",
                layer_type: "ha",
                row: 2
            }
        },
        defaultlayer: ["layer1"]
    });

    GUI.msg(r) // {layers:['layer2'],step:null,job:'job2',layertype:'null'}


    return 'Done';
} catch (error) {
    return 'error'
}