*Display11
x=1 : y=1 : gosub *DisplayEvent
return 0
*Display12
x=1 : y=2 : gosub *DisplayEvent
return 0
*Display13
x=1 : y=3 : gosub *DisplayEvent
return 0
*Display14
x=1 : y=4 : gosub *DisplayEvent
return 0
*Display15
x=1 : y=5 : gosub *DisplayEvent
return 0
*Display16
x=1 : y=6 : gosub *DisplayEvent
return 0
*Display21
x=2 : y=1 : gosub *DisplayEvent
return 0
*Display22
x=2 : y=2 : gosub *DisplayEvent
return 0
*Display23
x=2 : y=3 : gosub *DisplayEvent
return 0
*Display24
x=2 : y=4 : gosub *DisplayEvent
return 0
*Display25
x=2 : y=5 : gosub *DisplayEvent
return 0
*Display26
x=2 : y=6 : gosub *DisplayEvent
return 0
*Display31
x=3 : y=1 : gosub *DisplayEvent
return 0
*Display32
x=3 : y=2 : gosub *DisplayEvent
return 0
*Display33
x=3 : y=3 : gosub *DisplayEvent
return 0
*Display34
x=3 : y=4 : gosub *DisplayEvent
return 0
*Display35
x=3 : y=5 : gosub *DisplayEvent
return 0
*Display36
x=3 : y=6 : gosub *DisplayEvent
return 0
*Display41
x=4 : y=1 : gosub *DisplayEvent
return 0
*Display42
x=4 : y=2 : gosub *DisplayEvent
return 0
*Display43
x=4 : y=3 : gosub *DisplayEvent
return 0
*Display44
x=4 : y=4 : gosub *DisplayEvent
return 0
*Display45
x=4 : y=5 : gosub *DisplayEvent
return 0
*Display46
x=4 : y=6 : gosub *DisplayEvent
return 0
*Display51
x=5 : y=1 : gosub *DisplayEvent
return 0
*Display52
x=5 : y=2 : gosub *DisplayEvent
return 0
*Display53
x=5 : y=3 : gosub *DisplayEvent
return 0
*Display54
x=5 : y=4 : gosub *DisplayEvent
return 0
*Display55
x=5 : y=5 : gosub *DisplayEvent
return 0
*Display56
x=1 : y=6 : gosub *DisplayEvent
return 0
*Display61
x=6 : y=1 : gosub *DisplayEvent
return 0
*Display62
x=6 : y=2 : gosub *DisplayEvent
return 0
*Display63
x=6 : y=3 : gosub *DisplayEvent
return 0
*Display64
x=6 : y=4 : gosub *DisplayEvent
return 0
*Display65
x=6 : y=5 : gosub *DisplayEvent
return 0
*Display66
x=6 : y=6 : gosub *DisplayEvent
return 0
*DisplayMon
x=1 : gosub *DisplayDayEvent
return 0
*DisplayTue
x=2 : gosub *DisplayDayEvent
return 0
*DisplayWed
x=3 : gosub *DisplayDayEvent
return 0
*DisplayThu
x=4 : gosub *DisplayDayEvent
return 0
*DisplayFri
x=5 : gosub *DisplayDayEvent
return 0
*DisplaySat
x=6 : gosub *DisplayDayEvent
return 0
*DisplayEvent
YoubiJ_STR="月","火","水","木","金","土"
if DataStorage(x-1,y-1)!="" {
split DataStorage(x-1,y-1),"|",tmp
p =tmp(0)+"\n\n"
p+="場所:"+tmp(1)
strrep tmp(2),",","\n・"
p+="\n\n持ち物:\n・"+tmp(2)
dialog p,0,""+YoubiJ_STR(x-1)+"曜日 "+str(y)+"限 の予定"
}
return 0
*DisplayDayEvent
YoubiJ_STR="月","火","水","木","金","土"
p=""
repeat 6
if DataStorage(x-1,cnt)="" {
p+=""+str(cnt+1)+"限 なし"
}else{
split DataStorage(x-1,cnt),"|",tmp
p+=""+str(cnt+1)+"限 "+tmp(0)+" , 場所:"+tmp(1)
}
p+="\n"
loop
sdim MochimonoList
repeat 6
if DataStorage(x-1,cnt)="" {
continue
}else{
split DataStorage(x-1,cnt),"|",tmp
MochimonoList+=","+tmp(2)
}
loop
p+="\n持ち物:\n"
sdim buffers
notesel buffers
split MochimonoList,",",MochimonoList
repeat length(MochimonoList)
if MochimonoList(cnt)="" : continue
if notefind(MochimonoList(cnt),0)=-1 {
noteadd MochimonoList(cnt),-1,0
}
loop
repeat notemax
noteget tmp,cnt
p+="・"+tmp+"\n"
loop
noteunsel
dialog p,0,""+YoubiJ_STR(x-1)+"曜日 の予定"
return 0
*About_Software
p1=""+AppName+" について"
p2=p1
p3="時間とタスクを管理しましょう!\n"+AppName+" は、シンプルな時間割とタスクの管理アプリです。"
p4="Copyright (c) 2026 Tentmochi.\nTentmochi Software Commons v1.0 (TSC1.0)の下、\n非商用で無保証の下、自由に利用、複製、改変、および再配布できます。"
p5="閉じる"
p6=3
p7=4
DialogVistaEx p1,p2,p3,p4,p5,p6,p7
return 0
*EditTimeTable
exec "notepad.exe ./weekly.ini"
return 0
*AddTask
screen 1,1.25*TrueScale(640/2),1.25*TrueScale(480/2),8
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat - $80000
gsel 1,2
font "",1.25*TrueScale(18)
title "タスクを追加"
color 0,0,0 : pos 10,0
mes "Todoタスクを追加します。\n*がついた項目は必須です。\n"
mes "タスクの名前(*): "
mes "期日(*) : "
mes "具体的な内容 : "
TodoTaskName =""
TodoTaskDeadLineY=strf("%04d",gettime(0))
TodoTaskDeadLineT=strf("%02d",gettime(1))
TodoTaskDeadLineD=strf("%02d",gettime(3))
TodoTaskDeadLineH=strf("%02d",gettime(4))
TodoTaskDeadLineM=strf("%02d",gettime(5))
sdim TodoTaskDetailSTR,65535
pos 1.25*TrueScale(130), 1.25*TrueScale(52) : objsize 1.25*TrueScale(180),1.25*TrueScale(20) : input TodoTaskName
pos 1.25*TrueScale(130), 1.25*TrueScale(72) : objsize 1.25*TrueScale( 40),1.25*TrueScale(20) : input TodoTaskDeadLineY
pos 1.25*TrueScale(170), 1.25*TrueScale(72) : : mes "/"
pos 1.25*TrueScale(175), 1.25*TrueScale(72) : objsize 1.25*TrueScale( 20),1.25*TrueScale(20) : input TodoTaskDeadLineT
pos 1.25*TrueScale(195), 1.25*TrueScale(72) : : mes "/"
pos 1.25*TrueScale(200), 1.25*TrueScale(72) : : input TodoTaskDeadLineD
pos 1.25*TrueScale(225), 1.25*TrueScale(72) : : mes ""
pos 1.25*TrueScale(230), 1.25*TrueScale(72) : : input TodoTaskDeadLineH
pos 1.25*TrueScale(255), 1.25*TrueScale(72) : : mes ":"
pos 1.25*TrueScale(260), 1.25*TrueScale(72) : : input TodoTaskDeadLineM
pos 1.25*TrueScale(280), 1.25*TrueScale(72) : : mes ":00"
pos 1.25*TrueScale(130), 1.25*TrueScale(92) : objsize 1.25*TrueScale(180),1.25*TrueScale(100) : mesbox TodoTaskDetailSTR
pos 1.25*TrueScale( 60),1.25*TrueScale(200) : objsize 1.25*TrueScale(120), 1.25*TrueScale(30) : button gosub "閉じる" ,*TodoTaskCancel
pos 1.25*TrueScale(190),1.25*TrueScale(200) : : button gosub "タスクを追加する",*TodoTaskAddConfirm
isWantExitAddTask=1
while isWantExitAddTask
await 1
wend
gsel 1,-1
gsel 0
gosub *Config_load
return 0
*TodoTaskCancel
isWantExitAddTask = 0
return 0
*TodoTaskAddConfirm
if TodoTaskDetailSTR="" { TodoTaskDetailSTR="" }
if TodoTaskName="" { dialog "タスクに名前を決めてください",1 : return 1 }
if TodoTaskDeadLineY="" { dialog "時刻の年設定を決めてください",1 : return 1 }
if TodoTaskDeadLineT="" { dialog "時刻の月設定を決めてください",1 : return 1 }
if TodoTaskDeadLineD="" { dialog "時刻の日設定を決めてください",1 : return 1 }
if TodoTaskDeadLineH="" { dialog "時刻の時設定を決めてください",1 : return 1 }
if TodoTaskDeadLineM="" { dialog "時刻の分設定を決めてください",1 : return 1 }
TodoTaskDeadLineUNIX=""
strrep TodoTaskName,"=","#"
strrep TodoTaskName,"|","#"
strrep TodoTaskName,"/","#"
strrep TodoTaskName,":",";"
strrep TodoTaskName,"-","_"
strrep TodoTaskDetailSTR,"=","#"
strrep TodoTaskDetailSTR,"|","#"
strrep TodoTaskDetailSTR,"/","#"
strrep TodoTaskDetailSTR,":",";"
strrep TodoTaskDetailSTR,"-","_"
TodoTaskDeadLineY=Varidation(TodoTaskDeadLineY)
TodoTaskDeadLineT=Varidation(TodoTaskDeadLineT)
TodoTaskDeadLineD=Varidation(TodoTaskDeadLineD)
TodoTaskDeadLineH=Varidation(TodoTaskDeadLineH)
TodoTaskDeadLineM=Varidation(TodoTaskDeadLineM)
TodoTaskDeadLineUNIX=time2ut(int(TodoTaskDeadLineY),int(TodoTaskDeadLineT),int(TodoTaskDeadLineD),int(TodoTaskDeadLineH),int(TodoTaskDeadLineM),0)
ut2time y,m,d,h,mi,s,TodoTaskDeadLineUNIX
if TodoTaskDeadLineUNIX<0 {
dialog "時刻設定が不正です\n1970年1月1日9時0分より前、または2038年1月19日3時14分より後は指定できません。",1 : return 0
}
if strf("%04d/%02d/%02d %02d:%02d",TodoTaskDeadLineY,TodoTaskDeadLineT,TodoTaskDeadLineD,TodoTaskDeadLineH,TodoTaskDeadLineM)!=strf("%04d/%02d/%02d %02d:%02d",y,m,d,h,mi) {
dialog "時刻設定が不正です\nUNIX時間で定義できない時刻です。",1 : return 0
}
tmp ="以下の内容でTodoタスクを追加しますか?\n\n"
tmp+="タイトル :"+TodoTaskName+"\n"
tmp+="期日 :"+strf("%04d/%02d/%02d %02d:%02d:%02d",y,m,d,h,mi,s)+"\n"
tmp+="内容\n"+TodoTaskDetailSTR
notesel TodoTaskDetailSTR
noteget TodoTaskDetailOK,0
repeat notemax
res=""
noteget res,cnt+1
TodoTaskDetailOK+="<br>"+res
loop
noteunsel
dialog tmp,2,"Todoタスクの追加"
if stat=7 {
return 0
}else{
write=""+strf("%04d/%02d/%02d/%02d:%02d",y,m,d,h,mi)+"="+TodoTaskName+"|"+TodoTaskDetailOK
strrep write,"-",""
sdim buffers
notesel buffers
noteload "todo.ini"
noteadd write,-1,0
notesave "todo.ini"
noteunsel
isWantExitAddTask = 0
}
return 0
*DelTask
if length(TaskList)=1 : return 0
tmp=TaskList(listboxInt+1)
split tmp,"@",time,tmp
split tmp,"|",tmp
ut2time y,m,d,h,mi,s,int(time)
sdim titles : titles=tmp(0)
dialog "Todoタスク\n「"+titles+"」\n("+strf("%04d/%02d/%02d %02d:%02d",y,m,d,h,mi)+"〆)\nを完了しますか?",2
if stat=7 {return 0}
sdim buffers
notesel buffers
noteload "todo.ini"
repeat notemax
noteget tmp,cnt
if instr(tmp,0,strf("%04d/%02d/%02d/%02d:%02d",y,m,d,h,mi)+"="+titles)=0 {
notedel cnt
break
}
if cnt+1=notemax {
dialog "削除処理に失敗しました。\nソフトの起動中にtodo.iniを編集し、再ロードしなかった場合にこれは発生します。",1
noteunsel
gosub *Config_Load
return 1
}
loop
notesave "todo.ini"
noteunsel
gosub *Config_Load
return 0
*dummy
return 0