거북이폴더

윈도우7용 플래시폴더 언제까지 기다리시나요? 그냥 거북이 폴더 쓰세요!! 1)지금까지 사용한 폴더들을 기록해서 열기창 등에서 바로 갈수 있으며, totalcommander와 연동해서 즐겨찾기와 각 패널의 폴더위치로 이동할수 있습니다.

거북이 폴더 0.5 다운로드


왜 이름이 거북이 폴더인가?

예전 Powerpro를 가지고 놀던 시절에 비슷한 기능을 만들면서 느린 속도때문에 '느린폴더이동'이라는 의미로 지어서 사용했었습니다..
최근에는 FlashFolder를 사용하면서 Powerpro로 만든 기능은 사용하지 않았었는데요…ㅇㅅㅇa
비슷한 기능을 다시금 만들게 되면서 괜찮은 이름을 찾다가 예전에 만들던게 생각나(;;) 다시 이름을 지었습니다.
상대적으로 FlashFolder보다 느리기도 하구요^^;;2)

기본기능

생긴건 플래시폴더 짝퉁!

FlashFolder의 기본기능 클론을 중점으로 시작해서, 현재는 토탈커맨더와의 연계를 강화하는 데 중점을 두고 진행중입니다.

  • FlashFolder의 기능클론
    • 이전폴더 바로가기
    • 폴더 히스토리
    • 토커좌&우창 연동
    • 토탈커맨더 즐겨찾기 연동
    • 열기창 가운데로 기능
    • 열기창 크기 조정 기능
  • 거북이 폴더만의 추가기능!
    • 탐색기 창에서도 창위메뉴 동작
    • 마우스 중간클릭으로 메뉴열어 바로 이동
    • 문자+번호형태의 파일이름이 있을때 그 다음 번호로 자동입력 기능

설치& 사용방법

1) 적당한 폴더에 압축을 풉니다.

2) turtlefolder.exe파일을 실행합니다.

3) 실행하면 아무것도 나오지 않습니다.(!?) 놀라지 마세요~!?

4) 열기/저장하기 창을 열면 창 위에 아래와 같은 탭이 열기창 위로 나옵니다.

5) 아이콘을 클릭하면 해당 폴더리스트와 창을 보여줍니다.

아이콘 설명

엘프화가가 직접 뚝딱뚝딱 만든 예쁜 아이콘입니다. 디자이너 부심 돋네

- 가장 최근에 사용한 폴더로 바로 이동합니다.

- 지금까지 사용한 폴더리스트를 보여주고, 클릭하면 그 폴더로 이동합니다.

- 토탈커맨더의 왼쪽 패널의 활성폴더와 폴더탭리스트를 보여줍니다. 역시 클릭하면 그 폴더로 이동합니다.

- 토탈커맨더의 오른쪽 패널의 활성폴더와 폴더탭리스트를 보여줍니다. 역시 클릭하면 그 폴더로 이동합니다.

- 토탈커맨더의 즐겨찾기 폴더를 보여주고, 클릭하면 그 폴더로 이동합니다.

- 옵션창 등을 열수 있는 메뉴를 보여줍니다. 트레이아이콘을 우클릭과 같은 메뉴입니다.

- 원하지 않는 자동이름변경이 되었을때, 누르면 원래 이름으로 되돌려줍니다

옵션창 설명

더이상 설명이 필요한가?

커피한잔사주세요~!

이 곳의 내용들이 도움이 되셨다면? 저에게 커피 한잔 사주세요~~ +ㅁ+b!

카카오톡

카카오톡 아이디 Elfpainter (labica@naver.com) 입니다. 엘프는 스타벅스를 잘먹습니다. 후훗. 된장남이니까요.

Paypal

페이팔 계정이 있으신가요? 아래 Donation 버튼을 클릭하시면 Paypal로 사주실수 있습니다.

 
 
 

추가보완예정 사항

  • 한글 / 엑셀 에서도 동작하도록 보완 - class 이름이 틀려서 생기는 문제인것 같은데, 집에 한글이랑, 엑셀을 깔아봐야 확인가능할듯;;있던가;;
    • 아래한글97은 창의 구조가 표준이 아니다. OTL 클래스나 텍스트를 읽어올수 없는 상황.아주 편법을 될 것 같은데.. 고민좀 해보자.
    • 엑셀은…..잘…된다??? @ㅛ@;;; 다른 버전을 찾아봐야 하나?;;;
  • Xp에서 시작→끄기를 선택하면 끄기창 위에 거북이폴더창이 뜨면서, 끄기창 종료. 덕분에 컴퓨터를 끌수가 없는 크리티컬한 버그 발생. 수정방법은 모르겠다;;;; 결국 창정보를 알아내서 해결완료

History

  • 0.5 - 파일이름을 원상복구시키는 버튼 추가 / 거북이폴더를 띄우지 않을 창 이름리스트 입력옵션 추가. / 자동찾기에 tc_up폴더 추가
  • 0.4 - 파일명을 알아서 숫자를 매겨서 저장할수 있는 미묘한 기능 추가완료!! 관련 글 보기
  • 0.3f - 창을 열자마자 닫았을때 한번씩 뜨는 오류 제거.
  • 0.3 - ini 읽기&쓰기 기능/ 메인 거북이 아이콘 디자인 완료. 1차 공개!!
  • 0.2 - 임시 옵션 UI 적용
  • 0.1f - 폴더찾기 안정화.
  • 0.1d - 임시UI완료 / 아이콘추가 / 전체기능개선 / win7&xp 테스트
  • 0.1c - 임시UI 열기창위에 배치진행
  • 0.1b - 즐겨찾기 리스트에 단축키 추가.
  • 0.1a - 패널창 폴더이름 가져오기 / 즐겨찾기 리스트를 통한 이동 기능 제작. 임시 UI 테스트. 혼자서 적당히 쓸만한 수준인듯

소스

역시 Autohotkey로 제작되어 있습니다.

;;------------------------------------------
;;  Turtle Folder 0.5 - 제목변경되돌리기 아이콘 추가 / Exclude List 추가 / 자동 찾기에 tc_up 추가.
;;  토탈커맨더의 즐겨찾기/패널창 위치를 받아와서 뿌려주는 프로그램.FlashFolder 기능을 모두 가지고 오는데 중점을 둘 것.
;;------------------------------------------
 
 
SetTitleMatchMode,2
#include l_jimin.ahk 
 
 
;;------------------------------------------------------------------
;;필요한 이미지파일 인스톨
;;------------------------------------------------------------------
FileInstall,turtle.ico,turtle.ico
FileInstall,Favorite2.ico,Favorite2.ico
FileInstall,history.ico,history.ico
FileInstall,rhistory.ico,rhistory.ico
FileInstall,opt.ico,opt.ico
FileInstall,left_panel.ico,left_panel.ico
FileInstall,right_panel.ico,right_panel.ico
FileInstall,retext.ico,retext.ico
 
;;------------------------------------------------------------------
;;기본변수 설정
;;------------------------------------------------------------------
tf_ver = 0.5
StringTrimRight,tf_file_name,A_ScriptName,4
tf_history_file = %tf_file_name%_%A_computername%.txt
tf_ini_name = %tf_file_name%.ini
tf_lng_name = %tf_file_name%.lng
tf_class1= ahk_class #32770
tf_class2= ahk_class ExploreWClass ;;xp의 탐색기
tf_class3= ahk_class CabinetWClass ;;win7의 탐색기
online_help = http://elfism.com/projects/elftools/turtle_folder
open_not_set = x y h20
wincmd_list = %a_programfiles%\TC UP\,
 
;;------------------------------------------------------------------
;;옵션창용 변수 설정(ini) - 어려운거 / 불필요한 건 빼자.
;;------------------------------------------------------------------
tf_tc_ini =c:\Program Files (x86)\TC UP\wincmd.ini ;;;wincmd.ini 수동설정. 기본적으론 자동으로 찾게...
 
tf_history_num = 20 ;;히스토리 몇개나 할지.
tf_is_center = 1 ;;창을 가운데 배치할건지
tf_is_changesize = 1 ;;열기창크기 조정 할 것인지?
tf_width = 758
tf_height = 462
is_use_ini = 1 ;;토커 ini값을 가져올지?
is_autocheck =1 ;;레지스트리에서 토커 패스 챙기기
tf_win_offset_y = 23 ;;창 높이에서 얼마나 띄울지
is_work_explorer = 1 ;;익스플로러 창에서도 작동할지 유무
is_autostart = 1 ;;시작할때 자동으로 시작하게.
is_hotkey = 1 ;;핫키를 통한 이동사용할지?
type_hotkey = 1  ;;핫키로 어떤 리스트를 부를지(1:최근리스트 / 2:좌패널/ 3:우패널/ 4:즐겨찾기)
tf_hotkey =  MButton ;; 기본핫키
is_auto_count = 1 ;;; 리스트를 읽어서 다음 들어갈 형태 자동 입력.
auto_count_min = 3 ;;몇개 이상일 경우 동작할지 
tf_exclude_name = layer,page,Pass Custom Parameter,Configure PowerPro
 
 
;;-- 불필요한 거 
tf_time_check = 300 ;;재체크시간설정
is_send_tc = n ;;토커창으로 마지막패스 보내기
 
 
 
 
tf_ini_list =
(
tf_history_num,tf_win_offset_y,
is_hotkey,type_hotkey,tf_hotkey,is_work_explorer,
is_use_ini,tf_tc_ini,is_autocheck,
tf_is_changesize,tf_width,tf_height,tf_is_center,
is_autostart,
is_auto_count,auto_count_min,
tf_exclude_name
)
ini_read_all(tf_ini_name,tf_ini_list,"TurtleFolder")
 
 
;;------------------------------------------------------------------
;;번역용(lng)
;;------------------------------------------------------------------
;;---- 기본메뉴 내용
 
M_title = 거북이폴더 
M_about = 거북이 폴더란?
M_about_text = 
(
거북이 폴더는 빠른 폴더찾기를 할수 있는 간단한 프로그램입니다.
플래시폴더의 클론으로 진행중입니다.
...7에서 FlashFolder가 작동안하길래 만들었습니다.
)
M_onlinehelp = 온라인 도움말 & 최신버전 받기
M_Homepage = 개발자 홈페이지.
;;----옵션창 내용
M_opt_title = 옵션
M_Autocheck = Wincmd.ini를 자동으로 검색합니다.
M_INI_Locate = wincmd.ini 위치
M_Open_Folder = 파일찾기
M_Recent_History_Max = 최근폴더목록갯수
M_Dialog_Center = 열기창을 프로그램 가운데로 배치합니다.
M_Change_Dialog_Size =  열기창 크기를 강제로 변경합니다.
M_Dialog_Width = 창 가로 크기:
M_Dialog_Height = 창 세로크기:
M_Toolbar_Offset = 툴바를 얼마나 더 높이 띄울까요?)
M_Toolbar_on_Explorer = 탐색기창 위에도 거북이툴바를 띄웁니다.
M_Use_Mbutton_Hotkey =  마우스휠클릭을 단축키로 사용합니다.
M_Etc_Opt = 기타설정
M_Autostart = 윈도우시작할때 함께 시작합니다.
M_Use_Wincmd = Total Commander의 즐겨찾기를 공유합니다.
M_History_Folder = 히스토리폴더
M_LeftPanel = 좌측폴더리스트
M_RightPanel = 우측폴더리스트
M_Favorite = 즐겨찾기
M_Favorite_Opt = 즐겨찾기 설정
M_Dialog_Opt = 열기창 설정
M_Main_Opt = 기본 설정
M_is_Auto_count = 파일명 글자+숫자일때 다음 파일이름 자동입력
M_Auto_count_min = 자동입력할 파일갯수 최소값?
M_tf_exclude_name = 단어가 포함된 창에는 열지 않음.
M_Save_Opt = 저장
M_Cancel = 취소 
M_Exit = 종료
 
 
 
tf_lng_list =
(
M_title,M_about,M_about_text,
M_onlinehelp,M_Homepage,M_opt_title,
M_Autocheck,M_INI_Locate,M_Open_Folder,M_Recent_History_Max,M_Dialog_Center,M_Change_Dialog_Size,
M_Dialog_Width,M_Dialog_Height,
M_Toolbar_Offset,M_Toolbar_on_Explorer,M_Use_Mbutton_Hotkey,M_Etc_Opt,
M_Autostart,M_Use_Wincmd,M_History_Folder,M_LeftPanel,M_RightPanel,
M_is_Auto_count,M_Auto_count_min,M_tf_exclude_name,
M_Favorite,M_Favorite_Opt,M_Dialog_Opt,M_Main_Opt,M_Save_Opt,M_Cancel,M_Exit
 
 
)
ini_read_all(tf_lng_name,tf_lng_list,"TurtleFolder")
 
M_Hotkey_List = %M_History_Folder%|%M_LeftPanel%|%M_RightPanel%|%M_Favorite%
 
gosub get_tc_ini ;tc_ini 얻어오기
fileread,tf_history_list,%tf_history_file% ;;히스토리리스트 읽기
;gosub get_tc_dirmenu
;gosub get_panel_left
;gosub get_panel_right
gosub make_gui_ico
gosub make_opt
gosub check_opt
gosub make_tray_menu
gosub autostart
ram()
 
 
 
settimer,check_folder,%tf_time_check% ;;일정시간마다 열기/저장창이 있는지 체크하기
return
 
 
 
;;------------------------------------------------------------------------------------------------
;;
;; 요 아래는 모듈
;;
;;------------------------------------------------------------------------------------------------
 
 
 
;;------------------------------------------------------------------
;;현재 열기 창이 열려져 있는지 체크해서 있으면 UI띄워주기
;;------------------------------------------------------------------
check_folder:

 
;만약 활성화된 창이름이 금지목록이면...
loop,parse,tf_exclude_name,`,
{
if winactive(a_loopfield)
return
}
 
;ifwinactive,%tf_class% ;;#32770이 활성이면....
if (winactive(tf_class1)!=0 or winactive(tf_class2)!=0 or winactive(tf_class3)!=0)
{
	winget,tf_id,,A  ;
	tf_id = ahk_id %tf_id% ;;현재 창의 id구하기.
	;;만약 이름이 없거나,리스트뷰가 없으면 뷁	
	wingettitle,is_opendialog2,%tf_id% ;'열기'라고 적힌거.
	if is_opendialog2! ;;이름 있는지 체크해서 없으면 백.
	return
 
	controlget,is_opendialog,Visible,,SysListView321,%tf_id%  ;xp의 열기창
	controlget,is_opendialog3,Visible,,DirectUIHWND2,%tf_id%  ;win7의 열기창 
	if (is_opendialog! and is_opendialog3!)
	return
	controlget,is_opendialog4,Visible,,Edit1,%tf_id%;에디트 창
	if is_opendialog4!
	return
 
	if tf_is_center = 1
	gosub set_center
 
	gosub find_folder ;현재 폴더 이름 찾기 :now_folder_name
	gosub check_open_folder_pos ; 거북이 폴더가 없으면 창위치 체크한다음 열기
	ifwinnotexist,%tf_name% %tf_ver%
	{
		gosub show_gui
		gosub,auto_count
	}
	else
	{
		if old_open_set != %open_set%  ;거북이 폴더가 있으면 기존이랑 창 위치가 같은지 체크.다르면 창위치 옮기기
		{
			winmove,%tf_name% %tf_ver%,,%open_x%,%open_y%
		}
	}
	guicontrol,,folder_val,%last_recent_folder%
}
else
ifwinnotactive,%tf_name% %tf_ver% ;;열기창이 체크안되어 있고 거북이창이 활성화안되어있으면?
{
 
	ifwinexist,%tf_name% %tf_ver% ;;거북이창이 있는지 한번더 체크!
	{
 
		gosub save_history  ;GUI닫고........ 최근에 체크된 폴더이름을 txt파일 가장 위에 저장하기?
		Gui, hide
		ram()
		opened = n
		ifwinnotexist,%tf_id% ;;열기창이 닫기면....
		gosub send_to_tc
 
	}
}
return
 
 
;;------------------------------------------------------------------
;; 기본 UI 생성 -아이콘형
;;------------------------------------------------------------------
make_gui_ico:
{
Gui, Add, picture, x2 y2 w16 h16 glast_folder, rhistory.ico
Gui, Add, picture, y2 w16 h16 grecent_menu_open, history.ico
Gui, Add, picture, y2 w16 h16 gget_panel_left, left_panel.ico
Gui, Add, picture, y2 w16 h16 gget_panel_right, right_panel.ico
Gui, Add, picture, y2 w16 h16 gget_tc_dirmenu, Favorite2.ico
Gui, Add, picture, y2 w16 h16 gback_temp_text, retext.ico
Gui, Add, picture, y2 w16 h16 gshow_tray_menu, opt.ico
Gui, Add, Edit, y0 h20 w500 vfolder_val,
gui, Add, Button, x0 y0 w20 ggo_path Default vgogogo,OK
guicontrol,hide,gogogo
gui,margin,0,0
gui +ToolWindow -Caption +alwaysontop
Return
}
 
;;------------------------------------------------------------------
;; About 메뉴들 만들기
;;------------------------------------------------------------------
make_tray_menu:
menu,tray,add,%M_opt_title%,show_opt
menu,tray,add
menu,tray,add,%M_about%,About
menu,tray,add,%M_onlinehelp%,onlinehelp
menu,tray,add,%M_Homepage%,Homepage
menu,tray,add
menu,tray,add,%M_Exit%,tf_Exit
menu,tray,NoStandard
return
 
;;------------------------------------------------------------------
;; 나가기
;;------------------------------------------------------------------
tf_exit:
EXITAPP
return
 
;;------------------------------------------------------------------
;; About 메뉴들 보이기
;;------------------------------------------------------------------
show_tray_menu:
menu,tray,show
return
 
 
;;------------------------------------------------------------------
;; ...대하여..
;;------------------------------------------------------------------
About:
MsgBox,0,%M_title% %tf_ver%,%M_about_text%
return
 
onlinehelp:
run,%online_help%
return
 
Homepage:
run,%Elf_homepage%
return
 
;;------------------------------------------------------------------
;;기본 UI 열기
;;------------------------------------------------------------------
show_gui:
if open_set = %open_not_set%
return
 
Gui, Show, %open_set%, %tf_name% %tf_ver%
winactivate,%tf_id%
old_open_set := open_set ;;좌표위치 기억
controlgettext,original_text,Edit1,%tf_id% ;만일을 위해 원래 이름 기억하기
return
 
 
;;------------------------------------------------------------------
;; 옵션 UI 생성
;;------------------------------------------------------------------
make_opt:
{
Gui, 2:Add, GroupBox, x22 y10 w390 h160 , %M_Main_Opt% ;기본설정
Gui, 2:Add, Text, x32 y40 w130 h20 , %M_Recent_History_Max% ;최근폴더목록갯수
Gui, 2:Add, Edit, x242 y40 w60 h20 vtf_history_num, %tf_history_num% ;히스토리갯수에디트창
Gui, 2:Add, Text, x32 y60 w190 h20 , %M_Toolbar_Offset% ;툴바를 얼마나 더 높이 띄울까요?
Gui, 2:Add, Edit, x242 y60 w60 h20 vtf_win_offset_y, %tf_win_offset_y%
Gui, 2:Add, Text, x302 y60 w30 h20 , px
 
Gui, 2:Add, CheckBox, x32 y85 w230 h20 vis_hotkey , %M_Use_Mbutton_Hotkey% ;마우스휠클릭을 단축키로 사용합니다.
Gui, 2:Add, DropDownList, x272 y85 w120 h100 vtype_hotkey_drop, %M_History_Folder%|%M_LeftPanel%|%M_RightPanel%|%M_Favorite%
Gui, 2:Add, CheckBox, x32 y105 w360 h20 vis_work_explorer, %M_Toolbar_on_Explorer% ;탐색기창 위에도 거북이툴바를 띄웁니다.
 
Gui, 2:Add, Text, x42 y125 w100 h40 , %M_tf_exclude_name% ;;제외될 창 이름
Gui, 2:Add, Edit, x135 y125 w270 h40 vtf_exclude_name, %tf_exclude_name% ;;창이름 에디트 창
 
 
Gui, 2:Add, GroupBox, x22 y180 w390 h100 , %M_Favorite_Opt% ; 즐겨찾기 설정.
Gui, 2:Add, CheckBox, x32 y200 w330 h30 vis_use_ini gcheck_use_ini, %M_Use_Wincmd% ;Total Commander의 즐겨찾기를 공유합니다.
Gui, 2:Add, CheckBox, x142 y250 w220 h20 vis_autocheck, %M_Autocheck% ;;자동으로 ini 체크
Gui, 2:Add, Text, x32 y230 w110 h20 , %M_INI_Locate% ;;ini 위치
Gui, 2:Add, Edit, x142 y230 w160 h20 vtf_tc_ini, %tf_tc_ini% ;;ini 위치 에디트창
Gui, 2:Add, Button, x302 y230 w60 h20 vopen_folder gget_tc_manual, %M_Open_Folder% ;찾아보기
 
Gui, 2:Add, GroupBox, x22 y290 w390 h130 , %M_Dialog_Opt% ;열기창 설정
Gui, 2:Add, CheckBox, x32 y310 w240 h20 vtf_is_changesize gcheck_change_size, %M_Change_Dialog_Size% ;열기창 크기를 강제로 변경합니다.
Gui, 2:Add, Text, x52 y330 w120 h20 , %M_Dialog_Width% ;창 가로 크기:
Gui, 2:Add, Text, x52 y350 w120 h20 , %M_Dialog_Height% ;창 세로크기:
Gui, 2:Add, Edit, x242 y325 w60 h20 vtf_width, %tf_width% 
Gui, 2:Add, Edit, x242 y345 w60 h20 vtf_height, %tf_height%
Gui, 2:Add, Text, x302 y325 w30 h20 , px
Gui, 2:Add, Text, x302 y345 w30 h20 , px
Gui, 2:Add, CheckBox, x32 y365 w240 h20 vtf_is_center, %M_Dialog_Center% ;열기창을 프로그램 가운데로 배치합니다.
 
 
 
Gui, 2:Add, GroupBox, x22 y430 w390 h110 , %M_Etc_Opt% ;기타설정
Gui, 2:Add, CheckBox, x32 y450 w350 h20 vis_autostart , %M_Autostart% ;윈도우시작할때 함께 시작합니다.
Gui, 2:Add, CheckBox, x32 y470 w350 h20 vis_auto_count , %M_is_auto_count% ;자동세기 할지
Gui, 2:Add, Text, x42 y490 w200 h20 , %M_auto_count_min% ;최소값 글
Gui, 2:Add, Edit, x250 y490 w60 h20 vauto_count_min, %auto_count_min%
 
Gui, 2:Add, Button, x182 y550 w120 h30 gsave_opt, %M_Save_Opt%  ;;저장
Gui, 2:Add, Button, x312 y550 w100 h30 gcancel_opt, %M_CanCel%  ;;취소
Return
}
 
;;------------------------------------------------------------------
;;현재 변수들을 체크해서 필요한 사항 UI에 적용.
;;------------------------------------------------------------------
check_opt: 
 
guicontrol,2:,tf_history_num,%tf_history_num%
guicontrol,2:,tf_win_offset_y,%tf_win_offset_y%
guicontrol,2:,tf_tc_ini,%tf_tc_ini%
guicontrol,2:,tf_width,%tf_width%
guicontrol,2:,tf_height,%tf_height%
guicontrol,2:,auto_count_min,%auto_count_min%
 
change_checkbox("2:","tf_is_changesize")
change_checkbox("2:","is_work_explorer")
change_checkbox("2:","M_Use_Mbutton_Hotkey")
change_checkbox("2:","tf_is_center")
change_checkbox("2:","is_use_ini")
change_checkbox("2:","is_autocheck")
change_checkbox("2:","is_hotkey")
change_checkbox("2:","is_autostart")
change_checkbox("2:","is_auto_count")
 
;드롭다운메뉴는 어떻게 처리하지?;; 값을 읽어서.. 해당 리스트 앞에 표시?
tf_droplist = |
loop,parse,M_Hotkey_List,|
{
	if type_hotkey = %a_index%
	tf_droplist = %tf_droplist%%A_loopfield%||
	else
	tf_droplist = %tf_droplist%%A_loopfield%|
}
guicontrol,2:,type_hotkey_drop,%tf_droplist%
 
gosub,autostart
 
return
 
 
 
check_use_ini:
guicontrolget,is_use_ini,2:,,is_use_ini
if (is_use_ini!=1)
{
	guicontrol,2:Disable,tf_tc_ini
	guicontrol,2:Disable,is_autocheck
	guicontrol,2:Disable,open_folder
}
else
{
	guicontrol,2:Enable,tf_tc_ini
	guicontrol,2:Enable,is_autocheck
	guicontrol,2:Enable,open_folder
}
return
 
 
check_change_size:
guicontrolget,tf_is_changesize,2:,,tf_is_changesize
if (tf_is_changesize!=1)
{
	guicontrol,2:Disable,tf_width
	guicontrol,2:Disable,tf_height
 
}
else
{
	guicontrol,2:Enable,tf_width
	guicontrol,2:Enable,tf_height
 
}
return
 
 
;;------------------------------------------------------------------
;; 자동시작할지
;;------------------------------------------------------------------
AutoStart:
guicontrolget,is_autostart,2:,,is_autostart ;;옵션창 값 가져오기
 
if A_IsCompiled != 1
return
 
 
if is_autostart!=1 ;꺼져있으면
{
	IfExist %A_Startup%\%A_ScriptName%.lnk ;링크없으면
	FileDelete,%A_Startup%\%A_ScriptName%.lnk
 
 
}	
else ;;켜져있으면
{
	IfNotExist %A_Startup%\%A_ScriptName%.lnk ;링크없으면
	{
		FileCreateShortcut, %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk, %A_ScriptDir%
		;menu,%m_etc_setting%,check,%M_autostart%
	}
 
}
return
 
 
 
;;------------------------------------------------------------------
;; 옵션 UI 열기
;;------------------------------------------------------------------
show_opt:
gosub,check_opt
Gui, 2:Show, h601 w431, %M_opt_title%
return
 
 
save_opt:
gui,2:submit,hide ;; 일단 각 수치를 적용.
loop,parse,M_Hotkey_List,|
{
	if A_loopfield=%type_hotkey_drop%
	type_hotkey = %a_index%
}
 
ini_write_all(tf_ini_name,tf_ini_list,"TurtleFolder")
;;모조리 ini에 저장.
return
 
 
cancel_opt:
gosub, check_opt
Gui, 2:hide
return
 
 
 
 
;;------------------------------------------------------------------
;; 열기창 위치값 찾기
;;------------------------------------------------------------------
check_open_folder_pos:
WinGetPos,open_x,open_y,open_h,open_w,%tf_id%
open_y := open_y-tf_win_offset_y
open_set = x%open_x% y%open_y% h20
return
 
 
;;------------------------------------------------------------------
;TC DIRMENU 읽어서 메뉴 만들기
;;------------------------------------------------------------------
get_tc_dirmenu:
{
	if is_use_ini!=1
	return
 
 
	menu,tcdir_menu,add,test,recent_menu_set
	menu,tcdir_menu,deleteall
	tcdir_menu_list =
	submenu_name = tcdir_menu
	loop,
	{
		iniread,dirname,%tf_tc_ini%,DirMenu,menu%A_Index%,-1
		iniread,dircmd,%tf_tc_ini%,DirMenu,cmd%A_Index%,-1
 
 
		if dirname!=-1 ;;만약 내용이 있으면 내용 확인.
		{
			tcdir_menu_list = %tcdir_menu_list%%dirname%|%dircmd%`n
 
			if (dirname="-") ;만약 그냥 줄이면...
			Menu, %submenu_name%, add
			else if (SubStr(dirname,1,1)="-" and dirname!="--") ;;만약 -로 시작되고, --이 아니면 서브메뉴시작
			{
				stringtrimleft,Submenu_name,dirname,1 ;;이름 추출
 
			}
			else if (dirname="--")  ;;만약 --로 끝나면...세브메뉴종료하고 서브메뉴를 기본 메뉴에 추가
			{
				menu,tcdir_menu,add,%Submenu_name%,:%submenu_name% ;;바로가기 만들고
				submenu_name = tcdir_menu
 
			}
			else	
			{
				if instr(dircmd,1,3) = "cd "
				stringtrimleft,dircmd,dircmd,3 ;;cd 제거
				fileappend, %dirname% / %submenu_name% `n,log.txt
				menu,%submenu_name%,add,%dirname%,tcdir_menu_set
			}
		}
		else
		{
			break	
		}
	}
}
 
 
 
;;------------------------------------------------------------------
;;TC DIRMENU 메뉴 열기
;;------------------------------------------------------------------
tcdir_menu_open:
{
	;TC메뉴가 없으면 반응않함.
	ifnotexist,%tf_tc_ini%
	return
	;TC의 DIRMENU를 열기
	menu,tcdir_menu,show
	return
}
 
;;------------------------------------------------------------------
;;히스토리 메뉴 만들어서 열기
;;------------------------------------------------------------------
recent_menu_open:
{
	menu,recent_menu,add,test,recent_menu_set
	menu,recent_menu,deleteall
	Loop, parse,tf_history_list,`n,`r
	{
		if A_Loopfield
		menu,recent_menu,add,%A_Loopfield%,recent_menu_set
	}
	menu,recent_menu,show
	return
}
 
 
 
;;------------------------------------------------------------------
;; 왼쪽패널에 설정된 창 가져오기
;;------------------------------------------------------------------
get_panel_left:
{
	if is_use_ini!=1
	return
 
	menu,left_menu,add,test,recent_menu_set
	menu,left_menu,deleteall
	left_path := get_TPathPanel("1")
	menu,left_menu,add,%left_path%,recent_menu_set	
	menu,left_menu,add
	loop,
	{
		iniread,leftcmd,%tf_tc_ini%,lefttabs,%A_Index%_path,-1
		if leftcmd!=-1
		{
			;stringtrimleft,leftcmd,dircmd,3 
			menu,left_menu,add,%leftcmd%,recent_menu_set
		}
		else
		{
			break	
		}
	}
}
 
 
 
;;------------------------------------------------------------------
;; 왼쪽패널에 설정된 창 열기
;;------------------------------------------------------------------
panel_left_open:
{
	ifnotexist,%tf_tc_ini%  ;TC메뉴가 없으면 반응않함.
	return
	menu,left_menu,show ;TC의 LEFTTAB를 열기
	return
}
 
;;------------------------------------------------------------------
;; 오른쪽패널에 설정된 창 가져오기
;;------------------------------------------------------------------
get_panel_right:
{
	if is_use_ini!=1
	return
 
	menu,right_menu,add,test,recent_menu_set
	menu,right_menu,deleteall
	right_path := get_TPathPanel("2")
	menu,right_menu,add,%right_path%,recent_menu_set
	menu,right_menu,add
	loop,
	{
		iniread,rightcmd,%tf_tc_ini%,righttabs,%A_Index%_path,-1
		if rightcmd!=-1
		{
			;stringtrimleft,rightcmd,dircmd,3 
			menu,right_menu,add,%rightcmd%,recent_menu_set
		}
		else
		{
			break	
		}
	}
}
 
;;------------------------------------------------------------------
;; 오른쪽패널에 설정된 창 열기
;;------------------------------------------------------------------
panel_right_open:
{
	ifnotexist,%tf_tc_ini% ;TC메뉴가 없으면 리턴.
	return
	menu,right_menu,show
	return
}
 
;;------------------------------------------------------------------
;;현재 폴더 위치를 정확히 찾아주기(진행중) - 변수명:last_recent_folder
;;------------------------------------------------------------------
find_folder:
{
	last_recent_folder:=get_opendialog_path(tf_id)
	return
}
 
;;------------------------------------------------------------------
;; 마지막 폴더로 바로가기
;;------------------------------------------------------------------
last_folder: 
{
	loop,parse,tf_history_list,`n,`r
	{
		put_openwindow(A_loopfield,tf_id)
		;traytip,1,%A_loopfield%1
		gosub,auto_count
		break
	}
	return
}
 
 
;;------------------------------------------------------------------
;; 토커창으로 최근 히스토리 폴더 날리기
;;------------------------------------------------------------------
send_to_tc:
{
	if is_send_tc = y
	set_tc_panelpath(last_recent_folder) ;;
	return
}
 
 
;;------------------------------------------------------------------
;; 최근 방문한 폴더리스트 저장(history)
;;------------------------------------------------------------------
save_history: 
{
	if last_recent_folder! ;내용이 없으면 백.
	return
 
	cnt = 1
	new_history_list = %last_recent_folder% ;일단 첫줄은 최근꺼.
	Loop, parse,tf_history_list,`n,`r  ;한줄한줄 비교해서 있으면 빼고,없으면 아래에 더하기.
	{
		if	last_recent_folder != %A_Loopfield%
		{
			;stringlen,last_len,last_recent_folder
			if strlen(last_recent_folder) > 1
			{
				new_history_list =	%new_history_list%`n%A_Loopfield%	
				cnt:=cnt+1
			}
		}
		if tf_history_num = %cnt%
		break
	}
	filedelete,%tf_history_file%
	fileappend,%new_history_list%,%tf_history_file%,cp949
	tf_history_list = %new_history_list%
	new_history_list =
	return
}
 
;;------------------------------------------------------------------
;; wincmd.ini새로 저장하기(토탈커맨더옵션창 열고닫기)
;;------------------------------------------------------------------
reset_wincmd_ini:
{
	ifnotexist,ahk_class TDLGCONFIGALL
	{
		PostMessage, 0x111, 227, 0, ,Total Commander
		winwait,ahk_class TDLGCONFIGALL
		controlsend,TButton30,{enter},ahk_class TDLGCONFIGALL
		gosub get_tc_dirmenu
		gosub get_panel_left
		gosub get_panel_right
	}
	return
}
 
 
;;------------------------------------------------------------------
;; 토커ini를 직접 불러오기(수동)
;;------------------------------------------------------------------
get_tc_manual:
{
	tc_manual_path =
	FileSelectFile, tc_manual_path , 1, %tf_tc_ini%, %M_INI_Locate%, *.ini
	ifexist,tc_manual_path
	tf_tc_ini := tc_manual_path
 
	guicontrol,2:,tf_tc_ini,%tf_tc_ini%
 
	return
}
 
;;------------------------------------------------------------------
;; 토커ini를 reg에서 불러오기(자동)
;;------------------------------------------------------------------
get_tc_ini:
{
	if is_autocheck=1
	{
		ifnotexist,%tf_tc_ini% ;;만약 ini가 없으면
		{
			;regedit에서 찾기
			RegRead, tf_tc_ini_temp, HKEY_CURRENT_USER,Software\Ghisler\Total Commander, IniFileName 
			StringReplace, tf_tc_ini_temp,tf_tc_ini_temp,`%APPDATA`%,%A_APPDATA%
			StringReplace, tf_tc_ini_temp,tf_tc_ini_temp,`%SystemRoot`%,%A_WinDir%
			StringReplace, tf_tc_ini_temp,tf_tc_ini_temp,`%ProgramFiles`%,%A_ProgramFiles%
			ifexist,%tf_tc_ini_temp% ;자동찾기에서 있으면
			tf_tc_ini := tf_tc_ini_temp
 
			tf_tc_ini_temp = 
		}
 
		loop,parse,wincmd_list,`,
		{
		ifexist,%A_loopfield%wincmd.ini ;;만약 레지스트리에 ini가 없으면
		{
		tf_tc_ini = %A_loopfield%wincmd.ini	;;tc_up 폴더 찾기..
		}
		}
	}
	return
}
 
 
;;------------------------------------------------------------------
;; 메뉴를 클릭하면 해당 창으로 가기
;;------------------------------------------------------------------
recent_menu_set:
{
	if winactive("Ahk_class TTOTAL_CMD")
	set_tc_panelpath(A_thisMenuItem)
	else
	put_openwindow(A_thisMenuItem,tf_id)
	gosub,auto_count
	return
}
 
;;------------------------------------------------------------------
;; 메뉴를 클릭하면 해당 창으로 가기 -즐겨찾기용
;;------------------------------------------------------------------
tcdir_menu_set:
{
	select_item=%A_ThisMenuItem%
	;msgbox %tcdir_menu_list%
	loop,parse,tcdir_menu_list,`n,`r ;;메모리에서 뺑뺑이 돌리쟈.
	{
		cmd_list = %A_Loopfield% ;;일단 한개 걸러서.
		stringsplit,cmd_list,cmd_list,| ;;나누기
		;msgbox %cmd_list%`n %cmd_list0% / %cmd_list1% / %cmd_list2% `n %select_item%
		if cmd_list1=%select_item% ;;만약 동일하면.
		{
			;traytip,Test,Done!
			stringleft,is_folder_open,cmd_list2,3
			if (is_folder_open = "cd ") ;;만약 열기명령이면......
			{
				stringtrimleft,cmd_list2,cmd_list2,3 
				if winactive("Ahk_class TTOTAL_CMD")
				set_tc_panelpath(cmd_list2)
				else
				put_openwindow(cmd_list2,tf_id)
				gosub,auto_count
			}
			if (is_folder_open != "cd ")
			{
				;msgbox %is_folder_open%
				run,%cmd_list2%
			}
			is_folder_open=
 
			break
		}
		tcdir_menu_list = ;;메모리 비우기
	}
	return
}
 
 
 
 
;;------------------------------------------------------------------
;; 부모창 가운데로 배치
;;------------------------------------------------------------------
set_center:
{
	if opened = n
	{
		p_id := get_parents_id(tf_id)
		WinGetPos ,parents_X, parents_Y, parents_W, parents_H, ahk_id %p_id% ;부모창의 위치/크기 얻기.
		parents_center_x := parents_X+(parents_W/2) ;부모창의 중점알기
		parents_center_y := parents_Y+(parents_H/2) ;부모창의 중점알기
 
		if tf_is_changesize = 1
		winmove,%tf_id%,,,,%tf_width%,%tf_height%
 
		if tf_height<40 ;40보다 작으면 FlashFolder겠지뭐;;;
		return 
 
		WinGetPos ,,, child_W, child_H, %tf_id% ;현재창의 위치/크기 얻기.
		child_center_x := parents_center_x - (child_W/2)
		child_center_y := parents_center_y - (child_H/2)
		winmove,%tf_id%,,child_center_x,child_center_y
		;traytip,TP,%parents_center_x% %parents_center_y% %p_id%
		opened = y
	}
	return
}
 
 
;;------------------------------------------------------------------
;; 주소창에서 엔터를 누르면 해당창으로 이동
;;------------------------------------------------------------------
go_path:
{
	gui,submit
	put_openwindow(folder_val,tf_id)
	gosub,auto_count
	return
}
 
 
 
 
;;------------------------------------------------------------------
;; 파일이름을 원래껄로 되돌리기
;;------------------------------------------------------------------
back_temp_text:

if A_OSVersion = WIN_XP
	ControlSetText ,Edit1,%tf_temp_text%,%tf_id%
	else
	{
	ControlSetText ,Edit1,%tf_temp_text%,%tf_id%
	controlsend,Edit1,{left}{space}{BS},%tf_id%
	}
 
return
 
 
 
;;------------------------------------------------------------------
;; 자동으로 다음 이름 찾아 넣기
;;------------------------------------------------------------------
auto_count:
{
	;오토카운트가 1이 아니면 돌아가!
	if is_auto_count !=1
	return
 
 
	ac_file_count = 1
	ac_find_start := "n"
	sys_folder =
	sysname_list =
 
	controlgettext ,tf_temp_text,Edit1,%tf_id% ; 임시로 원래 이름 챙겨놓기.
 
	ControlGet, sysname_list, List,, SysListView321, %tf_id%  ;일단 SysListView321 확인해서 리스트 챙겨오기
 
	if sysname_list! ;윈7일경우..편법으로 받아오기
	{
		send,!d
		sleep,100
		ControlGetText,sys_folder,Edit2,%tf_id%
		loop,%sys_folder%\*.*
		{
			sysname_one=%A_LoopFileName%
			sysname_ext := strlen(A_LoopFileExt)+1
			stringtrimright,sysname_one,A_LoopFileName,%sysname_ext%
			sysname_list= %sysname_list%`n%sysname_one%	
		}
	}
 
 
	;ifinstring,sysname_list,original_text  ;;원래 이름이 파일리스트에 있을경우, 파일이름을 변경하지 않음?
	;return
 
 
	Loop, Parse, sysname_list, `n  
	;리스트에서 끝이 숫자형태로 되어있는 파일이름 찾기
	{
		count_filename = %A_loopfield%
		ac_cnt := regexmatch(count_filename,"[^\d]+\d+$")
 
		if (ac_cnt != 0 and ac_find_start = "n") ;만약 리스트에서 그런 파일이름이 있으면...
		{
			count_next_filename := count_filename
			ac_find_start := "y"  ;다음꺼 찾기모드 온.
 
		}
 
		if (ac_find_start = "y") ;;찾기모드가 켜지면....
		{
			count_next_filename :=	count_next(count_filename) ;; 다음글자 체크
			IfInString,sysname_list,%count_next_filename% ;있을 경우, 그 다음 숫자를 찾기반복하되 카운트 +1 씩하기.
			{
				ac_file_count := ac_file_count + 1
				count_filename := count_next_filename
			}
 
			IfnotInString,sysname_list,%count_next_filename% ;없을 경우
			{
 
				if ac_file_count >= %auto_count_min% ;;만약 몇개 이상이면....
				{
					if A_OSVersion = WIN_XP
					ControlSetText ,Edit1,%count_next_filename%,%tf_id%
					else
					{
					ControlSetText ,Edit1,%count_next_filename%,%tf_id%
					controlsend,Edit1,{left}{space}{BS},%tf_id%
					}
					break
				}
				else
				{
					ac_find_start := "n" 
					ac_file_count = 1
				}
			}
		}
 
	}
	return
}
 
 
;;------------------------------------------------------------------
;; 토커창 등에서 마우스중클릭시 히스토리 열기
;;------------------------------------------------------------------
#if ((mousegetcontrol()="TMyListBox1" or mousegetcontrol()="TMyListBox2" or mousegetcontrol()="SysListView321") and is_hotkey=1)
Mbutton::
if type_hotkey = 1
gosub,recent_menu_open
 
if type_hotkey  = 2
gosub,get_panel_left
 
if type_hotkey  = 3
gosub,get_panel_right
 
if type_hotkey  = 4
gosub,get_tc_dirmenu
 
;gosub,get_tc_dirmenu
return
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;;------------------------------------------------------------------------------------
;;
;; 요 아래는 쓰레기코드.
;;
;;------------------------------------------------------------------------------------
 
;#1::
tc_path := get_TPathPanel("1")
traytip,tc_path,%tc_path%
put_openwindow(tc_path,tf_id)
return
 
 
;#2::
tc_path := get_TPathPanel("2")
traytip,tc_path,%tc_path%
put_openwindow(tc_path,tf_id)
return
 
 
;; 특정파일을 열어서 파일리스트를 읽고 그 내용을 메뉴로 표시. 메뉴를 클릭하면 해당 메뉴로 가기.
;#3::
 
 
 
;#4::
 
tp:=get_opendialog_path(tf_id)
if tp!
tp= 경로를 찾을수 없습니다.
 
traytip,꼬북!,%tp%
return
 
 
 
 
 
;;------------------------------------------------------------------
;;패널/오른쪽/왼쪽 열기.
;;------------------------------------------------------------------
panel_menu_open:
menu,panel_menu,add,test,recent_menu_set
menu,panel_menu,deleteall
left_path := get_TPathPanel("1")
right_path := get_TPathPanel("2")
menu,panel_menu,add,%left_path%,recent_menu_set	
menu,panel_menu,add,%right_path%,recent_menu_set
menu,panel_menu,show
return
1)
실제로 win7용 flashfolder 기다리다 너무 안나오길래 에라 모르겠다!하고 빡쳐서 만들었습니다
2)
많이 느린편은 아닙니다만, FlashFolder만큼 깔끔하진 못하네요