-
Notifications
You must be signed in to change notification settings - Fork 1
/
kanedit_etc.tsv
We can make this file beautiful and searchable if this error is corrected: Illegal quoting in line 28.
4298 lines (4044 loc) · 389 KB
/
kanedit_etc.tsv
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
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
[L:Tsv|
code UTF-8
enter LF
tab 4
program LTsv_doc.py
1st LTsv_doc
LTsvver 20170119R141608
modify 20170128S130742
|L:Tsv]
[LTsv_doc|
main <@kanedit_etc_main>
tagseparate *
outdir ../docs/
outlist <@kanedit_etc_outlist>
defdir ../LTsv/
deftag L:<! R:>
defindent firstL:<?firstL> firstR:<?firstR> restL:<?restL> restC:<?restC> restR:<?restR> restRLast:<?restRLast>
|LTsv_doc]
[<@kanedit_etc_main>|
<?kanedit_etc_ext>
|<@kanedit_etc_main>]
[<?kanedit_etc_ext>|
.+\.html? <#kanedit_etc_html>
.+\.css <#kanedit_etc_css>
.* <#kanedit_etc_txt>
|<?kanedit_etc_ext>]
[<#kanedit_etc_css>|
@charset "utf-8";
@font-face{
font-family: "kan5x5comic";
src: url("https://ooblog.github.io/kan5x5comic.woff") format('woff');
}
.kan5x5comic{
font-family: "kan5x5comic";
}
@font-face{
font-family: "kan5x5";
src: url("https://ooblog.github.io/kan5x5.woff") format('woff');
}
.kan5x5{
font-family: "kan5x5";
}
body{
background-color: white;
}
mark{
background-color: white;
border: 1px pink solid;
}
mark.applogo{
border: 0px;
}
mark.applogo > img{
margin: -1rem 0rem -1rem;
vertical-align: middle;
border: 1px pink solid;
}
header{
border: 1px gray dotted;
padding: 1rem;
}
.yonmoji_root{
font-family: "kan5x5comic"; font-size: 1rem;
line-height: 1rem;
float: left;
margin-top: -0.5rem;
padding-right: 0.5rem;
}
.yonmoji_root > a:nth-child(odd){
text-decoration: none;
}
.yonmoji_sitemap{
float: right;
}
yonmoji_both{
clear: both;
}
section,aside,article{
margin-top: 1rem;
border: 2px black solid;
padding: 1rem;
}
input.yonmoji_entry{
border: solid 1px orange;
width: 12rem;
}
input.yonmoji_entry:focus{
border: solid 2px IndianRed;
}
.yonmoji{
width: 100%; margin: 0 auto;
text-align: center;
padding-top: 1rem;
padding-bottom: 0rem;
}
.yonmoji_logo{
font-family: "kan5x5comic"; font-size: 5rem;
line-height: 5rem;
width: 10rem;
height: 10rem;
margin: 0 auto;
}
.yonmoji_word{
font-family: "kan5x5comic"; font-size: 2rem;
line-height: 2rem;
float: left;
margin: 0rem;
}
.sidepages{
width: 20%; min-width: 200px;
padding: 0rem;
text-align: center;
float: right;
}
.sidepages ul{
margin-left: -2rem
}
.sidepages li{
margin-left: 0rem;
list-style-type: none;
display: inline-block;
}
article > div{
margin-top: 0.5rem;
border: 1px gray solid;
padding: 1rem;
}
span.kan5x5comic{
font-family: "kan5x5comic";
}
p.capcenter{
text-align: center;
}
footer{
margin-top:1rem;
float: both;
border: 0px;
text-align: center;
}
.gotop{
margin-top:1rem;
padding: 0rem;
width: 7rem;
height: 2rem;
float: right;
border: 0px;
text-align: right;
background-image: linear-gradient(to top right, transparent 48%, gray 50%, transparent 51%);
}
p.ooblog{
margin-top:-1rem;
text-align: left;
padding: 1rem 1rem 0em;
}
dt{
font-weight: bold;
word-wrap: break-word; word-break: break-all;
}
dl.faqlink > dt{
margin-left: 3rem;
}
dl.inputstroke > dt{
width: 15rem;
float: left;
}
dd{
word-wrap: break-word; word-break: break-all;
}
dl.faq > dd{
margin-left: 0px;
}
dl.faqlink > dd{
margin-left: 3rem;
}
dl.inputstroke > dd{
margin-left: 15rem;
}
h1{ font-size: 2.0rem; margin: 1rem 0.5rem 0.5rem; }
h2{ font-size: 1.8rem; margin: 1rem 0.5rem 0.5rem; }
h3{ font-size: 1.6rem; margin: 1rem 0.5rem 0.5rem; }
h4{ font-size: 1.4rem; margin: 1rem 0.5rem 0.5rem; }
h5{ font-size: 1.2rem; margin: 1rem 0.5rem 0.5rem; }
h6{ font-size: 1.0rem; margin: 1rem 0.5rem 0.5rem; }
/*
<?ooblog>
*/
|<#kanedit_etc_css>]
[<#kanedit_etc_txt>|
<?title>
version(branch):<@L:TsvLTsvver><?@T>modify:<?modify>
<#kanedit_maporindex>
<#kanedit_menus><#kanedit_pages><?ooblog>
|<#kanedit_etc_txt>]
[<#kanedit_etc_html>|
<html lang="ja"><head>
<meta charset="UTF-8" />
<meta name="description" content="">
<title><?title></title>
<link rel="stylesheet" type="text/css" href="LTsv_doc.css" />
<link rel="icon" type="image/png" href="<?favicon>" />
</head><body>
<header><nav>
<div class="yonmoji_root"><a href="https://ooblog.github.io/" rel="publisher" title="<?yakuyon>">約四<br /></a><a href="https://ooblog.github.io/" rel="publisher" title="<?yakuyon>">文字</a></div>
<?breadcrumbs>
<br class="yonmoji_both" />
</div></header>
<aside class="sidepages"><nav>
<ul>
<li><a href="index.html"><?titleimg/software-0></a></li>
<li><a href="kanfont.html"><?titleimg/software-2></a></li>
<li><a href="kanmap.html"><?titleimg/software-3></a></li>
<li><a href="kanedit.html"><?titleimg/software-1></a></li>
<li><a href="kanzip.html"><?titleimg/software-4></a></li>
<li><a href="LTsv_doc.html"><?titleimg/software-5></a></li>
<li><a href="KEV.html"><?titleimg/software-6></a></li>
</ul>
<?P>
<a href="404.html" title="404">「L:Tsv」のsitemap(404)</a>
<?/P>
</nav></aside>
<section class="mainpages">
<h1><?title></h1>
<?P>
version(branch):<@L:TsvLTsvver><?@T>modify:<?modify><?BR>
<?/P>
<h2><#kanedit_maporindex></h2>
<ul>
<#kanedit_menus>
</ul>
</section>
<#kanedit_pages>
<div class="gotop"><a href="#top">↑Top</a></div>
<footer>
<p>site generator "<?https/ooblog:LTsv_doc.py>" repository:<?https/ooblog:LTsv10repository></p>
<p class="ooblog"><?ooblog></p>
</footer>
</body></html>
|<#kanedit_etc_html>]
[<#kanedit_maporindex>|
404 サイトマップ
.* 目次
|<#kanedit_maporindex>]
[<#kanedit_menus>|
404 <?list/software-0>*<?list/software-1>*<?list/software-2>*<?list/software-3>*<?list/software-4>*<?list/software-5>
index|LTsv10 <?list/License-0>*<?list/License-1>*<?list/License-2><?list/aboutLTsv-0>*<?list/aboutLTsv-1><?list/LTsv_printf-0>*<?list/LTsv_printf-1><?list/LTsv_file-0><?list/LTsv_time-0>*<?list/LTsv_time-1><?list/LTsv_calc-0>*<?list/LTsv_calc-1><?list/LTsv_joy-0>*<?list/LTsv_joy-1>*<?list/LTsv_joy-2><?list/LTsv_kbd-0>*<?list/LTsv_kbd-1><?list/LTsv_gui-0>*<?list/LTsv_gui-1><?list/LTsv_glyph-0>*<?list/LTsv_glyph-1>*<?list/LTsv_glyph-2>*<?list/LTsv_glyph-3>*<?list/LTsv_glyph-4>*<?list/LTsv_glyph-5><?list/LTsv10_faq-0><?list/address-0>
kanedit <?list/License-0>*<?list/License-1>*<?list/License-2><?list/kanedit_usage-0><?list/kanedit-0>*<?list/kanedit-1><?list/kanedit_faq-0><?list/address-0>
kanfont <?list/License-0>*<?list/License-1>*<?list/License-2><?list/kanfont_usage-0><?list/kanfont-0>*<?list/kanfont-1>*<?list/kanfont-2><?list/kanfont_faq-0><?list/address-0>
kanmap <?list/License-0>*<?list/License-1>*<?list/License-2><?list/kanmap_usage-0>*<?list/kanmap_usage-1><?list/kanmap-0><?list/kanmap_faq-0><?list/address-0>
kanzip <?list/License-0>*<?list/License-1>*<?list/License-2><?list/kanzip_usage-0><?list/kanzip-0><?list/kanzip_faq-0><?list/address-0>
LTsv_doc <?list/License-0>*<?list/License-1>*<?list/License-2><?list/LTsv_doc_usage-0><?list/LTsv_doc-0>*<?list/LTsv_doc-1>*<?list/LTsv_doc-2><?list/LTsv_doc_faq-0><?list/address-0>
KEV <?list/License-0>*<?list/License-1>*<?list/License-2><?list/KEV_usage-0>*<?list/KEV_usage-1>*<?list/KEV_usage-2>*<?list/KEV_usage-3>*<?list/KEV_usage-4><?list/KEV-0><?list/KEV_faq-0><?list/KEV_interpret-0>*<?list/KEV_interpret-1>*<?list/KEV_interpret-2>*<?list/KEV_interpret-3>*<?list/KEV_interpret-4><?list/address-0>
.* <?list/License-0>*<?list/License-1>*<?list/License-2><?list/address-0>
|<#kanedit_menus>]
[<#kanedit_pages>|
404
index|LTsv10 <?section/License-0>*<?section/License-1>*<?section/License-2><?section/aboutLTsv-0>*<?section/aboutLTsv-1><?section/LTsv_printf-0>*<?section/LTsv_printf-1><?section/LTsv_file-0><?section/LTsv_time-0>*<?section/LTsv_time-1><?section/LTsv_calc-0>*<?section/LTsv_calc-1><?section/LTsv_joy-0>*<?section/LTsv_joy-1>*<?section/LTsv_joy-2><?section/LTsv_kbd-0>*<?section/LTsv_kbd-1><?section/LTsv_gui-0>*<?section/LTsv_gui-1><?section/LTsv_glyph-0>*<?section/LTsv_glyph-1>*<?section/LTsv_glyph-2>*<?section/LTsv_glyph-3>*<?section/LTsv_glyph-4>*<?section/LTsv_glyph-5><?section/LTsv10_faq-0><?section/address-0>
kanedit <?section/License-0>*<?section/License-1>*<?section/License-2><?section/kanedit_usage-0><?section/kanedit-0>*<?section/kanedit-1><?section/kanedit_faq-0><?section/address-0>
kanfont <?section/License-0>*<?section/License-1>*<?section/License-2><?section/kanfont_usage-0><?section/kanfont-0>*<?section/kanfont-1>*<?section/kanfont-2><?section/kanfont_faq-0><?section/address-0>
kanmap <?section/License-0>*<?section/License-1>*<?section/License-2><?section/kanmap_usage-0>*<?section/kanmap_usage-1><?section/kanmap-0><?section/kanmap_faq-0><?section/address-0>
kanzip <?section/License-0>*<?section/License-1>*<?section/License-2><?section/kanzip_usage-0><?section/kanzip-0><?section/kanzip_faq-0><?section/address-0>
LTsv_doc <?section/License-0>*<?section/License-1>*<?section/License-2><?section/LTsv_doc_usage-0><?section/LTsv_doc-0>*<?section/LTsv_doc-1>*<?section/LTsv_doc-2><?section/LTsv_doc_faq-0><?section/address-0>
KEV <?section/License-0>*<?section/License-1>*<?section/License-2><?section/KEV_usage-0>*<?section/KEV_usage-1>*<?section/KEV_usage-2>*<?section/KEV_usage-3>*<?section/KEV_usage-4><?section/KEV-0><?section/KEV_faq-0><?section/KEV_interpret-0>*<?section/KEV_interpret-1>*<?section/KEV_interpret-2>*<?section/KEV_interpret-3>*<?section/KEV_interpret-4><?section/address-0>
.* <?section/License-0>*<?section/License-1>*<?section/License-2><?section/address-0>
|<#kanedit_pages>]
[<?breadcrumbs>|
404\.html? <span> > <a href="https://ooblog.github.io/LTsv.html" title="LTsv - <?yakuyon>">LTsv</a> > <mark>404</mark> <span class="yonmoji_sitemap"><a href="https://ooblog.github.io/404.html" title="404 - <?yakuyon>">「約四文字」のsitemap(404)</a></span>
.* <span> > <a href="https://ooblog.github.io/LTsv.html" title="LTsv - <?yakuyon>">LTsv</a> > <mark class="applogo"><?applogo></mark></span> <span class="yonmoji_sitemap"><a href="https://ooblog.github.io/404.html" title="404 - <?yakuyon>">「約四文字」のsitemap(404)</a></span>
|<?breadcrumbs>]
[<?applogo>|
index\.html? <img src="<?favicon>" width="48" height="48" alt="<?LTsv>" title="<?LTsv>">
kanedit\.html? <img src="<?favicon>" width="48" height="48" alt="kanedit" title="kanedit">
kanfont\.html? <img src="<?favicon>" width="48" height="48" alt="kanfont" title="kanfont">
kanmap\.html? <img src="<?favicon>" width="48" height="48" alt="kanmap" title="kanmap">
kanzip\.html? <img src="<?favicon>" width="48" height="48" alt="kanzip" title="kanzip">
LTsv_doc\.html? <img src="<?favicon>" width="48" height="48" alt="LTsv_doc" title="LTsv_doc">
KEV\.html? <img src="<?favicon>" width="48" height="48" alt="KEV" title="KEV">
|<?applogo>]
[<?favicon>|
(index|404)\.html? LTsv10_logo.png
kanedit\.html? kanedit_logo.png
kanfont\.html? kanfont_logo.png
kanmap\.html? kanmap_logo.png
kanzip\.html? kanzip_logo.png
LTsv_doc\.html? LTsv_doc_logo.png
KEV\.html? KEV_logo.png
|<?favicon>]
[<?section/License-0>*<?section/License-1>*<?section/License-2>|
.+\.html? <section>@E <h3 id="License-@c"><?title/License-@c></h3>@E<#contents/License-@c>@E</section>@E
.* @E<?title/License-@c>@E@E<#contents/License-@c>@E
|<?section/License-0>*<?section/License-1>*<?section/License-2>]
[<#contents/License-0>|
<?P> ※「MIT License」準拠。<?BR>
<?/P>
<?https/License:mit>
<?https/License:osdn>
<?https/License:postd>
<?P> ※口語的説明。<?BR>
・「<?https/License:LICENSE>」も含めソースコードの閲覧やコピーに制限を設けない事。<?BR>
・いかなる場合においても作者または著作権者は一切責任を負わない事。<?BR><?/P><#contents/License-0:kandic>
|<#contents/License-0>]
[<#contents/License-0:kandic>|
kanedit @E<?P>※「<@kanedit_etc_outlist>」固有の問題への言及。<?BR>@E ・<?DICchar><?DICword>などで翻訳ミスもしくは言い回しが古くなるなど日本語(英語中国語なども含む)の不具合に対しても作者または著作権者にはメンテナンス義務等はありません。<?BR><?/P>
|<#contents/License-0:kandic>]
[<#contents/License-1>|
<?P> ※Pythonは別途インストールされているものとします(Pythonの導入分からない人は「<?index/LTsv10_faq-0>」を参考)。<?BR>
<?/PP>
※Vimも別途インストールされているものとします(Vimの導入分からない人は「<?index/KEV_usage-0>」を参考)。<?BR>
<?/PP>
ダウンロードは「<?https/ooblog:LTsv10repository>」にある「Clone or download」ボタンを押すと出る「Download ZIP」メニューをクリック。<?BR>
インストールは任意(なるだけユーザーディレクトリ内)のフォルダに「LTsv10kanedit-master.zip」を解凍するだけです(「LTsv10kanedit-master」フォルダが作成されるはずです)。<?BR>
「*.py」のパーミッションがOFFになってたら実行可能に変更、Wineで使う場合は「<?https/License:wine_sh>」フォルダ内の「*.sh」のWineパスを適宜修正。<?BR>
最初に「<?https/kanmap.py>」を起動(前バージョンの「LTsv/kanpickle.bin」ある場合は一旦削除してから)。「LTsv/kanpickle.bin」を新規作成してください。<?BR>
「LTsv/kanpickle.bin」を初期化しない場合グリフ座標データが蓄積するまで起動や動作が重くなるか、バージョン(ブランチ)によってはエラーになる場合があります。<?BR>
詳細は「<?index/kanmap_usage-0>」を参考。<?BR>
<?/PP>
フォント「kan5x5comic.ttf」も用意する場合は「<?index/kanfont_faq-0>」を参考。<?BR>
<?/P>
<?https/License:LTsv10kanedit>
<?P> アンインストールはインストール時に作成した「LTsv10kanedit-master」フォルダを削除するだけです。<?BR><?/P>
|<#contents/License-1>]
[<#contents/License-2>|
<?P> 「Tahrpup6.0.5,Python2.7.6,vim.gtk7.4.52(vim-gtk)」および「Wine1.7.18,Python3.4.4,gvim8.0.134(KaoriYa)」で開発しています。Windows,cygwin,darwin,MacOSなどでの動作は確認しておりません。<?BR>
フォント(グリフ)「kan5x5comic」は半角と全角の幅の比率が約5:3(1024:624)なのでアスキーアートで問題になる場合があります。グリフ不足で表示できない文字などあります。<?BR>
「kan5x5comic.ttf」と「kan5x5.ttf」を同時に入れると麻雀牌が表示されない(「kan5x5.ttf」の絵文字代替4x5文字が優先される)場合があります。<?BR>
私用領域と呼ばれる環境に左右される文字コードを<?VRkeyboard>の制御に用いてます。「kan5x5comic.ttf」を用意しないとソースが見辛い可能性があります。<?BR>
人名に使える漢字の異体字を<?DICmap>から<?DICchar>に移管作業中。なので<?VRkeyboard>の<?DICmap>が大幅に変更するかも。<?BR>
マウスボタンの取得は保留。ホイールの取得は放置。tkk方面は手を出さない予定(コンボボックスなどはGTKのみサポート)。<?BR>
GTKのコールバックから受けとる構造体を扱う方法が不明のため、GUIイベント経由の<?PCkeyboard>取得やファイルダイアログからのキャンセル取得などが不明。<?BR>
「docs/」フォルダ内のドキュメントを「<?https/kanedit_etc.tsv>」ベースで描き直し中。執筆途中状態の関数一覧タグ解説項目あり。<?BR>
「<?https/LTsv_doc.py>」でタグの順序が厳格という問題があるのでいっその事スクリプト言語ごと新規に作ろうと思います(TSFの開発)。<?BR>
<?/PP>
LTsv版の「<?https/kanedit.py>」の開発を凍結してTSF版の「kanedit」を作成する予定です。言語の開発には時間が必要なので、平行してVim版「<?https/kanedit.vim>」も開発です。<?BR>
「<?https/kanedit.vim>」と「<?https/kanedit.py>」とで操作方法が乖離してますがTSF版もVim版の方向になるべく揃える予定です。LTsv版は互換性の維持程度に止まると思います。<?BR>
<?/P>
<?https/kanedit_faq:TSF1KEV>
<?P> TSF版作る前に<?DICmap>のグリフ圧縮アルゴリズムを「5x10x」から「5x10x20x」に変更したいので、移行ツール作成→一時的に無圧縮→新アルゴリズムのグリフと交換などの間多少の混乱が発生するかと思います。<?BR><?/P>
|<#contents/License-2>]
[<?https/License:mit>*<?https/License:osdn>*<?https/License:postd>*<?https/License:LTsv10kanedit>|
:<$web/License-0> MIT License - Choose a License
:<$url/License-0> http://choosealicense.com/licenses/mit/
:<$web/License-1> licenses/MIT_license - Open Source Group Japan Wiki - Open Source Group Japan - OSDN
:<$url/License-1> https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license
:<$web/License-2> MITライセンスを1行1行読んでいく | プログラミング | POSTD
:<$url/License-2> http://postd.cc/mit-license-line-by-line/
:<$web/License-3> ooblog/LTsv10kanedit: 「L:Tsv」の読み書きを中心としたモジュール群と漢字入力「kanedit」のPythonによる実装です(準備中)。
:<$url/License-3> <?url/ooblog:LTsv10repository>
.+\.html? <dl><dt><$web/License-@c></dt><dd><a href="<$url/License-@c>" title="<$web/License-@c>"><$url/License-@c></a></dd></dl>
.* <$web/License-@c><?BR>@E <$url/License-@c><?BR>
|<?https/License:mit>*<?https/License:osdn>*<?https/License:postd>*<?https/License:LTsv10kanedit>]
[<?section/aboutLTsv-0>*<?section/aboutLTsv-1>|
.+\.html? <section>@E <h3 id="aboutLTsv-@c"><?title/aboutLTsv-@c></h3>@E<#contents/aboutLTsv-@c>@E</section>@E
.* @E<?title/aboutLTsv-@c>@E@E<#contents/aboutLTsv-@c>@E
|<?section/aboutLTsv-0>*<?section/aboutLTsv-1>]
[<#contents/aboutLTsv-0>|
<?P> データ間の区切りをタブ(\t)、「label:data」の様にコロン(:)でデータにラベルを付けたのが「LTSV」です。<?BR>
素のLTSVファイル自体は単なるログのフォーマットです。<?BR>
<?/P>
<?https01-0:ltsvorg>
<?https01-0:ltsvfaq>
<?P> 「L:Tsv」は「*.tsv」「*.ltsv」ファイルの事を差す場合もありますがLTSVパーサ類を含めた「tsvtool」も含めて「L:Tsv」と呼ぶ場合があります。<?BR>
複数のLTSVを1つのファイルで保存できるようタグで区切ったり、日時処理や分数電卓やGTK&Tkinterなどを加えたり、Python2,3のprint関数バージョン違いを吸収させたりと、<?BR>
LTSVパーサに雑多な拡張を重ねていった結果、漢直エディタ環境と化したモジュール群が今の「L:Tsv」です。<?BR><?/P>
|<#contents/aboutLTsv-0>]
[<?https01-0:ltsvorg>*<?https01-0:ltsvfaq>|
:<$web/ltsv-0> Labeled Tab-separated Values (LTSV)
:<$url/ltsv-0> http://ltsv.org/
:<$web/ltsv-1> LTSV FAQ - LTSV って何? どういうところが良いの?
:<$url/ltsv-1> http://d.hatena.ne.jp/naoya/20130209/1360381374
.+\.html? <dl><dt><$web/ltsv-@c></dt><dd><a href="<$url/ltsv-@c>" title="<$web/ltsv-@c>"><$url/ltsv-@c></a></dd></dl>
.* <$web/ltsv-@c><?BR>@E <$url/ltsv-@c><?BR>
|<?https01-0:ltsvorg>*<?https01-0:ltsvfaq>]
[<#contents/aboutLTsv-1>|
<?P> データ間の区切りはタブ(\t)です。一般的なCSVやLTSV等と事なり、複数のタブがあっても1つのタブとみなします(文字列長0のデータを扱う場合はラベル推奨)。<?BR>
先頭データの事をfirst、先頭以降のデータの事をrestと呼びます。例えばLispでも、car関数の代わりにfirst関数、cdr関数の代わりにrest関数が使えたはず。<?BR>
firstは縦軸ラベルとして使う場合があります。restでは「label:data」の様なラベルとデータをコロン(:)で区切る形の軸ラベルが付けられます。簡単に言うとrestでLTSVが使えます。<?BR>
LTSVを「[tag<?|>」と「<?|>tag]」の様に<?contents01-1:tagsplit><?BR>
拡張子は「.ltsv」か「.tsv」。メモリ上など拡張子で区別できない場合でもメタタグで判定。メタタグが存在しない場合ファイル全体を1つのページとみなす。<?BR>
first縦軸ラベル自体にコロン(:)が含まれる(「label:data」のようになってる)場合、ページ全体を1つのLTSVとみなす場合がある(「LTsv_label2dictint()」「LTsv_label2dictstr()」など)。
<?/PP>
メタタグ「L:Tsv」のfirst縦軸ラベルの解説。<?BR>
<?/P>
<?DLDT> [L:Tsv<?|><?/DTDD> 「L:Tsv」ファイルの宣言です。マジックナンバー代わりなのでなるだけファイルの先頭に。<?/DD/DL>
<?DLDT> code<?/DTDD> 文字コードの宣言で「UTF-8」。Windowsだろうが半角は3バイトで保存するので注意。<?/DD/DL>
<?DLDT> enter<?/DTDD> 改行の宣言で「LF」。Windowsだろうが改行は1バイトで保存するので注意。<?/DD/DL>
<?DLDT> tab<?/DTDD> タブインデントの宣言で半角スペース「4」。フォント「kan5x5comic」の半角と全角の幅の比率は約5:3(1024:624)なので注意。<?/DD/DL>
<?DLDT> program<?/DTDD> 「L:Tsv」ファイルをどの様に扱うかを表す規格名(プログラム名)を記述。例えば「LTsv_doc」では「LTsv_doc.py」。<?/DD/DL>
<?DLDT> 1st<?/DTDD> 「L:Tsv」自体を何かのスクリプトとして実行する場合に最初に実行するページ指定を想定。例えば「LTsv_doc」では「LTsv_doc_tsv」など。<?/DD/DL>
<?DLDT> LTsvver<?/DTDD> 構文解析パーサのバージョン。「LTsv_file.py」の「LTsv_file_ver()」。<?/DD/DL>
<?DLDT> modify <?/DTDD> 「L:Tsv」ファイルの更新日時。「LTsv_time.py」の「LTsv_getdaytimestr(overhour=24,diffminute=0)」を想定。「LTsv_file.py」で「LTsv_savefile()」上書き時に更新。<?/DD/DL>
<?DLDT> <?|>L:Tsv]<?/DTDD> メタタグ「L:Tsv」を閉じます。<?contents01-1:tagsplit><?/DD/DL>
<?P>
「L:Tsv」のメタタグは「LTsv_newfile()」関数でも作成可能。「<?index/LTsv_file-0>」も参考。<?BR><?/P>
|<#contents/aboutLTsv-1>]
[<?contents01-1:tagsplit>|
.* タグで区切る事で1つのファイルに複数のCSVやLTSVやTXTといったページを格納できます。
|<?contents01-1:tagsplit>]
[<?section/LTsv_printf-0>*<?section/LTsv_printf-1>|
.+\.html? <section>@E <h3 id="LTsv_printf-@c"><?title/LTsv_printf-@c></h3>@E<#contents/LTsv_printf-@c>@E</section>@E
.* @E<?title/LTsv_printf-@c>@E@E<#contents/LTsv_printf-@c>@E
|<?section/LTsv_printf-0>*<?section/LTsv_printf-1>]
[<#contents/LTsv_printf-0>|
<?P> 「<?https/LTsv_printf.py>」はPythonのprint関数の代わりにlibcのprintfを呼び出すモジュールです。<?BR>
・Wine上DOSのエラー要因だった<?CP932>などに変換させる事で範囲内の漢字が扱えるようになります。<?BR>
・変換できない文字は数値文字参照に変換されます。<?BR>
・その他数値文字参照(文字参照含む)の変換、全角半角大文字小文字ひらがなカタカナの変換などが扱えます。<?BR>
・単体風テストでは仮名変換「LTsv_kanare()」など関数群の挙動確認などができます。<?BR><?/P>
<!LTsv_printf.py>
|<#contents/LTsv_printf-0>]
[LTsv_printf.py|
LTsv_getpreferredencoding() 「sys.stdout.encoding」(ターミナルのエンコード)を返す。 「sys.stdout.encoding」が取得できない(Noneを返す)場合は「locale.getpreferredencoding()」からターミナルのエンコード取得を試みる。
LTsv_libc_printf(LTsv_text,LTsv_log=None) LTsv_textの文字列をターミナル(stdout)に表示する。LTsv_logと返り値を指定する事で変数にも出力追記できる。 LTsv_textに渡す文字列は「"{0}".format(data)」みたいに事前に「str.format()」などで加工する。 扱えない文字は数値文字参照(「咖喱」が「咖喱」)に変換される。 「ctypes.cdll.msvcrt(MS-DOS)」は1024バイト(文字数ではなくバイト)を超える文字列を扱えない様子。
LTsv_libc_printcat(LTsv_text) 上記LTsv_libc_printfからログ保存やL:Tsvタグエスケープ処理などを取り除いたもの。
LTsv_libc_printf_type(LTsv_text,LTsv_log=None) Python2では「<?<>type 'str'<?>>」Python3だと「<?<>class 'bytes'<?>>」のようにprintfに渡すバイナリ文字列の変数の型を表示。 LTsv_logと返り値を指定する事で変数にも出力追記できる。
LTsv_utf2xml(LTsv_text) LTsv_textの文字列を数値文字参照に変換。
LTsv_xml2utf(LTsv_text) LTsv_textの文字参照(数値文字参照含む)を文字列に変換。
LTsv_kanare(LTsv_before,LTsv_recase) 全角半角大文字小文字ひらがなカタカナの変換を行います。LTsv_beforeに変換する文字列、LTsv_recaseで変換辞書指定。 変換辞書LTsv_recaseのパラメータは「<?index/LTsv_printf-1>」を参考。
LTsv_utf2ink(LTsv_text) UTF-8をkantrayの「UTF-8点字」に変換(バイナリの点字表記)。 点字フォントが表示できる環境にないと動作確認は困難なので注意。
LTsv_ink2utf(LTsv_text) 上記「UTF-8点字」をUTF-8に戻す。 データ破損を補完する機能はないので注意。
LTsv_subprocess(LTsv_subprocess_input="",LTsv_subprocess_shell=False) ターミナルにコマンドを送る。実行結果も取得できる。 「LTsv_subprocess_shell=True」でgrepなどパイプライン処理のような事もできるようになるが、インジェクション脆弱性の恐れが発生するので注意。
LTsv_otherprocess(LTsv_otherprocess_input="") 別プロセスでコマンドを実行する。
|LTsv_printf.py]
[<#contents/LTsv_printf-1>|
<?DLDT> "Hira2Kata"<?/DTDD> ひらがなをカタカナに。<?/DD/DL>
<?DLDT> "Kata2Hira"<?/DTDD> カタカナをひらがなに。<?/DD/DL>
<?DLDT> "HiraKana2SeiH"<?/DTDD> 濁音を清音に。「ぱぴぷぺぽ」と「ぱぴぷぺぽ」は「はひふへほ」に。<?/DD/DL>
<?DLDT> "HiraKana2SeiM"<?/DTDD> 濁音を清音に。「ばびぶべぼ」は「はひふへほ」に、「ぱぴぷぺぽ」を「まみむめも」に。<?/DD/DL>
<?DLDT> "HiraKana2DakB"<?/DTDD> 清音を濁音に。「はひふへほ」は「ばびぶべぼ」に。<?/DD/DL>
<?DLDT> "HiraKana2DakP"<?/DTDD> 清音を濁音に。「はひふへほ」は「ばびぶべぼ」に、「まみむめも」を「ぱぴぷぺぽ」に。<?/DD/DL>
<?DLDT> "HiraKana2Han"<?/DTDD> ひらがなもカタカナも半角に。<?/DD/DL>
<?DLDT> "HiraKana2HanKaKe"<?/DTDD> ひらがなもカタカナも「ヵヶ」も半角に。<?/DD/DL>
<?DLDT> "Han2HiraEz"<?/DTDD> 半角をひらがなに(濁音は分離したまま)。<?/DD/DL>
<?DLDT> "Han2KataEz"<?/DTDD> 半角をカタカナに(濁音は分離したまま)。<?/DD/DL>
<?DLDT> "Han2Hira"<?/DTDD> 半角をひらがなに(濁音があっても1つの文字に統合)。<?/DD/DL>
<?DLDT> "Han2Kata"<?/DTDD> 半角をカタカナに(濁音があっても1つの文字に統合)。<?/DD/DL>
<?DLDT> "Alpha2BIG"<?/DTDD> 半角全角にかかわらずアルファベットを大文字に(キリル文字ギリシャ文字含む)。<?/DD/DL>
<?DLDT> "Alpha2SML"<?/DTDD> 半角全角にかかわらずアルファベットを小文字に(キリル文字ギリシャ文字含む)。<?/DD/DL>
<?DLDT> "Alpha2HAN"<?/DTDD> 大文字小文字にかかわらずアルファベットを半角に(キリル文字ギリシャ文字含まない)。<?/DD/DL>
<?DLDT> "Alpha2ZENBS"<?/DTDD> 大文字小文字にかかわらずアルファベットを全角に(キリル文字ギリシャ文字含まない)。バックスラッシュは「\」へ。<?/DD/DL>
<?DLDT> "Alpha2ZENYen"<?/DTDD> 大文字小文字にかかわらずアルファベットを全角に(キリル文字ギリシャ文字含まない)。バックスラッシュは「¥」へ。<?/DD/DL>
|<#contents/LTsv_printf-1>]
[<?section/LTsv_file-0>|
.+\.html? <section>@E <h3 id="LTsv_file-@c"><?title/LTsv_file-@c></h3>@E<#contents/LTsv_file-@c>@E</section>@E
.* @E<?title/LTsv_file-@c>@E@E<#contents/LTsv_file-@c>@E
|<?section/LTsv_file-0>]
[<#contents/LTsv_file-0>|
<?P> 「<?https/LTsv_file.py>」は「L;Tsv」ファイルの基本的な読み書きモジュールです。
・「<?LTsv>」の本編です。主に「L:Tsv」の読み書きです。<?BR>
・Python2とPython3のテキストファイル読み込み方法の違いを吸収する手段にも使えます。<?BR>
・modify項目で「LTsv_getdaytimestr()」を使うので「LTsv_time.py」モジュールも必要。<?BR><?/P>
<!LTsv_file.py>
|<#contents/LTsv_file-0>]
[LTsv_file.py|
LTsv_newfile(LTsv_program,LTsv_default=None) 「L:Tsv」ファイルを変数上に作成する。 LTsv_programには「L:Tsv」ファイルを扱うプログラムまたは規格を記述。 LTsv_defaultには「L:Tsv」ファイル自体をスクリプトとして実行する場合の1stページの指定。 メタタグについては「<?index/aboutLTsv-1>」も参考。
LTsv_download(LTsv_url,LTsv_path,LTsv_reporthook=None) ネット上のLTsv_urlにあるファイルをローカルのLTsv_pathに保存する。 ダウンロード中にLTsv_reporthook(count,blocksize,totalsize)をコールバックして状況報告させる事は可能(スレッド関係の扱いに注意)。
LTsv_zipload(LTsv_zip,LTsv_name,LTsv_path) ローカル上のLTsv_zipにあるファイルをローカルのLTsv_pathに解凍する。元のzipファイルはそのまま。
LTsv_64load(LTsv_path,LTsv_codewidth=128) ローカル上の画像ファイルなどをテキスト(base64)に変換した形で読み込む。元の画像ファイルはそのまま。
LTsv_loadfile(LTsv_path,LTsv_encoding="utf-8",LTsv_default=None) ローカル上のLTsv_pathから「L:Tsv」ファイルを読み込む。 LTsv_encodingにテキストのコード指定。例えば<?CP932>を読み込むときは「LTsv_encoding="cp932"」が必要。 LTsv_defaultは読み込みできなかった場合の初期値を指定。
LTsv_readlinepages(LTsv_text) LTsv_textテキスト内のタグ「[tag<?|>」一覧を1行のLTSVとして取得する。
LTsv_getpage(LTsv_text,LTsv_tag,LTsv_default=None) タグ「[LTsv_tag|」「|LTsv_tag]」で囲まれた範囲のLTSVページを取得。 LTsv_default(LTsv_page)はページを取得できなかった場合の初期値を指定。
LTsv_readlinedeno(LTsv_text) LTSVページの行数を数える。LTsv_textに改行が無くても1行とみなす。 LTsv_textの文字列長が0の場合0を返す。
LTsv_readlinenum(LTsv_text,LTsv_linenum,LTsv_default=None) 0から数えた行数でLTSVページから1行読み込む。 LTsv_default(LTsv_line)は読み込めなかった場合の初期値を指定。
LTsv_readlinefirsts(LTsv_text) LTSVページのfirst(縦軸ラベル)一覧を1行のLTSVとして取得。
LTsv_readlinerest(LTsv_text,LTsv_first,LTsv_default=None) LTSVページからfirst(縦軸ラベル)指定で先頭以下データrestを1行読み込む。first(縦軸ラベル)の取得にはタブ文字が必要。 LTsv_default(LTsv_rest)はrestが読み込めなかった場合の初期値を指定。
LTsv_pickdatadeno(LTsv_line) 1行のLTSVに含まれるデータ個数を取得(firstも0個目のデータとみなす)。 「label:data」をラベルとデータに分ける場合は「LTsv_split_label_data()」などを併用する。
LTsv_pickdatanum(LTsv_line,LTsv_datanum,LTsv_default=None) 1行のLTSVから0から数えた項目数指定で1個読み込む(firstも0個目のデータとみなす)。 「label:data」をラベルとデータに分ける場合は「LTsv_split_label_data()」などを併用する。
LTsv_split_label_data(LTsv_labeldata,LTsv_seldata=True) 「label:data」からlabelかdataのどちらかを取得。LTsv_seldataがTrueならdata部分を、Falseならlabel部分を返す。
LTsv_pickdatas(LTsv_line,LTsv_dataL=0,LTsv_dataR=0) 1行のLTSVから0から数えた項目数指定で範囲内の複数データを読み込む(firstも0個目のデータとみなす)。いわゆるスライス操作。 LTsv_dataLとLTsv_dataRが逆(Tsv_dataRの方が小さい)の場合でも関数内で自動的に並び替える。 LTsv_dataLとLTsv_dataRが同じ場合差分が無いので読み込まない。
LTsv_pickdatafind(LTsv_line,LTsv_find) LTsv_findが1行のLTSVの何項目にデータがあるか0から数える(firstも0個目のデータとみなす)。
LTsv_joindatanum(LTsv_line,LTsv_datanum,LTsv_default=None) 1行のLTSVのLTsv_datanum項目目にLTsv_default(LTsv_data)を追加する。 LTsv_datanumが0以下の場合先頭firstに追加。項目数以上の場合末尾に追加。 省略もしくは文字列長0の場合は何もしない。
LTsv_setdatanum(LTsv_line,LTsv_datanum,LTsv_default=None) 1行のLTSVのLTsv_datanum項目目にデータLTsv_default(LTsv_data)を上書する。 負数の場合や項目数以上の場合は何もしない。 LTsv_default(LTsv_data)を省略もしくは文字列長0のデータの場合は項目を削除。
LTsv_pickdatalabel(LTsv_line,LTsv_label,LTsv_default=None) 1行のLTSVから「label:data」形式の横軸ラベル(LTsv_label)指定で1個読み込む。 LTsv_default(LTsv_data)は読み込みできなかった場合の初期値を指定。
LTsv_pickdic(LTsv_text,LTsv_first,LTsv_label) 「LTsv_readlinerest()」と「LTsv_pickdatalabel()」をひとまとめに。<?DICchar>読込用途。 first(縦軸ラベル)で指定行、restの横軸ラベル(LTsv_label)で指定列、データ1個を読み込む。
LTsv_setdatalabel(LTsv_line,LTsv_label,LTsv_default=None) 1行のLTSVの「label:data」形式横軸ベル(LTsv_label)項指定でデータLTsv_default(LTsv_data)を上書する。 元LTSVに存在しない横軸ラベル(LTsv_label)の場合末尾に追加。 LTsv_default(LTsv_data)を省略した場合に項目はラベルごと削除。 文字列長0のデータLTsv_default(LTsv_data)であっても省略しなかった場合は横軸ラベル項目を追加もしくは上書き。 上記LTsv_joindatanumやLTsv_setdatanumと事なりLTsv_setdatalabelでは「label:」が単独で存在(文字列0の「data」が存在できる)違いがあるので注意。
LTsv_sievelabels(LTsv_rest,LTsv_labels="") データそのままにラベルを取り替える。 文字列0の「data」(データ数よりラベル数が多い場合を想定)は項目が消えるので注意。
LTsv_sievetuplelabels(LTsv_rest,*LTsv_labels) 「LTsv_sievelabels()」とほぼ同じだが、LTsv_labelがLTSVではなくタプル。
LTsv_pushlinenum(LTsv_text,LTsv_linenum,LTsv_default=None) LTSVページに0から数えた行数指定で1行LTsv_default(LTsv_line)を追加する。 1行追加想定だけど複数行のテキスト挿入も可能。 LTsv_default(LTsv_line)を省略もしくは文字列長0のデータの場合は何もしない。
LTsv_overlinenum(LTsv_text,LTsv_linenum,LTsv_default=None) LTSVページに0から数えた行数指定で1行LTsv_default(LTsv_line)を上書する。 1行上書想定だけど複数行のテキスト挿入も可能。 LTsv_default(LTsv_line)を省略もしくは文字列長0のデータの場合は1行削除。
LTsv_pushlinerest(LTsv_page,LTsv_first,LTsv_default=None) LTSVページにfirst(縦軸ラベル)指定でFirstにrest(LTsv_default)を追加する。 LTsv_page内にLTsv_firstが存在しない場合LTsv_page末尾に追加。 LTsv_rest(LTsv_default)を省略した場合に項目を削除。文字列長0であっても省略しなかった場合は追加もしくは上書き。 文字列長0のrestデータでも縦軸ラベルfirst(縦軸ラベル)の末尾にはタブ文字が付加(「first\t\n」)。
LTsv_putpage(LTsv_text,LTsv_tag,LTsv_default=None) タグ「[LTsv_tag|」「|LTsv_tag]」で囲まれたLTSVページとしてLTsv_default(LTsv_page)を上書き。 LTsv_text内にLTsv_tagタグが存在しない場合末尾に追加。タグ名が文字列長0の場合は何もしない。 LTsv_page(LTsv_default)を省略の場合はページ削除。文字列長0であっても省略しなかった場合は追加もしくは上書き。
LTsv_putmodify(LTsv_text) メタタグ「L:Tsv」の「modify」の更新のみを行う。「LTsv_getdaytimestr()」を使うので[LTsv_time.py]モジュールが必要。 「LTsv_newfile()」や「LTsv_savefile()」実行時と「LTsv_putmodify()」の時間はズレる場合がある事に注意。
LTsv_savedir(LTsv_path) 「LTsv_savefile()」「LTsv_saveplain()」で保存予定のファイル名が1個フォルダを必要とする場合、1個フォルダを作成する。 「os.mkdir()」を使うので、一気に深い階層のフォルダを作ろうとするとエラーになる。 「LTsv_savefile()」「LTsv_saveplain()」の内部で使用。
LTsv_savedirs(LTsv_path) 「LTsv_savefile()」「LTsv_saveplain()」で保存予定のファイル名が複数のフォルダを必要とする場合、複数のフォルダを作成する。 「os.makedirs()」を使って一気に深い階層のフォルダを作れてしまうので取扱い注意。
LTsv_savefile(LTsv_path,LTsv_default=None) ローカルのLTsv_pathに「L:Tsv」ファイル、LTsv_default(LTsv_text)を書き込む。ファイル保存時にメタタグ「L:Tsv」の「modify」の更新。 「LTsv_savedir()」を内部で呼び出すのでフォルダ1個分の階層なら自動でフォルダ作成。 LTsv_default(LTsv_text)を省略の場合はファイル削除(フォルダはそのまま)。
LTsv_saveplain(LTsv_path,LTsv_plain) ローカルのLTsv_pathにテキストファイルLTsv_plainを(LTsv_text)書き込む。 「LTsv_savedir()」を内部で呼び出すのでフォルダ1個分の階層なら自動でフォルダ作成される。
LTsv_labelzip(LTsv_labels,LTsv_datas) LTsv_labelsを横軸ラベル、LTsv_datasをデータとして、 「label/tlabel/t…」と「data/tdata/t…」を1行のLTSV「label:data/tlabel:data/t…」に束ねる。
LTsv_unziplabel(LTsv_line) 1行のLTSV「label:data/tlabel:data/t…」からラベルだけを取り出して「label/tlabel/t…」に。
LTsv_unzipdata(LTsv_line) 1行のLTSV「label:data/tlabel:data/t…」からデータだけを取り出して「data/tdata/t…」に。
LTsv_unziplabelsdata(LTsv_line,LTsv_labels) 1行のラベル有りLTSV「label:data/tlabel:data/t…」からラベル該当データだけ取り出して「label:data/tlabel:data/t…」に。 LTsv_labelsはtsv形式。
LTsv_unziptuplelabelsdata(LTsv_line,*LTsv_labels) 1行のラベル有りLTSV「label:data/tlabel:data/t…」からラベル該当データだけ取り出して「label:data/tlabel:data/t…」に。 LTsv_labelsはPythonのタプル形式。
LTsv_tuple2tsv(LTsv_tuple) Pythonのタプルやリストをtsvに。 forループよりjoin使った方が速い的なPythonあるある。
LTsv_tsv2list(LTsv_line,LTsv_len=None) tsvをPythonのリストに。 左辺でunpackする場合受けとる変数の個数をLTsv_lenで指定。 LTsv_lenがデータ数より多い場合は0文字列が補完される。
LTsv_tsv2tuple(LTsv_line,LTsv_len=None) 「LTsv_tsv2list()」のタプルバージョン。
LTsv_label2dictint(LTsv_line) LTSV「label:data/tlabel:data/t…」をPythonの辞書に。dataは数値化。 複数行あっても1つのLTSVとみなす。
LTsv_label2dictstr(LTsv_line) LTSV「label:data/tlabel:data/t…」をPythonの辞書に。dataは文字列化。 複数行あっても1つのLTSVとみなす。
LTsv_dict2label(LTsv_dict) Pythonの辞書「{"label":data,"label":data,…}」をLTSV「label:data/tlabel:data/t…」に。dataは文字列化。
LTsv_file_ver() 「LTsv_file.py」のバージョン表示(<@L:TsvLTsvver>)。
LTsv_issue() 「/etc/issue」を開いてLinuxのディストリビューションの種類を探る。バージョンの確認方法はディストリ毎に異なる予感。
|LTsv_file.py]
[<?section/LTsv_time-0>*<?section/LTsv_time-1>|
.+\.html? <section>@E <h3 id="LTsv_time-@c"><?title/LTsv_time-@c></h3>@E<#contents/LTsv_time-@c>@E</section>@E
.* @E<?title/LTsv_time-@c>@E@E<#contents/LTsv_time-@c>@E
|<?section/LTsv_time-0>*<?section/LTsv_time-1>]
[<#contents/LTsv_time-0>|
<?P> 「<?https/LTsv_time.py>」は日時フォーマットモジュールです。FPSも扱います。徹夜日時という概念があります。<?BR>
・とりあえず日時を取得する場合は「LTsv_getdaytimestr(overhour=24,diffminute=0)」で。<?BR>
・徹夜日時とは正子(夜中の午前0時)を24時として日付を切り替えずに25時(夜中の1時)、26時(夜中の2時)…と時だけが過ぎる状態です。<?BR>
・ISOカレンダーの週はISO8601の1月4日を含む週(最初の木曜日を含む週)を第1週と数える方法。曜日は月曜から始まるので土日は週末。ISOカレンダーの曜は月曜が1で土曜が6、日曜が7。<?BR>
・単体風テストでは複数の日時フォーマットを用いて関数群の挙動確認ができます。<?BR><?/P>
<!LTsv_time.py>
|<#contents/LTsv_time-0>]
[LTsv_time.py|
LTsv_yearleap(LTsv_toyear) 閏年ならTrue。
LTsv_yearweeks(LTsv_toyear) 一年の間に週(ISOカレンダーの週)が何回あるか、年間の週数52〜53を返す。
LTsv_monthleap(LTsv_toyear,LTsv_tomonth) 一月の間に日が何回あるか、28〜31を返す。閏年なら2月は29日。
LTsv_beat864(LTsv_tohour,LTsv_tominute,LTsv_tosecond) (LTsv_Beat,LTsv_BeatInteger,LTsv_BeatPoint)のタプルを返す。 LTsv_Beatは1日の秒数0?86399(86400)。@Beatはその秒数を86.4で割った一日を1000分割する数。 LTsv_BeatIntegerは@Beatの整数部分。LTsv_BeatPointは@Beatの小数部分。
LTsv_intstr0x(LTsv_code) "0xff","$80"のように16進数っぽいものは16進数で数値に、そうでないものは10進数と思ってint変換。 try節で囲む手間を省きたい場合に便利。
LTsv_settimerCounter(counter=None) LTsv_timerCounter「@c」の値を設定する(取得のみも可能)。
LTsv_checkFPS() LTsv_checkFPS()自身を1秒間に何回実行できるか計測。0〜999の範囲。
LTsv_setdaytimeshift() 日時フォーマット用の日時変数(LTsv_meridian_nowなど)を再計算する。 通常は「LTsv_putdaytimespecify(),LTsv_putdaytimenow(),LTsv_putdaytimeearlier(),LTsv_putdaytimemodify(),LTsv_putdaytimever()」から呼び出される内部関数。
LTsv_setdaytimeoption(overhour=None,diffminute=None) LTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定。 LTsv_putdaytimespecify(),LTsv_putdaytimenow(),LTsv_putdaytimeearlier(),LTsv_putdaytimemodify(),LTsv_putdaytimever()にも同等機能のオプションがある。
LTsv_putdaytimenow(overhour=None,diffminute=None) 現在時刻を「LTsv_meridian_now」に格納。各種日時変数も計算。 追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimeearlier(overhour=None,diffminute=None) 最後に実行された「LTsv_putdaytimenow()」の時刻「LTsv_earlier_now」を再度「LTsv_meridian_now」に格納。各種日時変数も計算。 追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimespecify(year=None,month=None,day=None,hour=None,minute=None,seconds=None,microsecond=None,overhour=None,diffminute=None) 日時を指定して「LTsv_meridian_now」に格納。省略(Noneを代入)した項目は現在時刻などが代入。 追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimemodify(LTsv_path,overhour=None,diffminute=None) ファイルLTsv_pathの更新時刻タイムスタンプをLTsv_meridian_nowに格納。各種日時変数も計算。 追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。 OSやファイルシステム毎に秒や分の精度に違いがあると思う。
LTsv_putdaytimever(LTsv_verstr,overhour=None,diffminute=None) 「LTsv_time_ver()」などの<?modify_style>をLTsv_meridian_nowに格納。各種日時変数も計算。 追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_getdaytimestr(timeformat=None,overhour=None,diffminute=None) 日付フォーマットtimeformatを各種日時変数で置換する。 timeformatのデフォルト値は「@000y@0m@0dm@wdec@0h@0n@0s」。 日付フォーマットの概要は「<?index/LTsv_time-1>」を参照。
LTsv_settimershift() 日時フォーマット用のタイマー変数(LTsv_lap_nowなど)を再計算する。 通常は「LTsv_puttimerstartgoal()」から呼び出される内部関数。
LTsv_settimershiftoption() LTsv_start_nowとLTsv_goal_nowの差分を再計算する。 通常は「LTsv_puttimerstartgoal()」から呼び出される内部関数。
LTsv_puttimerstartgoal(microsecond=None,millisecond=None,seconds=None,minute=None,hour=None,day=None) タイマーのLTsv_goal_nowを数秒後(seconds)・数分後(minute)・数時間後(hour)・数日後(day)などいずれかに設定する。 例えば三分後を指定する場合「LTsv_puttimerstartgoal(minute=3)」と入力。 複数のパラメータを同時指定した場合、例えば分と秒なら秒優先というように細かい方の単位が採用される(内部ではmicrosecondで計算)。
LTsv_puttimerspecify(year=None,month=None,day=None,hour=None,minute=None,seconds=None,microsecond=None) タイマーのLTsv_goal_nowを日時指定。省略(Noneを代入)した項目は現在時刻などが代入。
LTsv_puttimerlap() タイマーの経過時間をLTsv_passed_TotalSecondsに、残り時間をLTsv_timeleft_TotalSecondsに設定する。各種タイマー変数も計算。
LTsv_gettimerstr(timeformat=None) 日付フォーマットtimeformatを各種タイマー変数で置換する。 timeformatのデフォルト値は「@0h@0n@0s.0Rs」。時間フォーマットの概要は「<?index/LTsv_time-1>」を参照。
|LTsv_time.py]
[<#contents/LTsv_time-1>|
<?P> 0.「@」で始まるキーワードが年月日等に置換される仕組み。「@」を表示する場合は「@@」と表記。<?BR>
1.日付フォーマット(daytime系)では、小文字が現在時刻(meridian)、大文字が徹夜日時(allnight)です。分以下・Beat・timer系に徹夜日時はありません。<?BR>
2.時間フォーマット(timer系)では、小文字が現在時刻(lap)、大文字が曲や動画などの長さ(limit)、「-」が先頭でタイマーの残り時間(timeleft)です。<?BR>
3.分(miNute)は「n」で代用して月(Month)との変数名衝突防止してます。ミリ秒は「L」(miLlisecond)。マイクロ秒は「R」(micRoSecond)。<?BR>
4.「_」(アンダースコア)を先頭に入れると0が空白に。0も空白も省くと数値は可変長。<?BR>
5.月で「JFCAMNLUSOND」表記が使えます。曜で「UMTWRFS」表記が使えます。末尾に「ec」で英語1文字。末尾「j」で日本語表記。<?BR>
5.日時の月,週,時,分,秒で2桁以下の数値項目の場合、末尾に「z」で1,2,3,4,5,6,7,8,9,10,11,12といった1桁の時全角数値の表現が可能。<?BR>
<?/P>
<?DLDT> 年=@yzj,@yzc,@0yz,@_yz,@yz,@0yd,@_yd,@yd,@0yw,@_yw,@yw,@000yi,@___yi,@4yi,@0yi,@_yi,@2yi,@yi,@000y,@___y,@4y,@0y,@_y,@2y,@y,@Yzj,@Yzc,@0Yz,@_Yz,@Yz,@0Yd,@_Yd,@Yd,@0Yw,@_Yw,@Yw,@000Yi,@___Yi,@4Yi,@0Yi,@_Yi,@2Yi,@Yi,@000Y,@___Y,@4Y,@0Y,@_Y,@2Y,@Y<?/DTDD>
000y,___y,4y系は4桁の年(Year)。000y,___y,4y系は2桁の年(Yearlower)。<?BR>
yz系は干支(YearZodiac)。@yzjで鼠,牛,虎,兎,龍,蛇,馬,羊,猿,鶏,犬,猪。@yzcで子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥<?BR>
yi系はISOカレンダーの年(YearIso)。第1週に突入した時点で年が明けるので、年末年始の間は西暦カレンダーの年とズレる場合があります。<?BR>
ywi系は年間の週数(YearWeeksIso)。年間約52〜53回。1月4日が含まれる週が第1週(第1木曜日が含まれる週)。<?BR>
yd系は年間の日数(YearDays)。年間約365〜366日。閏年の時に1日増える。<?BR><?/DD/DL>
<?DLDT> 月=@0md,@_md,@md,@mec,@mes,@mel,@_mel,@meh,@_meh,@mjiz,@_mjiz,@mj,@_mj,@0m,@_m,@mz,@m,@0Md,@_Md,@Md,@Mec,@Mes,@Mel,@_Mel,@Meh,@_Meh,@Mjiz,@_Mjiz,@Mj,@_Mj,@0M,@_M,@Mz,@M<?/DTDD>
m系は月の数値(Month)。1?12。<?BR>
me系は月の英語表記。末尾「c」で一文字(JFCAMNLUSOND)、末尾「s」で三文字、末尾「l」で単語、末尾「h」で一文字の箇所大文字。<?BR>
(January,February,marCh,April,May,juNe,juLy,aUgust,September,October,November,December)<?BR>
mj系は神無月、mjiz系は神有月(睦月,如月,弥生,卯月,皐月,水無月,文月,葉月,長月,神有月,霜月,師走)表記の旧暦の月名。<?BR>
md系は月間の日数(MonthDays)。31,28,31,30,31,30,31,31,30,31,30,31。閏年は31,29,31,30,31,30,31,31,30,31,30,31と2月が29日になる。<?BR><?/DD/DL>
<?DLDT> 週=@0wnyi,@_wnyi,@wnyiz,@wnyi,@0Wnyi,@_Wnyi,@Wnyiz,@Wnyi,@0wnm,@_wnm,@wnmz,@wnm,@0Wnm,@_Wnm,@Wnmz,@Wnm<?/DTDD>
wnyi系はISOカレンダーの週番号(WeekNumberYearIso)。年間約52〜53回。1月4日が含まれる週が第1週(第1木曜日が含まれる週)。<?BR>
wnm系は月毎の曜番号(WeekNumberMonth)。月間約4?5回。単純に月内の日数を7で割った数。<?BR><?/DD/DL>
<?DLDT> 曜=@wdj,@wdec,@wdes,@wdel,@_wdel,@wdeh,@_wdeh,@wdi,@wd,@Wdj,@Wdec,@Wdes,@Wdel,@_Wdel,@Wdeh,@_Wdeh,@Wdi,@Wd<?/DTDD>
wd系は曜の数値(WeekDay)。月曜が0で土曜が5、日曜が6。<?BR>
we系は曜の英語表記。末尾「c」で一文字(MTWRFSU)、末尾「s」で三文字、末尾「l」で単語、末尾「h」で一文字の箇所大文字。<?BR>
(Monday,Tuesday,Wednesday,thuRsday,Friday,Saturday,sUnday)<?BR>
wj系は月火水木金土日。<?BR>
wdi系はISOカレンダー曜日の数値(WeekDayIso)。月曜が1で土曜が6、日曜が7。<?BR><?/DD/DL>
<?DLDT> 日(日付)=@0dm,@_dm,@dmz,@dm,@0dy,@_dy,@dy,@0Dm,@_Dm,@Dmz,@Dm,@0Dy,@_Dy,@Dy<?/DTDD>
日(時間)=@000d,@___d,@00d,@__d,@0d,@_d,@d,@-000d,@-___d,@-00d,@-__d,@-0d,@-_d,@-d,@000D,@___D,@00D,@__D,@0D,@_D,@D<?BR>
dm系は月換算の日数(DayMonth)。31,28,31,30,31,30,31,31,30,31,30,31。閏年は31,29,31,30,31,30,31,31,30,31,30,31と2月が29日になる。<?BR>
dy系は年換算の日数(DayYear)。年間約365〜366日。閏年の時に1日増える。<?BR>
時間フォーマット(timer系)では日は4桁まで使えます。<?BR><?/DD/DL>
<?DLDT> 時(日付)=@apj,@apel,@apeu,@ap,@Apj,@Apel,@Apeu,@Ap,@0hap,@_hap,@hapz,@hap,@0h,@_h,@hz,@h,@0H,@_H,@Hz,@H<?/DTDD>
時(時間)=@0dh,@_dh,@dh,@-0dh,@-_dh,@-dh,@0Dh,@_Dh,@Dh,@0h,@_h,@h,@-0h,@-_h,@-h,@0H,@_H,@H<?BR>
h系は時の数値(Hour)。1?24。大文字の「H」を使うと徹夜日時を表示(overhour)。1〜48。<?BR>
hap系は午前午後表記の数値(HourAP)。1〜12。<?BR>
apj系は午前午後徹夜表記。大文字の「A」を使うと徹夜日時を表示(overhour)。36時を過ぎようが徹夜日時の時は「徹夜」と表示される。<?BR>
ape系はam,pm,al表記。大文字の「A」を使うと徹夜日時を表示(overhour)。末尾「l」で小文字、末尾「u」で大文字。<?BR>
ap系は午前午後を0,1で。大文字の「A」を使うと午前午後徹夜を0,1,2で。何を言ってるか分からないだろうがoverhourの設定次第では昼の12時だろうが徹夜と表示。<?BR>
午前午後徹夜は時間フォーマット(timer系)には存在しません。<?BR><?/DD/DL>
<?DLDT> 分(日付)=@0n,@_n,@nz,@n,@0N,@_N,@Nz,@N<?/DTDD>
分(時間)=@0n,@_n,@n,@-0n,@-_n,@-n,@0N,@_N,@N<?BR>
n系は分(miNute)。0〜59。<?BR><?/DD/DL>
<?DLDT> 秒(日付)=@0s,@_s,@sz,@s,@0S,@_S,@Sz,@S,@0ls,@_ls,@ls,@0rs,@_rs,@rs,@0Ls,@_Ls,@Ls,@0Rs,@_Rs,@Rs<?BR>
秒(時間)=@0s,@_s,@s,@-0s,@-_s,@-s,@0S,@_S,@S,@0ls,@_ls,@ls,@-0ls,@-_ls,@-ls,@0Ls,@_Ls,@Ls,@0rs,@_rs,@rs,@-0rs,@-_rs,@-rs,@0Rs,@_Rs,@Rs<?/DTDD>
s系は秒(Second)。0〜59。<?BR>
ls系はミリ秒(miLlisecond)。ミリ秒は3桁、0〜999。<?BR>
rs系はマイクロ秒(micRoSecond)。マイクロ秒は6桁、0〜999999。<?BR><?/DD/DL>
<?DLDT> @Beat(日付)=@0bti,@_bti,@bti,@0btp,@_btp,@btp,@bt<?/DTDD>
@Beat(時間)=@0bti,@_bti,@bti,@0btp,@_btp,@btp,@0bt,@_bt,@bt,@-0bti,@-_bti,@-bti,@-0btp,@-_btp,@-btp,@-0bt,@-_bt,@-bt,@0Bti,@_Bti,@Bti,@0Btp,@_Btp,@Btp,@0Bt,@_Bt,@Bt<?/DTDD>
bt系はビート(Beat)の途中計算。1日の秒数0〜86399(86400)をそのまま表示。本当のビートは86.4秒。<?BR>
bti系はビートの整数部分(BeatInteger)。0?999。ビートとして使う場合、日本だと時差の指定「diffminute=8」が必要。<?BR>
btp系はビートの小数部分(BeatPoint)。0?999。ビートとして使う場合、日本だと時差の指定「diffminute=8」が必要。<?BR>
時間フォーマット(timer系)としてビートを用いる場合時差は関係無し。<?BR><?/DD/DL>
<?DLDT> 正負符号(時間)=@+-,@_-,@--<?/DTDD>
LTsv_lap_nowがLTsv_goal_nowを通りすぎた、いわゆるタイムオーバーの時はLTsv_lap_nowが負の数に。<?BR>
@+-はプラスマイナス両方表示。<?BR>
@_-はプラスの時は空白を表示。<?BR>
@--はマイナスのみ表示。プラスの時は一文字詰める。<?BR><?/DD/DL>
<?DLDT> @c(カウンター)=@000c,@00c,@0c,@c<?/DTDD>
「LTsv_getdaytimestr()」もしくは「LTsv_gettimerstr()」が実行される度にカウンター(LTsv_timerCounter)が加算される。<?BR>
カウンターの値を変更は「LTsv_settimerCounter()」。<?BR><?/DD/DL>
<?DLDT> その他エスケープ文字<?/DTDD>
@T=\t。タブ文字用。<?BR>
@E=\n。改行文字用。<?BR>
@Z=\0。文字列長0用。<?BR><?/DD/DL>
|<#contents/LTsv_time-1>]
[<?section/LTsv_calc-0>*<?section/LTsv_calc-1>|
.+\.html? <section>@E <h3 id="LTsv_calc-@c"><?title/LTsv_calc-@c></h3>@E<#contents/LTsv_calc-@c>@E</section>@E
.* @E<?title/LTsv_calc-@c>@E@E<#contents/LTsv_calc-@c>@E
|<?section/LTsv_calc-0>*<?section/LTsv_calc-1>]
[<#contents/LTsv_calc-0>|
<?P> 「<?https/LTsv_calc.py>」は電卓フォーマットモジュールです。分数計算を扱います。電卓フォーマットの概要は「<?index/LTsv_calc-1>」を参照。<?BR>
・「LTsv_calc()」に電卓フォーマットの計算式を渡すと分数が帰ってきます。通分できない分数の場合小数が帰ってきます。<?BR>
・単体風テストでは複数の電卓フォーマットを用いて関数群の挙動確認ができます。<?BR><?/P>
<!LTsv_calc.py>
|<#contents/LTsv_calc-0>]
[LTsv_calc.py|
LTsv_calc_GCM(LTsv_calcL,LTsv_calcR) 最大公約数。
LTsv_calc_LCM(LTsv_calcL,LTsv_calcR) 最小公倍数。
LTsv_calc_bracketsbalance(LTsv_calcQbase) 左右の括弧の数を合わせる。ついでに演算子の整理整頓など。
LTsv_calc_decimalize(LTsv_calcQbase) 分数を小数に。
LTsv_calc_fractalize(LTsv_calcQbase) 小数を分数に。
LTsv_calc(LTsv_calcQbase) 電卓フォーマットを入力すると分数計算。「1/3⇔1|3」と分数に計算。 LTsv_calc自体は主に括弧の正規表現による検索。括弧の内側を「LTsv_calc_function()」に渡す。 電卓フォーマットの概要は「<?index/LTsv_calc-1>」を参照。
LTsv_calc_function(LTsv_calcQbase) 主に数列和・数列積などの計算。「Σ(数列和)」などの左側を「LTsv_calc_addition()」に渡す。
LTsv_calc_addition(LTsv_calcQbase,LTsv_Count) 主に分数の加算減算。分数の積割処理で「LTsv_calc_addition()」を呼び出す。
LTsv_calc_multiplication(LTsv_calcQbase) 主に分数の積(分数の割り算含む)。小数排除処理で「LTsv_calc_fractalize()」呼び出す。
|LTsv_calc.py]
[<#contents/LTsv_calc-1>|
<?P> 分数「|」と割り算「/」を別物として扱います。分数の入れ子は「2|3|5|7⇔2|105」のように分母にまとめられます。<?BR>
通常は分数で計算するので「1/3⇔1|3」「1|3*3⇔1」になり一般的な電卓のように「0.999999999999」などにはならない。<?BR>
分数内で小数が使用可能です。「0.5|3.5⇔1|7」の様に小数が混在してても分数に変換します。<?BR>
加算「+」減算「-」と区別して表現できます。「1-(-2)」と括弧を使わなくても「1-m2⇔3|1」のようにマイナスで引くといった表現が可能。<?BR>
数列計算のカウント変数「c」は整数です。初期値は+1で増減は±1です。カウント変数に代入する過程で整数変換が発生するので注意。括弧の内外で別カウントになるので要注意。<?BR>
「(c+2)(c+1)」のように括弧間の演算子が省略された場合には(c+2)*(c+1)⇔6|1」のように掛け算を適用します。<?BR>
Pythonには整数有効計算範囲の概念は存在しないはずですが、小数計算ではPythonの実装・環境に応じた丸め誤差などが発生します。<?BR>
0で割るなどの計算できない場合は無限エラー扱いにして「n|0」と表示します。実際の無限には正負の概念が存在しますが電卓フォーマットの「n|0」は単に計算放棄です。<?BR><?/P>
<?index/LTsv_calc:number>
<?DLDT> 012456789 1234567890<?/DTDD> アラビア数字は全角でも使用できます。<?/DD/DL>
<?DLDT> 〇一二三四五六七八九<?/DTDD> 漢数字も使用できます。大字も「壱弐参肆伍陸漆捌玖零陌阡萬」が使用可能です。<?/DD/DL>
<?DLDT> 垓京兆億万千百十 銭<?/DTDD> 漢数字の万単位の繰り上がりも垓までとりあえず対応しています。銭は百分の一になります。<?/DD/DL>
<?index/LTsv_calc:operator>
<?DLDT> . . 小円<?/DTDD> 小数点は「3.1416⇔3927|1250」の様にドットを使います。「円」は「3円14銭」のような表現用途。<?/DD/DL>
<?DLDT> | | 分<?/DTDD> 分数を表します。分数中の小数は「0.5|3⇔1|6」のように通分されます。<?/DD/DL>
<?DLDT> p PpP 正<?/DTDD> 正の数を表現。符号が付加されてなければ0以上の数です。<?/DD/DL>
<?DLDT> m MmM 負<?/DTDD> 負の数を表現できます。「2-m1⇔3|1」のように負の数で引き算すると加算されます。<?/DD/DL>
<?DLDT> + + 加足和<?/DTDD> 足し算をします。計算結果は「1|6+1|3⇔1|2」のように通分されます。<?/DD/DL>
<?DLDT><?/DTDD><?/DD/DL>
<?DLDT> - - 減引差<?/DTDD> 引き算をします。計算結果は「3|4-1|4⇔1|2」のように通分されます。<?/DD/DL>
<?DLDT> * × 乗掛積<?/DTDD> 掛け算をします。計算結果は「2|3*3|4⇔1|2」のように通分されます。<?/DD/DL>
<?DLDT> / /÷ 除割商<?/DTDD> 割り算をします。計算結果は「2|5/4|5⇔1|2」のように通分されます。<?/DD/DL>
<?DLDT> \ \<?/DTDD> 整数未満を切り捨てる割り算をします。計算結果は「7\3⇔2」のように小数以下は切り捨てられます。<?/DD/DL>
<?DLDT> # # 余<?/DTDD> 割り算の余りを求めます。「3|2#1|3⇔1|6」のように分数も使えます。<?/DD/DL>
<?DLDT> L lLl 倍 <?/DTDD> 最小公倍数の計算。負数も絶対値で計算。同じ分母であれば分母を1と見なして無理やり計算。分母が異なる場合「n|0」エラー扱い。<?/DD/DL>
<?DLDT> G gGg 約<?/DTDD> 最大公約数の計算。負数も絶対値で計算。同じ分母であれば分母を1と見なして無理やり計算。分母が異なる場合「n|0」エラー扱い。<?/DD/DL>
<?DLDT> % % 率<?/DTDD> 消費税などの計算用。「10000+8%⇔10800|1」のように「10000×1.08⇔10800|1」と小数計算の手間簡略化。<?/DD/DL>
<?DLDT> y π 周<?/DTDD> 円周率。math.pi(約3.14159265359)が代入される。桁数はおそらくPython環境依存。<?/DD/DL>
<?DLDT> e e 底<?/DTDD> ネイピア数。math.e(約2.71828182846)が代入される。桁数はおそらくPython環境依存。<?/DD/DL>
<?index/LTsv_calc:bracket>
<?DLDT> ()()<?/DTDD> 括弧の中を先に計算する「3(c+1)→3×(c+1)→3×(1+1)→3×2」。もしくは数列の表現にも使用。<?/DD/DL>
<?DLDT> c CCc 数<?/DTDD> 数列内で有効なカウント変数。括弧の内外で異なる数列を数えるので注意。初期値は「1」。<?/DD/DL>
<?DLDT> S SsSΣ 列但※<?/DTDD> 数列和。「(cΣ1~5)→1+2+3+4+5」といった等差数列の和を想定。<?/DD/DL>
<?DLDT> ! ! 方<?/DTDD> 数列積。「(2!1~4)→2×2×2×2」のような乗数や「(c!1~5)→1×2×3×4×5」のような階乗を想定。<?/DD/DL>
<?DLDT> ~ ~ ?<?/DTDD> 数列和(もしくは数列積)の範囲指定。「(cΣ1~4)→1+2+3+4」「(c!4~1)→4×3×2×1」と増減±1の計算は自動。<?/DD/DL>
<?index/LTsv_calc:nonuse>
<?DLDT> n NnN∞ 無<?/DTDD> 0で割った時など計算"できない"事を表す「n|0」と同じ。本当の無限には正負などがあるが、単純に未定というか計算放棄。<?/DD/DL>
<?DLDT> , <?/DTDD> 「10,800⇔10800|1」とコンマ無しの計算結果を帰します。使用でき無い他の演算子もだいたいコンマ扱いです。<?/DD/DL>
<?DLDT> √<?/DTDD> 平方根に使う予定の演算子。分数電卓なので無理数などの扱いに困ってる。<?/DD/DL>
|<#contents/LTsv_calc-1>]
[<?index/LTsv_calc:number>*<?index/LTsv_calc:operator>*<?index/LTsv_calc:bracket>*<?index/LTsv_calc:nonuse>|
:<$title/LTsv_calc-0> 使用できる数字
:<$title/LTsv_calc-1> 使用できる演算子
:<$title/LTsv_calc-2> 括弧および関数用途の演算子
:<$title/LTsv_calc-3> 未実装等で使用できない演算子
.+\.html? <h4><$title/LTsv_calc-@c></h4>
.* <$title/LTsv_calc-@c>
|<?index/LTsv_calc:number>*<?index/LTsv_calc:operator>*<?index/LTsv_calc:bracket>*<?index/LTsv_calc:nonuse>]
[<?section/LTsv_joy-0>*<?section/LTsv_joy-1>*<?section/LTsv_joy-2>|
.+\.html? <section>@E <h3 id="LTsv_joy-@c"><?title/LTsv_joy-@c></h3>@E<#contents/LTsv_joy-@c>@E</section>@E
.* @E<?title/LTsv_joy-@c>@E@E<#contents/LTsv_joy-@c>@E
|<?section/LTsv_joy-0>*<?section/LTsv_joy-1>*<?section/LTsv_joy-2>]
[<#contents/LTsv_joy-0>|
<?P> 「<?https/LTsv_joy.py>」は<?gamepad>の入力をLTSVに変換するモジュールです。<?BR>
・WindowsでもPOVをPxPyの2軸として扱います。極座標変換は「LTsv_atanscalar()」と「LTsv_atanclock()」。<?BR>
・単体風テストで<?gamepad>の挙動確認ができます。「<?https/LTsv_gui.py>」でも挙動確認はできます。<?BR><?/P>
<!LTsv_joy.py>
|<#contents/LTsv_joy-0>]
[LTsv_joy.py|
LTsv_joyreset(LTsv_tsvpath) 「LTsv_joy.tsv」からモジュールの初期設定を読み込む。詳細は「<?index/LTsv_joy-1>」。
LTsv_joyexit() <?gamepad>の変数初期化です。Linuxではデバイスをクローズします。
LTsv_joyinit(LTsv_tsvpath="LTsv/LTsv_joy.tsv") <?gamepad>の準備です。Linuxではデバイスをオープンします。 「LTsv_joyinit()」のタイミングで<?gamepad>ので個数を受けとる。 0を受け取った場合<?gamepad>を見つけれてない状態。
LTsv_setjoydata(LTsv_joyid,LTsv_default=None) スティック(axisW/axisL)とボタン(button)の状態を読み込む。 axisリストとbuttonリストのタプルで返り値も受け取れる。
LTsv_getjoystr(LTsv_joyid,joyformat=None) スティックとボタンの状態を<?joyformat_label>のrestへLTSVで返す。 LTsv_joyidには<?gamepad>の番号を指定。 項目一覧の詳細は「<?index/LTsv_joy-2>」。
LTsv_atanscalar(LTsv_atanX,LTsv_atanY) スティック(axisW/axisL)の直交座標を極座標に変換、スティックの傾きを取得します。
LTsv_atanclock(LTsv_atanX,LTsv_atanY,LTsv_labels) ラジアン角度円周2πをLTsv_labelsのラベルに置き換え。 <?gamepad>の方角、上下左右東西南北などの表現を想定。
LTsv_joyaxis_label() Windowsなら「axisW」を返す。Windowsなら「axisL」を返す。 「LTsv_getjoystr()」でどのaxisを取得するべきかの調査用途。
|LTsv_joy.py]
[<#contents/LTsv_joy-1>|
<?P> 「<?https/LTsv_joy.tsv>」は「<?https/LTsv_joy.py>」の設定ファイルです。<?BR><?/P>
<!LTsv_joy.tsv>
|<#contents/LTsv_joy-1>]
[LTsv_joy.tsv|
[LTsv_deviceL| Linuxのデバイス指定ページ。
joy Linuxの場合デバイス名(から数字を省いた物)を指定。初期設定は「/dev/input/js」(「/dev/input/js0」を想定)。
[keydefault| 「LTsv_getjoystr()」のLTsv_joykbdformatの初期値設定。
axisL 初期値は「Lx\tLy\t_\tRx\tRy\tPx\tPy」。
axisW 初期値は「Lx\tLy\tRy\tRx\tPx\tPy」。
button 初期値は「X\tY\tA\tB\tC\tZ\tL\tR\tF\tJ\tS\tP」。 C,ZがむしろL1,R1。L,Rが機種によってZL,ZR(L2,R2)。F,JがいわゆるL3,R3。
[keyanother| 「keydefault」の初期値ボツ案などだがボタン配置解説用に温存。
axisUV Windowsを「dwXpos,dwYpos,dwZpos,dwRpos,dwUpos,dwVpos,dwPOV」固定でも構わなかったけどPOVもLinux同様に2軸にしてすり合わせたかったので直接は使わず。
axisLW 本来こうしたかった例「Lx\tLy\tRy\tRx\tPx\tPy」。でもこれだとZ軸(dwUpos,dwVpos)の扱いが謎に。
axisL7 Linuxドライバのaxis解釈が謎7軸なのは多分こうなるはずだったから予想「Lx\tLy\tLz\tRx\tRy\tRz\tPx\tPy」。そのせいでなのかWindowsとLinuxでaxisにズレが発生する。
axisW8 axisWが実際に6軸取得できる場合LTsv_getjoystr()に渡す配置「Lx\tLy\tRy\tRx\tPx\tPy\tLz\tRz」。Z軸を後付け設計にしたので注意。
buttonN いわゆる任天堂(3DS)配列風。「X\tY\tA\tB\tL\tR\tZL\tZR\tLC\tRC\tS\tP\tH」。
buttonP いわゆるソニー(PS4)配列風。「△\t□\t×\t○\tL1\tR1\tL2\tR2\tL3\tR3\tS\tO\tP」。。
|LTsv_joy.tsv]
[<#contents/LTsv_joy-2>|
<?DLDT> status<?/DTDD> axis最大値とボタン最大値。2項目。axis最大値はWindowsとLinuxでズレる場合があります。ループ内省略推奨。<?/DD/DL>
<?DLDT> button<?/DTDD> ボタンが押されてれば1。押されてなければ0。データ項目はボタンの個数分。WindowsとLinuxで共通。<?/DD/DL>
<?DLDT> axisL<?/DTDD> Linux版はPOVが2軸扱い。合計6項目の場合でも7項目を返すゲームPADが存在したりするので注意(PxPy軸がズレてる場合がある)。<?/DD/DL>
<?DLDT> axisW<?/DTDD> Windows版はPOVが1軸扱いですがスクリプト側で2軸に変換。通常6項目。<?/DD/DL>
|<#contents/LTsv_joy-2>]
[<?section/LTsv_kbd-0>*<?section/LTsv_kbd-1>|
.+\.html? <section>@E <h3 id="LTsv_kbd-@c"><?title/LTsv_kbd-@c></h3>@E<#contents/LTsv_kbd-@c>@E</section>@E
.* @E<?title/LTsv_kbd-@c>@E@E<#contents/LTsv_kbd-@c>@E
|<?section/LTsv_kbd-0>*<?section/LTsv_kbd-1>]
[<#contents/LTsv_kbd-0>|
<?P> 「<?https/LTsv_kbd.py>」は<?PCkeyboard>の入力(マウスのボタン含む)をLTSVに変換するモジュールです。<?BR>
・ウィンドウがアクティブでない時にもキー入力を取得するので取扱い注意。<?BR>
・WindowsとLinuxではキーフックの手段が異なるので一部関数「LTsv_kbdEVIOCGRAB()」がOS依存になるので注意。<?BR>
・仮想キーの番号はWindowsとLinuxで異なるので注意。「<?https/LTsv_kbd.tsv>」で調整。<?BR>
・「LTsv_kbd.py」単独の単体風テストでは<?PCkeyboard>の挙動確認は難しい(Windows環境ではターミナルの「GetAsyncKeyState」がWineの外なので拾えない)ので挙動確認は「<?https/LTsv_gui.py>」を使います。<?BR><?/P>
<!LTsv_kbd.py>
|<#contents/LTsv_kbd-0>]
[LTsv_kbd.py|
LTsv_kbdcatproc(LTsv_devname) 「cat /proc/bus/input/devices」からLTsv_devnameで検索して「event?」を返す。「?」の部分は数値。
LTsv_kbdreset(LTsv_tsvpath) [LTsv_kbd.tsv]からモジュールの初期設定や、<?keycode00FF>に名付けたキー名称を読み込む。
LTsv_kbdgettypename(LTsv_code) <?keycode00FF>をキー名称に変換。ひらがなキー名称は用いない。
LTsv_kbdgettypekana(LTsv_code) <?keycode00FF>をキー名称に変換。かな入力に用いるキーはひらがなキー名称を取得。
LTsv_kbdgettypecode(LTsv_name) キー名称を<?keycode00FF>に変換。
LTsv_kbdgettypegana(LTsv_gana) ひらがなキー名称を<?keycode00FF>に変換。ひらがな以外のキー名称も使用可能。
LTsv_kbdexit() <?PCkeyboard>(マウス含む)の変数初期化です。Linuxではデバイスをクローズします。
LTsv_kbdinit(LTsv_tsvpath="LTsv/LTsv_kbd.tsv",LTsv_initmouse=False) <?PCkeyboard>の準備です。Linuxではデバイスをオープンします。 Linuxで複数のマウスボタンを使う場合LTsv_initmouseで監視許可も出すことが可能です。 マウスボタンの配置は「<?index/LTsv_kbd-1>」を参考。 Windowsの場合逆にLTsv_initmouseと関係なくら最初から「MouseL:1\tMouseR:2\tMouseC:4」固定です。
LTsv_kbdEVIOCGRAB(LTsv_grabflag) ※Linux専用命令です。<?PCkeyboard>の入力をターミナルやテキストエリアなどに出力しないようにします。 Windowsのキーフックとすり合わせる過程で別の名前になる可能性があります。 漢直とかで<?PCkeyboard>のアルファベット入力を漢字出力に置き換える用途です。
LTsv_kbdwrite(LTsv_code,LTsv_press) ※Linux専用命令です。<?PCkeyboard>を入力した事にします。 「LTsv_kbdEVIOCGRAB()」実行中は動作しません。
LTsv_kbdwriteCtrl(LTsv_ganastsv) ※Linux専用命令です。「Ctrl」など複数のキーを押しながら入力みたいな動作を再現します。 「LTsv_kbdEVIOCGRAB()」実行中は動作しません。
LTsv_setkbddata(LTsv_kbdstacks,LTsv_mousestacks) <?PCkeyboard>の状態を読み込みます。 LTsv_kbdstacksとLTsv_mousestacksはLinuxでそれぞれのデバイスから一度に読み込む量の指定です。
LTsv_getkbdlabels(kbdformat=LTsv_defkbdformat) キー名一覧のtsvをLTsv_defkbdformatに渡すとキーの状態を表すLTSVが帰ってくる。 例えば「LTsv_getkbdlabels("MouseL\tMouseR\tMouseC")」とすると「MouseL:0\nMouseR:0\nMouseC:0」とかが帰ってくる。
LTsv_getkbdnames() 押された<?PCkeyboard>のキー名称を返す。<?keycode00FF>にキー名称が付けられる必要がある。
LTsv_getkbdcodes() 押された<?PCkeyboard>の<?keycode00FF>を返す。
LTsv_getkbdkanas() 押された<?PCkeyboard>のかな文字を返す。かな以外だと押された<?PCkeyboard>の<?keycode00FF>を返す。
|LTsv_kbd.py]
[<#contents/LTsv_kbd-1>|
<?P> 「<?https/LTsv_kbd.tsv>」は「<?https/LTsv_kbd.py>」の設定ファイルです。<?BR><?/P>
<!LTsv_kbd.tsv>
|<#contents/LTsv_kbd-1>]
[LTsv_kbd.tsv|
[LTsv_deviceL| Linuxのデバイス指定。
kbd 初期設定は「/dev/input/event?」。 万が一「LTsv_kbdreset()」内の「LTsv_kbdcatproc()」でデバイスを検出できない場合は直接指定。
mouse 初期想定は「/dev/input/event?」。 万が一「LTsv_kbdreset()」内の「LTsv_kbdcatproc()」でデバイスを検出できない場合は直接指定。
[LTsv_mouse_EV_KEY| ※Linux専用。マウスボタンなどの入力をWindowsのGetAsyncKeyStateの1,2,4みたいに<?keycode00FF>風に処理するための仮想キーコードの設定。
[LTsv_EV_REL| マウスホイールなどの入力を処理する予定だった設定枠(未実装)。
[LTsv_EV_ABS| その他アナログな入力を処理する予定だった設定枠(未定)。
[LTsv_typenameW| Windowsの「キー名称:<?keycode00FF>」の組み合わせを記述。 だがWineとWindows実機でGetAsyncKeyStateの返り値が違う様子。 ※この項目はページ全体がLTSVです。
[WineVK| Wineで得られる「キー名称:<?keycode00FF>」の組み合わせ解説用。<?PCkeyboard>の種類によって変化する怖れ。 ※この項目はページ全体がLTSVです。
[WindowsVK| Windowsの仮想キーで「キー名称:<?keycode00FF>」の組み合わせ確認用。 ※この項目はページ全体がLTSVです。
[LTsv_typenameL| Linuxの「キー名称:<?keycode00FF>」の組み合わせを記述。<?PCkeyboard>の種類によって変化する怖れ。 ※この項目はページ全体がLTSVです。
[LTsv_typegana| Windows仮想キーの「キー名称:<?keycode00FF>」の組み合わせ保存用。<?PCkeyboard>の種類によって変化する怖れ。 ※この項目はページ全体がLTSVです。
[LTsv_keydefault| 「LTsv_getkbdlabels()」のkbdformat初期値。 ※この項目はページ全体がLTSVです。
|LTsv_kbd.tsv]
[<?section/LTsv_gui-0>*<?section/LTsv_gui-1>|
.+\.html? <section>@E <h3 id="LTsv_gui-@c"><?title/LTsv_gui-@c></h3>@E<#contents/LTsv_gui-@c>@E</section>@E
.* @E<?title/LTsv_gui-@c>@E@E<#contents/LTsv_gui-@c>@E
|<?section/LTsv_gui-0>*<?section/LTsv_gui-1>]
[<#contents/LTsv_gui-0>|
<?P> 「<?https/LTsv_gui.py>」はウィンドウなど<?GUIwidget>を設置するモジュールです。<?BR>
・環境次第では「GTK2」と「Tkinter」が選べるはずですがPuppyLinuxでは「GTK2」Windows環境では「Tkinter」です。<?BR>
・「canvas」の描画高速化のため「LTsv_draw_*_shell(LTsv_GUI)」で関数オブジェクトを用意する手続き推奨。<?BR>
・「LTsv_window_main()」実行前に「print()」「LTsv_libc_printf()」などターミナル(stdout)系命令が実行されるとGUIが表示されない場合があります。<?BR>
・「LTsv_window_main()」実行後は<?GUIwidget>のイベント(「LTsv_window_after()」の様なタイマー系含む)が発生するまでPythonスクリプトが停止するので注意。<?BR>
・「LTsv_」を付加してないローカル変数が多々あるので変数名の衝突が心配。<?BR>
・「LTsv_widgetPAGE」はほぼ「LTsv_widget_newUUID()」で生成するユニークIDっぽいIDの事。<?BR>
・<?tasktrayNotify>関連は「Tkinter」で使えないので注意。他にも「Tkinter」で動かない命令はいくつか存在。<?BR>
・単体風テストでは<?GUIwidget>はもちろん、<?PCkeyboard>や<?gamepad>、日時フォーマットや電卓フォーマットなどの挙動確認もできます。<?BR><?/P>
<!LTsv_gui.py>
|<#contents/LTsv_gui-0>]
[LTsv_gui.py|
LTsv_guiCDLLver(LTsv_libname,LTsv_libvermin,LTsv_libvermax) 「LTsv_guiinit()」で使う「libgtk-x11-2.0.so.?」などの「?」のバージョン番号部分を探索。
LTsv_guiinit(LTsv_guistyle=LTsv_GUI_GTK2,LTsv_libvermin=0,LTsv_libvermax=0) どのGUIを使うか(「Tkinter」と「GTK2」の選択)を決定。 LTsv_guistyleでUI指定できるがPuppyLinuxだと強制的に「GTK2」。 Windowsだと今の所「Tkinter」。「WinAPI」はほぼ未実装。 「LTsv_libvermin」「LTsv_libvermax」でDLLバージョン違いの探索範囲指定。
LTsv_global_GUI() 「LTsv_GUI」の値(「Tkinter」「GTK2」どちらか)を取得。
LTsv_global_Notify() 「LTsv_Notify」の値(「WinAPI」「GTK2」どちらか)を取得。 「Tkinter」に<?tasktrayNotify>が存在しないので暫定的に「WinAPI」で対応。
LTsv_global_GTK2() 「LTsv_GUI_GTK2」の値"GTK2"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_Tkinter() 「LTsv_GUI_Tkinter」の値"Tkinter"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_WinAPI() 「LTsv_GUI_WinAPI」の値"WinAPI"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_libgtk() 「LTsv_libgtk」の値取得。「ctypes.CDLL("libgtk-x11-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_libgdk() 「LTsv_libgdk」の値取得。「ctypes.CDLL("libgdk-x11-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_libobj() 「LTsv_libobj」の値取得。「ctypes.CDLL("libgobject-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_canvasmotionZ() マウスはどの「canvas」上に存在しているのかを取得。
LTsv_global_canvasmotionX(motionZ=None) 「canvas」上のマウスのX座標(横)を取得。canvas外なら-1。 motionZを指定しないと隣接してる「canvas」間を移動する際に正しくない値を拾う場合がある。
LTsv_global_canvasmotionY(motionZ=None) 「canvas」上のマウスのY座標(縦)を取得。canvas外なら-1。 motionZを指定しないと隣接してる「canvas」間を移動する際に正しくない値を拾う場合がある。
LTsv_global_canvascolor() 「canvas」に設定した描画色を取得。
LTsv_global_canvasbgcolor() 「canvas」に設定した背景色を取得。
LTsv_global_canvasTAG(TkinterTAG=None) 「canvas」に設定した描画タグを取得。もしくは変更。
LTsv_global_widgetltsv(new_LTSV=None) <?GUIwidget>を管理している「L:Tsv」を取得。もしくは直接書き換え。
LTsv_global_widgetgetpage(LTsv_widgetPAGENAME) widgetを管理している「L:Tsv」からwidgetのページを取得。
LTsv_global_widgetOBJ(LTsv_objid) <?GUIwidget>などテキスト化できないオブジェクトは番号で管理していて、LTsv_objid暗号でオブジェクトを取得。
LTsv_global_pictureOBJ(LTsv_objid) LTsv_objid暗号で画像オブジェクトを取得。
LTsv_global_pictureW(LTsv_objid) 画像オブジェクトの横幅を取得。
LTsv_global_pictureH(LTsv_objid) 画像オブジェクトの縦幅を取得。
LTsv_global_iconOBJ(LTsv_objid) WindowsのアイコンIDを取得。
LTsv_global_popupmenuOBJ(LTsv_objid) ポップアップメニューのオブジェクトを取得。
LTsv_widget_newUUID(LTsv_widgetID=None) <?GUIwidget>管理用にユニークIDを発行する。 「uuid.uuid4()」と「str(time.time())」の組み合わせ。1秒未満以内に122bitの乱数が重複する事はほぼないと思うが重複する確率は理論上ゼロではないので注意。 LTsv_widgetIDにFalseを指定することで前回と同じIDを再発行できる。コールバック関数に自身のIDを渡す必要がある場合に必要。
LTsv_widget_newobj(LTsv_widgetPAGE,LTsv_widgetoption,widget_obj) 「LTsv_widgetPAGEXYWH()」のオブジェクト管理で番号が被らないようにするカウンター。
LTsv_widget_getobj(LTsv_widgetPAGE,LTsv_widgetoption) 「LTsv_widget_newobj()」で登録したオブジェクトを直接IDで吸い出す関数。
LTsv_widgetPAGEXYWH(LTsv_widgetPAGE,widget_o=None,widget_k=None,widget_t=None,widget_u=None,widget_s=None,widget_e=None,widget_a=None,widget_v=None,widget_b=None, widget_p=None,widget_m=None,widget_g=None,widget_f=None,widget_x=None,widget_y=None,widget_w=None,widget_h=None,widget_c=None, event_z=None,event_k=None,event_y=None,event_b=None,event_p=None,event_r=None,event_e=None,event_m=None,event_l=None,event_a=None,event_u=None, menu_o=None,menu_b=None,menu_c=None,dialog_t=None,dialog_c=None) 詳細は「<?index/LTsv_gui-1>」参考。
LTsv_fonttuple(LTsv_line) 「Tkinter」のフォント指定はタプルなので、例えばCSV「"kan5x5comic,10"」なら「(kan5x5comic,10)」のようにタプルに変換。
LTsv_GTKwidget_fixed(window_c,widget_o,widget_x,widget_y,widget_w,widget_h,widget_f=None,widget_d=False) 「GTK2」のコンテナを「gtk_fixed_put」にしてフォントも「gtk_widget_modify_font」で指定する。 widget_dは「gtk_bin_get_child」が要求される場合の分岐。
LTsv_hideondelete_shell(LTsv_windowPAGENAME=None) ウィンドウの閉じるボタンを押してもプログラム続行するようにする関数の取得。
LTsv_window_new(widget_n=None,event_b=None,widget_t="LTsv_window",widget_w=200,widget_h=120,event_z=None,event_k=None,event_y=None) 「window」オブジェクトを作成。widget_tにウィンドウのタイトル。 widget_w,widget_hにウィンドウサイズ(最小値)。event_zにコールバック関数登録で同時にリサイズの許可。 event_bはウィンドウを閉じた時にコールバック関数を呼ぶ場合指定。コールバック先で必ず「LTsv_window_exit()」を使う。 event_k,event_yはキーボード入力時(event_kが押した時event_yが離した時)のコールバック関数。
LTsv_widget_settext(LTsv_widgetPAGENAME,widget_t="") <?GUIwidget>の文字列を設定。
LTsv_widget_gettext(LTsv_widgetPAGENAME) <?GUIwidget>の文字列を取得。 ウィンドウのタイトル取得には「LTsv_window_title(LTsv_window_id)」という別解もある。
LTsv_widget_setnumber(LTsv_widgetPAGENAME,widget_s=0) <?GUIwidget>の数値を設定。
LTsv_widget_getnumber(LTsv_widgetPAGENAME) <?GUIwidget>の数値を取得。
LTsv_widget_seturi(LTsv_widgetPAGENAME,widget_u="") <?GUIwidget>のURIを設定。
LTsv_widget_geturi(LTsv_widgetPAGENAME) <?GUIwidget>のURIを取得。
LTsv_widget_showhide(LTsv_widgetPAGENAME,widget_i) <?GUIwidget>の表示非表示の設定。 「Tkinter」の<?GUIwidget>非表示オプション未確認。
LTsv_widget_disableenable(LTsv_widgetPAGENAME,widget_i) <?GUIwidget>の無効有効の設定。
LTsv_widget_focus(LTsv_widgetPAGENAME) <?GUIwidget>にフォーカスする(「edit」「entry」「spin」などにカーソルを合わせる)。
LTsv_window_main(LTsv_windowPAGENAME) <?GUIwidget>のイベント発生(コールバック)待機。スクリプトはここで一旦停止。 「LTsv_window_main()」の直後にもやる事ある場合「LTsv_window_after()」を使う。 「LTsv_guiinit()」から「LTsv_window_main()」の途中に「print()」「LTsv_libc_printf()」などコンソール系命令が挟まってるとGUIが起動しないので注意。
LTsv_window_after(LTsv_windowPAGENAME,event_b=None,event_i="mousemotion",event_w=1000) タイマーの設定。「LTsv_window_main()」から一時的に抜け出す手段の一つ。 event_bにコールバックする関数の指定。Noneの場合何もしない。 event_iでタグの指定。タイマーは複数設置できるのでタグで管理。 event_tでタイマーイベント発生のミリ秒の指定。
LTsv_window_foreground() アクティブウィンドウのIDを取得する。 ターミナルから起動した場合でもターミナルは別ウィンドウ。
LTsv_window_title(LTsv_window_id) 「LTsv_window_foreground()」で取得したウィンドウIDからタイトルを取得する。 通常使用の「LTsv_widget_gettext()」とは事なり別アプリのウィンドウからもタイトル取得できる。
LTsv_window_exit(window_objvoid=None,window_objptr=None) スクリプトを終了する。 ウィンドウを閉じる時のコールバック関数を指定(LTsv_window_newにevent_b)してる場合そのコールバック先の関数の最後に設定。
LTsv_window_none(window_objvoid=None,window_objptr=None) 何もしない。Pythonのpassみたいな使い方想定。
LTsv_screen_w(LTsv_windowPAGENAME="") ディスプレイの縦サイズ。 「Tkinter」ではルートウィンドウが設置されてからでないと「winfo_vrootwidth()」が使えないので注意(代わりに-1を返します)。
LTsv_screen_h(LTsv_windowPAGENAME="") ディスプレイの横サイズ。 「Tkinter」ではルートウィンドウが設置されてからでないと「winfo_vrootheight()」が使えないので注意(代わりに-1を返します)。
LTsv_window_wh(LTsv_windowPAGENAME) ウィンドウの縦サイズ横サイズをタプルで取得。
LTsv_window_w(LTsv_windowPAGENAME) ウィンドウの横サイズを数値で取得。
LTsv_window_h(LTsv_windowPAGENAME) ウィンドウの縦サイズを数値で取得。
LTsv_window_resize(LTsv_windowPAGENAME,widget_w=16,widget_h=16) 「window」のリサイズ。
LTsv_label_new(LTsv_windowPAGENAME,widget_n=None,widget_t="LTsv_label",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「label」オブジェクトを作成。テキストを表示。widget_tにラベルで表示するテキスト。 widget_fはCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。「LTsv_fonttuple()」も参考。
LTsv_image_new(LTsv_windowPAGENAME,widget_n=None,widget_u="LTsv_logo.png",widget_x=0,widget_y=0) 「image」オブジェクトを作成。画像を表示。widget_uに画像のファイルパス。 「LTsv_image_new()」は「LTsv_label_new()」と違ってwidget_w,widget_hによるオブジェクトの大きさ指定は無く、widget_x,widget_yによる表示位置座標のみ。
LTsv_button_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_button",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「button」オブジェクトを作成。ボタンを押すとevent_bをコールバック。widget_tにボタンに表示するテキスト。
LTsv_check_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_check",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「check」オブジェクトを作成。チェックマークをONOFFするとevent_bをコールバック。widget_tにラベルに表示するテキスト。
LTsv_radio_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_radio",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「radio」オブジェクトを作成。ラジオボタンを選択するとevent_bをコールバック。widget_tにラベルに表示するテキスト。「LTsv_radio_new()」を連続して呼び出すと自動でラジオボタングループ(選択肢)として動作。 「LTsv_widget_getnumber()」で選択肢の取得。「LTsv_widget_setnumber()」で選択肢の変更。 GTKの場合チェックマークのONOFFと同じ理屈なのか2回分のコールバックが発生。 「Tkinter」の場合「LTsv_widget_setnumber()」でラジオボタンの個数を越える値も通るので注意。
LTsv_clipboard_new(LTsv_windowPAGENAME,widget_n=None) 「clipboard」を作成。クリップボードを用いたテキスト入力(コピペ補助)。 「LTsv_widget_settext()」「LTsv_widget_gettext()」でテキスト交換。
LTsv_clipmenu_new(widget_o) 「Tkinter」専用の内部関数。「edit」「entry」「spin」の右クリックメニュー(コピペ補助)を作成。
LTsv_edit_new(LTsv_windowPAGENAME,widget_n=None,widget_t="LTsv_edit",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「edit」オブジェクトを作成。テキスト複数行入力欄。widget_tに初期値テキスト。
LTsv_entry_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_entry",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「edit」オブジェクトを作成。テキスト1行入力欄入力欄。widget_tに初期値テキスト。 テキスト変更後エンターキーでevent_bをコールバック。
LTsv_spin_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_s=0,widget_e=255,widget_a=1,widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「spin」オブジェクトを作成。数値入力。数値変更でevent_bをコールバック。
LTsv_scale_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_s=0,widget_e=255,widget_a=1,widget_x=0,widget_y=0,widget_w=16,widget_h=16) 「scale」オブジェクトを作成。数値調節。数値変更でevent_bをコールバック。 「GTK2」と「Tkinter」で数値表示の位置というかデザインが異なるので注意。
LTsv_scale_adjustment(LTsv_widgetPAGENAME,widget_s=0,widget_e=255,widget_a=1) 「spin」「scale」の範囲を変更。 widget_s,widget_eで数値の範囲、widget_aで増減量の指定。
LTsv_combobox_list(LTsv_widgetPAGENAME,widget_t="") 「combobox」の項目を変更。widget_tに項目一覧をテキスト複数行で設定。
LTsv_combobox_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None) 「combobox」オブジェクトを作成。「GTK2」のみ。 項目変更でevent_bをコールバック。 「Tkinter」版tkkなので未実装。
LTsv_canvas_new(LTsv_windowPAGENAME,widget_n=None,widget_x=0,widget_y=0,widget_w=16,widget_h=16,event_p=None,event_r=None,event_e=None,event_m=None,event_l=None,event_w=100) 「canvas」オブジェクトを作成。画像やテキストの描画。マウスジェスチャーでコールバック発生。任意のGUIを作れるはず。 event_pはマウス押下時のコールバック。event_rはマウス押上時のコールバック。 event_eはマウスポインタが「canvas」枠内に入ったのコールバック。event_lはマウスポインタが「canvas」枠外に出た時のコールバック。 event_mはマウスポインタが「canvas」枠内滞在中event_wミリ秒毎に発生する。マウスを動かしてなくてもevent_mにコールバックするので注意。 「GTK2」だとラスタ(ドット絵)形式「Tkinter」だとベクター(クリップアートやFlash)形式の違いがあります。
LTsv_drawGTK_selcanvas(LTsv_canvasPAGENAME,draw_g="LTsv_draw_tkTAG") 描画先「canvas」の指定。 「GTK2」の場合描画図形に添付するタグ「LTsv_draw_tkTAG」は不要。「LTsv_draw_selcanvas_shell()」の互換性で存在。
LTsv_drawTkinter_selcanvas(LTsv_canvasPAGENAME,draw_g="LTsv_draw_tkTAG") 描画先「canvas」の指定。 「Tkinter」の場合描画図形に添付するタグ「LTsv_draw_tkTAG」も指定できる。
LTsv_draw_selcanvas_shell(LTsv_GUI) 「LTsv_drawGTK_selcanvas()」か「LTsv_drawTkinter_selcanvas()」の関数取得。 「LTsv_draw_selcanvas=LTsv_draw_selcanvas_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_delete(draw_c="white") 「canvas」に描画した図形の消去。 「GTK2」だと長方形を上描き描画して図形を消去する(塗りつぶす)。
LTsv_drawTkinter_delete(draw_c="white") 「canvas」に描画した図形の消去。 「Tkinter」ではタグ(初期値は「LTsv_draw_tkTAG」)が付けられた図形を消去する(消去のみで塗りつぶすわけではない)。
LTsv_draw_delete_shell(LTsv_GUI) 「LTsv_drawGTK_delete()」か「LTsv_drawTkinter_delete()」の関数取得。 「LTsv_draw_delete=LTsv_draw_delete_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawTkinter_deleteTAG(TkinterTAG=None) 「canvas」に描画した図形の消去。「Tkinter」で特定のタグ付けられた図形を消去する。
LTsv_draw_deleteTAG_shell(LTsv_GUI) 「LTsv_drawTkinter_delete()」の関数取得。 「LTsv_drawGTK_delete()」は存在しないが文法上「LTsv_draw_deleteTAG_shell()」が存在。
LTsv_drawGTK_color(draw_c="") 「LTsv_drawGTK_delete()」か「LTsv_drawTkinter_delete()」の関数取得。 「LTsv_draw_delete=LTsv_draw_delete_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawTkinter_color(draw_c="") 「canvas」描画色指定。
LTsv_draw_color_shell(LTsv_GUI) 「canvas」描画色指定。
LTsv_drawGTK_bgcolor(draw_c="") 「canvas」背景色指定。グリフ穴空けなどの図形消去に使う色指定。
LTsv_drawTkinter_bgcolor(draw_c="") 「canvas」背景色指定。グリフ穴空けなどの図形消去に使う色指定。
LTsv_draw_bgcolor_shell(LTsv_GUI) 「LTsv_drawGTK_bgcolor()」か「LTsv_drawTkinter_bgcolor()」の関数取得。 「LTsv_draw_bgcolor=LTsv_draw_bgcolor_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_polygon(*draw_xy) 「canvas」にポリゴン(ワイヤフレーム)の描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_polygon(*draw_xy) 「canvas」にポリゴン(ワイヤフレーム)の描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_polygon_shell(LTsv_GUI) 「LTsv_drawGTK_polygon()」か「LTsv_drawTkinter_polygon()」の関数取得。 「LTsv_draw_polygon=LTsv_draw_polygon_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_polygonfill(*draw_xy) 「canvas」にポリゴン(塗り潰し)の描画。頂点座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_polygonfill(*draw_xy) 「canvas」にポリゴン(塗り潰し)の描画。頂点座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_polygonfill_shell(LTsv_GUI) 「LTsv_drawGTK_polygonfill()」か「LTsv_drawTkinter_polygonfill()」の関数取得。 「LTsv_draw_polygonfill=LTsv_draw_polygonfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_squares(draw_wh=16,*draw_xy) 「canvas」に正方形(ワイヤフレーム)を描画。draw_whは円で例えると半径のサイズ。 中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_squares(draw_wh=16,*draw_xy) 「canvas」に正方形(ワイヤフレーム)を描画。draw_whは円で例えると半径のサイズ。 中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_squares_shell(LTsv_GUI) 「LTsv_drawGTK_squares()」か「LTsv_drawTkinter_squares()」の関数取得。 「LTsv_draw_squares=LTsv_draw_squares_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_squaresfill(draw_wh=16,*draw_xy) 「canvas」に正方形(塗り潰し)を描画。draw_whは円で例えると半径のサイズ。 中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_squaresfill(draw_wh=16,*draw_xy) 「canvas」に正方形(塗り潰し)を描画。draw_whは円で例えると半径のサイズ。 中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_squaresfill_shell(LTsv_GUI) 「LTsv_drawGTK_squaresfill()」か「LTsv_drawTkinter_squaresfill()」の関数取得。 「LTsv_draw_squaresfill=LTsv_draw_squaresfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_circles(draw_wh=16,*draw_xy) 「canvas」に円(ワイヤフレーム)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_circles(draw_wh=16,*draw_xy) 「canvas」に円(ワイヤフレーム)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_circles_shell(LTsv_GUI) 「LTsv_drawGTK_circles()」か「LTsv_draw_circles_shell()」の関数取得。 「LTsv_draw_circles=LTsv_draw_circles_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_circlesfill(draw_wh=16,*draw_xy) 「canvas」に円(塗り潰し)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_circlesfill(draw_wh=16,*draw_xy) 「canvas」に円(塗り潰し)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_circlesfill_shell(LTsv_GUI) 「LTsv_drawGTKfill_circles()」か「LTsv_draw_circlesfillfill_shell()」の関数取得。 「LTsv_draw_circlesfill=LTsv_draw_circlesfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_points(*draw_xy) 「canvas」に点を描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_points(*draw_xy) 「canvas」に点(短線)を描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_points_shell(LTsv_GUI) 「LTsv_drawGTK_points()」か「LTsv_drawTkinter_points()」の関数取得。 「LTsv_draw_points=LTsv_draw_points_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_arc(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi) 「canvas」に弧(円周のみ)を描画。「arc」の挙動が「GTK2」と「Tkinter」で事なる。 楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。 draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_drawTkinter_arc(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi) 「canvas」に扇(半径含む)を描画。「arc」の挙動が「GTK2」と「Tkinter」で事なる。 円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。 draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_draw_arc_shell(LTsv_GUI) 「LTsv_drawGTK_arc()」か「LTsv_drawTkinter_arc()」の関数取得。 「LTsv_draw_arc=LTsv_draw_arc_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_arcfill(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi) 「canvas」に弧(塗り潰し)を描画。結果的に「GTK2」と「Tkinter」がほぼ同じ挙動。 楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。 draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_drawTkinter_arcfill(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi) 「canvas」に扇(塗り潰し)を描画。結果的に「GTK2」と「Tkinter」がほぼ同じ挙動。 楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。 draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_draw_arcfill_shell(LTsv_GUI) 「LTsv_drawGTK_arcfill()」か「LTsv_drawTkinter_arcfill()」の関数取得。 「LTsv_draw_arcfill=LTsv_draw_arcfill_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_font(draw_f="") 「canvas」のフォント指定。widget_fにCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。 「LTsv_fonttuple()」も参考。
LTsv_drawTkinter_font(draw_f=None) 「canvas」のフォント指定。widget_fにCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。 「LTsv_fonttuple()」も参考。
LTsv_draw_font_shell(LTsv_GUI) 「LTsv_drawGTK_font()」か「LTsv_drawTkinter_font()」の関数取得。 「LTsv_draw_font=LTsv_draw_font_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_text(draw_t="",draw_x=0,draw_y=0) 「canvas」にフォントでテキストを描画。draw_tに文字列。左上座標はdraw_x,draw_y。 グリフでのテキスト描画は「<?index/LTsv_glyph-0>」を参考。
LTsv_drawTkinter_text(draw_t="",draw_x=0,draw_y=0) 「canvas」にフォントでテキストを描画。draw_tに文字列。左上座標はdraw_x,draw_y。 「Tkinter」には「<?CP932>」の制限があるのでグリフでのテキスト描画「<?index/LTsv_glyph-0>」も参考。
LTsv_draw_text_shell(LTsv_GUI) 「LTsv_drawGTK_text()」か「LTsv_drawTkinter_text()」の関数取得。 「LTsv_draw_text=LTsv_draw_text_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_draw_picture_load(LTsv_picturepath) 「canvas」用の画像を読み込む。LTsv_picturepathはローカルの画像ファイルのパス。 GUIオブジェクト(widget)の「image」とは別腹。 「Tkinter」では先に「LTsv_canvas_new()」で「canvas」を作って置く必要がある。
LTsv_draw_picture_celldiv(LTsv_picturepath,picture_divw,picture_divh) 「LTsv_draw_picture_load()」で読み込んだ(読み込んでなければ読み込む)画像を分割して「filepath[num]」の様に番号を付けることができる。 「GTK2」でのみ実装。
LTsv_draw_picture_save(LTsv_pictureoldpath,LTsv_picturenewpath) 「LTsv_draw_picture_celdiv()」で分割した、あるいは分割前の「LTsv_draw_picture_load()」読み込んだ画像を保存。png推奨。 「GTK2」でのみ実装。
LTsv_draw_canvas_save(LTsv_canvasPAGENAME,LTsv_picturenewpath) 「canvas」を画像保存。png推奨。 「GTK2」でのみ実装。
LTsv_drawGTK_picture(LTsv_picturepath,draw_x=0,draw_y=0) 「canvas」に「LTsv_draw_picture_load()」で読み込んだ(「LTsv_draw_picture_celdiv()」で分割した)画像を描画。 LTsv_picturepathは「LTsv_draw_picture_load(LTsv_picturepath)」と同じパス(LTsv_draw_picture_celldiv()の場合「filepath[num]」の添字num数値は分割数範囲内)。左上座標はdraw_x,draw_y。
LTsv_drawTkinter_picture(LTsv_picturepath,draw_x=0,draw_y=0) 「canvas」に「LTsv_draw_picture_load()」で読み込んだ画像を描画。 LTsv_picturepathは「LTsv_draw_picture_load(LTsv_picturepath)」と同じパス。左上座標はdraw_x,draw_y。
LTsv_draw_picture_shell(LTsv_GUI) 「LTsv_drawGTK_picture()」か「LTsv_drawTkinter_picture()」の関数取得。 「LTsv_draw_picture=LTsv_draw_picture_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_queue() 「canvas」の描画更新をする。描画更新を通知しないと描画が「window」に反映されません。「GTK2」でのみ必要。
LTsv_drawTkinter_queue() 「Tkinter」の「canvas」は描画更新を自動で行うのでこの関数は何もしません。文法上の都合で存在。
LTsv_draw_queue_shell(LTsv_GUI) 「LTsv_drawGTK_queue()」か「LTsv_drawTkinter_queue()」の関数取得。 「LTsv_draw_queue=LTsv_draw_queue_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_clockwise(*draw_xy) ポリゴンが時計回りなら正数、反時計回りなら負数、判定できない場合0のカウントを返す。 時計回りの判定は簡易的(外積による角度のみの計算で面積無視)なので8の字にねじった形状や十字手裏剣のような凹みのある形状を扱う場合注意。 座標は「LTsv_draw_polygon」系と同じくX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_icon_load(LTsv_picturepath) 通知タスクトレイ(Notify)に使うアイコン「*.ico」またはアイコンDLL「*.icl」を読込。 1つのファイルに複数のアイコンを認識できた場合「filepath[num]」の様に番号が添付される。 「WinAPI」でのみ実装(「Tkinter」でもWindowsなら「WinAPI」で対応)。「canvas」用途の画像とは別に管理。
LTsv_notifyicon_new(LTsv_windowPAGENAME,notify_n=None,widget_t="",widget_u="",menu_b=None,menu_c=None) <?tasktrayNotify>の作成。 「GTK2」ではポップアップメニュー表示を実装できたが、「Tkinter」で「WinAPI」のイベントを拾う方法が不明なのでポップアップメニューが開けない。 widget_tはツールチップテキスト。 widget_uはアイコンのURI(ファイルパス)。「GTK2」では「LTsv_draw_picture_load()」、「WinAPI」では「LTsv_icon_load()」を呼び出す。 menu_bに「yield ("window exit",LTsv_window_exit_cbk)」のようなイテレータ生成関数を送るとポップアップメニューを作成。 menu_cにポップアップメニューとは別途1クリック実行するコールバック関数を指定。
LTsv_filedialog_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_filedialog",dialog_t=0) ファイルダイアログ「filedialog」の作成。widget_tにダイアログウィンドウ用のテキスト。 dialog_tでダイアログの種類。偶数ならOpen、奇数ならSave、2未満ならファイル、2以上ならフォルダ。 ダイアログウィンドウを表示するときは「LTsv_widget_showhide(kanedit_filedialog,True)」。 ボタンを押すとevent_bをコールバック。コールバック先で「LTsv_widget_showhide(kanedit_filedialog,False)」してダイアログウィンドウを閉じる必要。 キャンセルが実装されてないので注意。
debug_canvas(window_objvoid=None,window_objptr=None) 単体風テスト専用。「LTsv_window_after()」を使って「debug_canvas()」自身をループ。 日時表示の更新や「canvas」の描き替えをしてる。
debug_timebutton(callback_void=None,callback_ptr=None) 単体風テスト専用。reset「button」が押されたら日時フォーマットの初期化。
debug_calc(callback_void=None,callback_ptr=None) 単体風テスト専用。電卓の「entry」が書き換えた(Enterキー押下した)ら電卓フォーマットで演算。