Check-in [3aee276ab2]
Not logged in
Overview
Comment:Initial work on creating the package uploader user interface using Tk.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 3aee276ab283b6c3ba7e7d036c77d12a94ab194d
User & Date: mistachkin on 2016-12-19 20:56:04
Other Links: manifest | tags
Context
2016-12-20
03:39
More work on the package uploader client user interfaces for both Tk and Eagle. check-in: 331618853a user: mistachkin tags: trunk
2016-12-19
20:56
Initial work on creating the package uploader user interface using Tk. check-in: 3aee276ab2 user: mistachkin tags: trunk
19:31
Remove superfluous line. check-in: 4465f70e83 user: mistachkin tags: trunk
Changes

Modified client/1.0/neutral/pkgr_upload.eagle from [21112f8728] to [cc369af556].

27
28
29
30
31
32
33
34
35


36
37
38
39
40
41
42
27
28
29
30
31
32
33


34
35
36
37
38
39
40
41
42







-
-
+
+







  #       emit the command line usage information.
  #
  proc usage { {error ""} } {
    if {[string length $error] > 0} then {puts stdout $error}

    puts stdout "usage:\
  [file tail [info nameofexecutable]]\
  [file tail [info script]] \[apiKey\] \[name\] \[version\] \[language\]\
  \[fileName1\] ... \[fileNameN\]"
  [file tail [info script]] \[apiKey\] \[package\] \[patchLevel\]\
  \[language\] \[version\] \[platform\] \[fileName1\] ... \[fileNameN\]"

    exit 1
  }

  #
  # NOTE: This procedure sets up the default values for all configuration
  #       parameters used by the package uploader client.  The script
767
768
769
770
771
772
773




































































































































































































































































774
775
776
777
778
779
780
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







        ![regexp -line -- $fossilCommitPattern $result dummy checkin]} then {
      return false
    }

    return true
  }

  #
  # NOTE: This procedure initializes the array containing data derived from
  #       the command line arguments, if any.  The argv argument should be
  #       the list of command line arguments.
  #
  proc setupArgumentData { argv } {
    variable argumentData

    if {![info exists argumentData(apiKey)]} then {
      set argumentData(apiKey) ""
    }

    if {![info exists argumentData(package)]} then {
      set argumentData(package) ""
    }

    if {![info exists argumentData(patchLevel)]} then {
      set argumentData(patchLevel) ""
    }

    if {![info exists argumentData(language)]} then {
      set argumentData(language) ""
    }

    if {![info exists argumentData(version)]} then {
      set argumentData(version) ""
    }

    if {![info exists argumentData(platform)]} then {
      set argumentData(platform) ""
    }

    if {![info exists argumentData(fileNames)]} then {
      set argumentData(fileNames) [list]
    }

    if {[llength $argv] >= 1} then {
      set argumentData(apiKey) [lindex $argv 0]
    }

    if {[llength $argv] >= 2} then {
      set argumentData(package) [lindex $argv 1]
    }

    if {[llength $argv] >= 3} then {
      set argumentData(patchLevel) [lindex $argv 2]
    }

    if {[llength $argv] >= 4} then {
      set argumentData(language) [lindex $argv 3]
    }

    if {[llength $argv] >= 5} then {
      set argumentData(version) [lindex $argv 4]
    }

    if {[llength $argv] >= 6} then {
      set argumentData(platform) [lindex $argv 5]
    }

    if {[llength $argv] >= 7} then {
      set argumentData(fileNames) [lrange $argv 6 end]
    }
  }

  #
  # NOTE: This procedure is used to determine if all the package submission
  #       data is available.  There are no arguments.  Non-zero is returned
  #       if all the package submission data is available.  This procedure
  #       should not raise script errors.
  #
  proc haveArgumentData {} {
    variable argumentData

    if {![info exists argumentData(apiKey)]} then {
      return false
    }

    if {[string length $argumentData(apiKey)] == 0} then {
      return false
    }

    if {![info exists argumentData(package)]} then {
      return false
    }

    if {[string length $argumentData(package)] == 0} then {
      return false
    }

    if {![info exists argumentData(patchLevel)]} then {
      return false
    }

    if {[string length $argumentData(patchLevel)] == 0} then {
      return false
    }

    if {![info exists argumentData(language)]} then {
      return false
    }

    if {[string length $argumentData(language)] == 0} then {
      return false
    }

    if {![info exists argumentData(version)]} then {
      return false
    }

    if {[string length $argumentData(version)] == 0} then {
      return false
    }

    if {![info exists argumentData(platform)]} then {
      return false
    }

    if {[string length $argumentData(platform)] == 0} then {
      return false
    }

    if {![info exists argumentData(fileNames)]} then {
      return false
    }

    if {[llength $argumentData(fileNames)] == 0} then {
      return false
    }

    return true
  }

  #
  # NOTE: This procedure is the command handler for the submit button.  It is
  #       used to start the package submission process.  The args argument is
  #       not used, it is a placeholder to make this procedure a more portable
  #       between Tcl and Eagle.  This procedure may raise script errors.
  #
  proc submitEventHandler { args } {
    variable argumentData

    puts stdout "SUBMIT CLICKED"
  }

  #
  # NOTE: This procedure is the command handler for the clear button.  It is
  #       used to clear the package submission data.  The args argument is
  #       not used, it is a placeholder to make this procedure a more portable
  #       between Tcl and Eagle.  This procedure may raise script errors.
  #
  proc clearEventHandler { args } {
    variable argumentData

    puts stdout "CLEAR CLICKED"

    set argumentData(apiKey) ""
    set argumentData(package) ""
    set argumentData(patchLevel) ""
    set argumentData(language) ""
    set argumentData(version) ""
    set argumentData(platform) ""
    set argumentData(fileNames) [list]
  }

  #
  # NOTE: This procedure creates the user interface for this tool using
  #       Eagle and WinForms.  Existing argument data, if any, will be
  #       used to populate it.  There are no arguments.
  #
  proc setupWinFormsUserInterface {} {
    variable argumentData
    variable widgets

    object load System.Windows.Forms

    #
    # TODO: Finish this.
    #
  }

  #
  # NOTE: This procedure creates the user interface for this tool using Tcl
  #       and Tk.  Existing argument data, if any, will be used to populate
  #       it.  There are no arguments.
  #
  proc setupTkUserInterface {} {
    variable widgets

    package require Tk

    catch {wm withdraw .}; set toplevel [toplevel .uploader]

    set widgets(label,apiKey) [label [appendArgs \
        $toplevel .l_apiKey] -text "API Key"]

    set widgets(entry,apiKey) [entry [appendArgs \
        $toplevel .e_apiKey] -textvariable [appendArgs \
        [namespace current] ::argumentData(apiKey)]]

    set widgets(label,package) [label [appendArgs \
        $toplevel .l_package] -text "Package Name"]

    set widgets(entry,package) [entry [appendArgs \
        $toplevel .e_package] -textvariable [appendArgs \
        [namespace current] ::argumentData(package)]]

    set widgets(label,patchLevel) [label [appendArgs \
        $toplevel .l_patchLevel] -text "Package Patch Level"]

    set widgets(entry,patchLevel) [entry [appendArgs \
        $toplevel .e_patchLevel] -textvariable [appendArgs \
        [namespace current] ::argumentData(patchLevel)]]

    set widgets(label,language) [label [appendArgs \
        $toplevel .l_language] -text Language]

    set widgets(entry,language) [entry [appendArgs \
        $toplevel .e_language] -textvariable [appendArgs \
        [namespace current] ::argumentData(language)]]

    set widgets(label,version) [label [appendArgs \
        $toplevel .l_version] -text Version]

    set widgets(entry,version) [entry [appendArgs \
        $toplevel .e_version] -textvariable [appendArgs \
        [namespace current] ::argumentData(version)]]

    set widgets(label,platform) [label [appendArgs \
        $toplevel .l_platform] -text Platform]

    set widgets(entry,platform) [entry [appendArgs \
        $toplevel .e_platform] -textvariable [appendArgs \
        [namespace current] ::argumentData(platform)]]

    set widgets(label,fileNames) [label [appendArgs \
        $toplevel .l_fileNames] -text Files]

    set widgets(listbox,fileNames) [listbox [appendArgs \
        $toplevel .li_fileNames] -listvariable [appendArgs \
        [namespace current] ::argumentData(fileNames)]]

    set widgets(button,submit) [button \
        [appendArgs $toplevel .b_submit] -text Submit -command \
        [namespace code [list submitEventHandler]]]

    set widgets(button,clear) [button \
        [appendArgs $toplevel .b_clear] -text Clear -command \
        [namespace code [list clearEventHandler]]]

    pack $widgets(label,apiKey) $widgets(entry,apiKey) \
        $widgets(label,package) $widgets(entry,package) \
        $widgets(label,patchLevel) $widgets(entry,patchLevel) \
        $widgets(label,language) $widgets(entry,language) \
        $widgets(label,version) $widgets(entry,version) \
        $widgets(label,platform) $widgets(entry,platform) \
        $widgets(label,fileNames) $widgets(listbox,fileNames) \
        $widgets(button,submit) $widgets(button,clear)
  }

  #
  # NOTE: Figure out the fully qualified path to the current script file.
  #       If necessary, add it to the auto-path for the interpreter.  The
  #       necessary supporting packages (i.e. the Package Repository and
  #       other support packages) that are assumed to exist in the same
  #       directory as the current script file.
  #
830
831
832
833
834
835
836






837
838
839
840
841

842
843
844


845
846
847
848
849
850
851
852
853
854
855

856

857
858



859
860
861
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106

1107
1108


1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120

1121
1122
1123


1124
1125
1126
1127
1128
1129







+
+
+
+
+
+




-
+

-
-
+
+










-
+

+
-
-
+
+
+




  #
  # NOTE: Provide the package to the interpreter.
  #
  package provide Eagle.Package.Uploader \
    [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]

  #
  # NOTE: Process the command line arguments into their corresponding data
  #       values, which are contained in an array.
  #
  setupArgumentData [expr {[info exists ::argv] ? $::argv : [list]}]

  #
  # NOTE: Verify that the number of command line arguments meets the basic
  #       requirements of this tool.
  #
  if {[info exists ::argv] && [llength $::argv] >= 5} then {
  if {[haveArgumentData]} then {
    #
    # NOTE: All the necessary arguments were supplied on the command line,
    #       use batch mode.
    # NOTE: All necessary arguments were supplied on the command line, use
    #       batch mode.
    #
  } else {
    #
    # NOTE: One or more of the necessary arguments were not supplied on the
    #       command line, use interactive mode.  This will create a graphical
    #       user interface, using Tk or WinForms.  If any of the necessary
    #       arguments were supplied on the command line, they will be used to
    #       populate those fields on the graphical user interface.
    #
    if {[isEagle]} then {

      setupWinFormsUserInterface
    } else {
      setupTkUserInterface

    }
    }

    vwait forever
  }
}


Modified client/1.0/neutral/pkgr_upload.eagle.asc from [cfc66e3414] to [5addd55eb8].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYWDV4AAoJEFAslq9JXcLZx0sP/2VJD7twzdSyISvuml28aljh
qDLWnZQR/VnXdAKPCM2e8Ti2fsR9tFSbQsfjUNPTIbhJ45ZMdHPqPomNKzjyGttw
r0YONmmPl6WTgNg5Qu0GxiuoEnqA2Erx2ejawKlJYkj4bKyVBwA+i4uY0Bxf/3LP
MuuJijPs8l4QWVdjm78iUgskdEyulItpGZhI7f4me6N1AF3vnbzjKrGVVOaO7HXQ
zAiTcssKtu8zjl6XnBswkYSgFkTcf1D/kdsJOf9PsCs4G/6MF8J+rSWZCwzPtgtl
aYSfncDE8VpWMJ8ECbH96eNWUoVrlxX9hEI3UTFIdzKPemD8E/LdPcYc/y2Z1Wtp
wWQGGp2yzBzobPFYbKYsSh7H4Jm35kMyU7YnS0LxX3dyvr0PXix3MuQC9vK4zHyt
990O7spn2cirFwduQCB5eWPMyo2ovzvOZB+UNoe2xii5Jm+aC/9cb7rVBZLnYPXm
gVzDHq6otUmJVEhIAoimtAGFYDt7h+97amYCtKhw1ohq4JyauhipafbczxjLBd7C
/Ck/C5UTBHvdHTFU+OcuxIQW3N7S7L0tnLcNUEA5+BNaKyYoOoVygUmCQrOsvvO6
sV4end3L9s19uT1NYimJvIElJDNt41FzPddVkzV8M/RxRa7akSfvLizvuNKU+uiv
Bb78GwdFAEi4oS9aMquh
=nMo9
iQIcBAABCAAGBQJYWEkqAAoJEFAslq9JXcLZdYUP/jnr2z23xRXVlN3hNU/fy6Mw
5vsmuracSs2S7KdSCgMl0qRQWuh8i8VhNI/cp9xdfKbZowqV/R7RBSyT/gffXnRz
GAAbvgHH33hpd/IM7qzr5YF2a/skumy3FDNdjvbXsItii6tNNqiCgprSKCuty2a7
rRsxhGPO69jDduyHBGTuCHbKwIrSR4XLIR8U4iKcNTxuhndjuoijRuci+h8Mlr3b
SHpvpBrvLj+WMflzvd8iwj95kp4R8/C2yteYjMM9bPvH+fXlBSFXpjVkOrF/HLhD
ScrZWyaMN/zLYv3scxKYDJ9/t4ZHV43E23ShRdQ0Fmzu5wdvY/fe4But3M09SYkP
K/MVR4cCDF/wEeuZmk1Z1Kb+ZyaDhcTP835eBNzFwmU5sgaTPCGeClcxidzCqsqC
cgj8xrj+RzMw3aoSqI1P2PrryYqoWRmWN3t2ERjHAPrfe0/MsFWCFeUZHxiSfQZM
j606AXxhPhBQ7OuBe8vorQy1tPFkntsbQM4UalGS/Q0MVNsD7hb4+aWMOdw3BqrK
+hzyNal8i5hRdt8tE70cXSpR0E71gLVCZMjWnKIKG2lQyukLsIP02KWNk3UxM+eM
P/dWGeIBz1bsVBghsrvvMCIx/DG9SQRJcjHNQr3b//KCJmJtOMI+46wH8Y/G/2b/
xTFksgyC/vvYgJX3s3BO
=dXzZ
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_upload.eagle.harpy from [1863528c26] to [539b350fad].

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
68
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
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>1b0bb058-0800-49e8-a350-0cd0cc85acea</Id>
  <Id>95474505-5cf4-4572-b593-a1cdfd6f50e0</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-19T19:30:37.5976562Z</TimeStamp>
  <TimeStamp>2016-12-19T20:54:43.5341796Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr_upload.eagle.harpy.asc from [c85b71cf3f] to [252ff7c776].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYWDV7AAoJEFAslq9JXcLZ+nIQAKxcPMgIlup2ljXotePBns52
qpRbnX7yUVAtgbhKCDsJytKoAzSJW7E2GCAEdSho27I5gmr5MI7LurEI1azMvQLH
lR/+J+M8X4A8AA0XJDHykl5cQnhiJ3znWAEK46Ng2CBUuICmV156ty6P2Vo2XwWw
czZBGLciPtKFbNOrq+M08v/ox6v/UKUxXUQ52Q2qT9OXc6ELh1/PN+/+CgJdDhKr
rSUwCHsBSw1oGBgbthPC6c6r/28tBziR7IAPUjgNYII3O7/yBwkZtrZvFx00YLzx
Bs8GB1Ih/8nPLMKkmLT5uTBOQebPd00GQJIGWrheEJuWCpagXJk+mKufnD2/dMI4
vPiG7xOIOh6yEPuFv/HXYKpD9rxanW8T6X04EPMvT6zn7SRjQQcRr+FnBT9P8tou
c5GqqXmKo1v4Z2VcB0kgm9Uw3M3jnpmQqNDZZlHuh6KFPRJW6FBvhQsb3wYyta1a
0pN9UUvn75A+KP4O6eX8+eIJdeeahUOIY1lv5dLZiRl5ihgXzG+PNrzQ7kDtkvvG
74B3c5h83mBuVwhv/NH+JGqgSjdbZay2UCQcbfjh9okDRuCAngqWBLNAezhNiWax
q0kQbxby8nCrwuDyKxknvbdv67LQCEMT9HH6Qttszx8ErcAj8UR8I/d9yz/ddgR4
wPr72wfutMQ0zkeNU301
=vnk0
iQIcBAABCAAGBQJYWEkrAAoJEFAslq9JXcLZZ5wQAKoI23Hcm50cNiH0J8KY0Ggr
jADQPnG/Uo4x/1Y+ZX0rmSSuguphn513YxiVomKRbfwwUP3hdkwSQFt3tJtbz8Gw
Fpf6af1x/dKDFxDoN4ZGeB0tSeijcCSvFoOAz8bPhAxM6yyTehZ34/u4Lzw5QgKH
a5Hovs8vH8ZNlFZwai2oU34WDSwDnR+h3wMm2cws/OH/ltZUG7NaaA4QbnCcFd1/
6AU1adeGpI0wyRmXH7TcR/0huU2wwjw7JvCU7LF4bS/sUACjKqsR23MpgRI9qwK1
bbBBgvFVujFhHGpwHMQs8xJ7PGFTRyqhpfAAwVBRmZzF8jyJ+lnUHKiUlhkHjbaC
at6OOjOc91q7+pRvKVR6ClNgMOAwDRJFz/dXSQDFofN+DxHJzfZNYVG6rJT6+ThV
Non1nCOB6fESTbv31xbZexlfBmcVpzVC62HfNIP4gvZm9A7qgZMFAYaqkHQYHKNe
1aLR87EzTH7RhWuPVrv4+aCzVj5shy/PJydJtbTHVA9/RJ8SXc+d2A2QEi3KOUOe
LJOs6rfh8f4vRIjJG1Hsi1hc2uaSwqVd5hlWo00LpRXrwq7tDvBKntRQEyCyymot
UI2Cdhuy3/9Xgh7G3x5QbsOqmnNK1239s9tAasYxNLi+3eKgyD1IaYTfmWP/U40y
AAjR3fhJf/gjc29XL6Vm
=KYLK
-----END PGP SIGNATURE-----