AutoHotkey Community

It is currently May 27th, 2012, 12:50 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Treeview example
PostPosted: July 25th, 2011, 1:29 pm 
Offline

Joined: April 19th, 2005, 10:26 am
Posts: 2250
Location: switzerland
( I tried a treeview to modify gwbasic programs )
can use also for other text-files
Code:
;-------- saved at Montag, 3. November 2008 12:52:53 --------------
;-------- http://www.autohotkey.com/forum/topic37274.html ---

MODIFIED=20110725

/*
-first start shows desktop-tree
 ( add your own favorite tree-roots )
-some programs for gwbasic
-open ahk/basic/text files in editbox or start with doubleclick
-open pictures and use keys UP/DOWN or SPACE
*/



#NoEnv
#Persistent
#NoTrayIcon
#SingleInstance Force
setworkingdir,%A_scriptdir%

Sendmode,InputThenPlay

SetBatchLines -1
SetWinDelay -1
SetControlDelay -1
Process Priority , , High
transform,S,chr,32

PR=c:\gwbasic.exe

EXT2          =txt,ahk,csv,bat,bak,bas,css,ba,ini,hta,log       ;-- only show these extensions in EditBox
EXT3          =png,jpg,bmp,tif,gif                              ;-- pictures

;-- allow to start without asking:
EXT9          =pdf,mov,mp4,mp3,flv,txt,ahk,csv,ini,hta,png,jpg,bmp,tif,gif,txt,ahk,csv,bas,ini,hta


RSSINI=%A_scriptdir%\LV_TreeviewINI.txt
ifnotexist,%rssini%
  IniWrite,Desktop,%rssini%,Root1,KEY1
IniRead,RootX,%rssini%,Root1,KEY1
   gosub,aax2



   Menu,S1,add,MyTREE      ,MH1
   Menu,S1,add,DOCTXT      ,MH1
   Menu,S1,add,VIDEO       ,MH1
   Menu,S1,add,FOTO        ,MH1
   Menu,S1,add,MUSIC       ,MH1
   Menu,S1,add,Filme       ,MH1
   Menu,S1,add,csvtxt      ,MH1
   Menu,S1,add,Desktop     ,MH1


   ;----------------------------
   Menu,S2,add,Volume      ,MH2
   Menu,S2,add,Charmap     ,MH2
   ;Menu,S2,add,MySaPrograms,MH2
   ;Menu,S2,add,SaPrograms  ,MH2


   ;----------------------------
   menu,myMenuBar,Add,ROOT      ,:S1
   menu,myMenuBar,Add,Programme ,:S2

   ;----------------------------
   gui,2:menu,MyMenuBar
   ;----------------------------



WA=%A_screenwidth%
HA=%A_screenheight%
SHOWW:=(WA*99)/100  ;-- GUI width
SHOWH:=(HA*93)/100  ;-- GUI height
TRH:=(HA*72)/100
LWH:=(HA*72)/100
EDH:=(HA*86)/100
PIH:=(HA*65)/100    ;-- picture height
BT1:=(HA*83)/100    ;-- buttons
BT2:=(HA*86)/100    ;-- buttons
BT3:=(HA*88)/100    ;-- buttons

X1:=(WA*1 )/100
W1:=(WA*11 )/100
X2:=(WA*12.5)/100
W2:=(WA*13 )/100
X3:=(WA*26.5)/100
W3:=(WA*72)/100
W9:=(WA*97)/100

Gui,2:default
Gui,2: margin, 0, 0

Gui,2: Add, TreeView, vMyTree1 x%x1% y0 w%w1% h%trh% vMyTree1 gMyTree ImageList%ImageListID%
Gui,2: Add, ListView, vMyList1 x%x2% y0 w%w2% h%lwh% vMyList1 gMyList -hdr -multi AltSubmit, Name
Gui,2:Font,,FixedSys
Gui,2:Add, Edit     ,          x%x3% y0 w%w3% h%edh%  vA2x    ,


Gui,2: Add, Button , x10   y%bt1%  w100 h22    gOpen1    ,Text-File
Gui,2: Add, Button , x10   y%bt2%  w100 h22    gSave1    ,Text-SAVE
Gui,2: Add, Button , x120  y%bt1%  w100 h22    gOpen2    ,Folder

Gui,2: Add, Button , section x%x3% y%bt3%  w130 h22    gGWBASIC1 ,GWBASIC-convert
Gui,2: Add, Button , xp+140        y%bt3%  w110 h22    gGWBASIC2 ,GWBASIC-RUN
Gui,2: Add, Button , xp+120        y%bt3%  w120 h22    gSystem1  ,GWBASIC-CLOSE
;Gui,2: Add, Button , xp+130        y%bt3%  w90  h22    g80Chars  ,80-Chars
;Gui,2: Add, Button , xp+100        y%bt3%  w90  h22    gREMARKS  ,Remarks
Gui,2: Add, Button , xp+200        y%bt3%  w90  h22    gReload1  ,Reload



ImageListID1 := IL_Create(10)
ImageListID2 := IL_Create(10, 10, true)

LV_SetImageList(ImageListID1)
LV_SetImageList(ImageListID2)

Gui,2: Add, StatusBar, gMyStatusBar
SB_SetParts(W1,W2,W3)

SplashTextOn, 200, 25, Explorer, Loading...
gosub,readtree
SplashTextOff

Gui,2: Show,x0 y0 w%showw% h%showh%,TREEVIEW Example
return
;--------------------------------------------------------



Readtree:
TV_Delete()
LV_Delete()

AddSubFoldersToTree(TreeRoot)
GuiControl,2: -Redraw, MyTree1
AddSubFoldersToTree(folder, ID = 0)
{
if ID = 0
ID := TV_Add(truc, truc , "Icon10 select expand")
    Loop %folder%\*.*, 2
        AddSubFoldersToTree(A_LoopFileFullPath, TV_Add(A_LoopFileName, ID , "Icon4"))
}
GuiControl,2: +Redraw, MyTree1

return
;--------------------------------------------------




3Guiclose:
gui,3:destroy
return
;--------------------------------------------------

2GuiClose:
gui,3:destroy
ExitApp
;--------------------------------------------------


Reload1:
reload
return



Open2:
Gui,2:submit,nohide
run,%SelectedFullPath%
return
;--------------------------------------------------




;---- textfile -----------
OPEN1:
Gui,2: Submit,nohide
;msgbox, 262208,Message,File=%f1%
SplitPath, F1, name, dir, ext, name_no_ext, drive
If Ext Not In %ext2%
      return
else
      run,notepad %f1%
return
;--------------------------------------------------







save1:
Gui,2: Submit,nohide
GuiControlGet,C,,A2x
if (F1="" or C="")
   return
;msgbox, 262208,Message,File=%f1%`n%c%
;return
SplitPath, F1, name, dir, ext, name_no_ext, drive
If Ext Not In %ext2%
    return
else
    {
    msgbox, 262436, ,Want you overwrite`n%F1% ?
    ifmsgbox,NO
      return
    ifmsgbox,Cancel
      return
    }

;-- or use filedelete --
filerecycle,%f1%
stringreplace,C,C,`n,`r`n,all
Fileappend,%c%`r`n,%f1%
;msgbox, 262208,Message,File %F1% is saved
;run,%f1%
run,%SelectedFullPath%      ;-- open folder
return
;--------------------------------------------------







;------------------------------------------------------------------
MH1:
IniRead,CC3,%rssini%,Root1,KEY1
if CC3<>%A_ThisMenuItem%
   {
   IniWrite,%A_ThisMenuItem%,%rssini%,Root1,KEY1
   ;IniRead,RootX,%rssini%,Root1,KEY1
   Rootx=%A_ThisMenuItem%
      gosub,AAX2
   return
   }


aax2:
if RootX=doctxt
   Treeroot=c:\M_doctxt
if RootX=csvtxt
   Treeroot=c:\M_csvtxt
if RootX=music
   Treeroot=c:\M_music
if RootX=Filme
   Treeroot=c:\M_Filme
if RootX=Video
   Treeroot=c:\M_VIDEO
if RootX=Foto
   Treeroot=c:\M_Foto
if RootX=MyTree
   Treeroot=C:\1A\_00_MAIN_AHK\1A_MyTreeview
if RootX=Desktop
   Treeroot=%A_desktop%

gosub,readtree
return


;------------------------------------------------------------------


;------------------------------------------------------------------
MH2:
if A_thisMenuItem=Volume
    {
    run,sndvol32
    run,sndvol32 /rec
    CN=RunDLL32.EXE shell32.dll,Control_RunDLL mmsys.cpl,,1
    run,%CN%
    }
if A_thisMenuItem=Charmap
    run,charmap

/*
if A_thisMenuItem=MySaPrograms
    run,C:\1A\_00_MAIN_AHK\1A_MySaPrograms

if A_thisMenuItem=SaPrograms
    run,C:\Programme_Standalone
*/

return
;------------------------------------------------------------------













;------------------------------
MyTree:
if A_GuiEvent <> S
  return

GuiControl,2:,A2x,
TV_GetText(SelectedItemText, A_EventInfo)
ParentID := A_EventInfo
Loop
    {
    ParentID := TV_GetParent(ParentID)
    if not ParentID
       break
    TV_GetText(ParentText, ParentID)
    SelectedItemText = %ParentText%\%SelectedItemText%
    }

SelectedFullPath = %TreeRoot%\%SelectedItemText%
StringReplace, SelectedFullPath, SelectedFullPath, \\ , \

StringRight, LastChar, SelectedFullPath, 1
if LastChar <> \
SelectedFullPath = %SelectedFullPath%\

FilenameforSB = Loading Files
SB_SetText(SelectedFullPath . FilenameforSB, 1)

LV_Delete()

VarSetCapacity(Filename, 260)
sfi_size = 352
VarSetCapacity(sfi, sfi_size)


if (SelectedItemText = %ParentText%)
rooticonlist= %treeroot%\
else
rooticonlist= %SelectedFullPath%

FileCount = 0
TotalSize = 0

GuiControl,2: -Redraw, MyList1

Loop %rooticonlist%*.*
{
    FileName := A_LoopFileFullPath
    SplitPath, FileName,,, FileExt


    if FileExt in EXE,ICO,ANI,CUR,LNK
      {
      ExtID := FileExt
      IconNumber = 0
      }

    else
      {
        ExtID = 0
        Loop 7
           {
            StringMid, ExtChar, FileExt, A_Index, 1
            if not ExtChar
                break

            ExtID := ExtID | (Asc(ExtChar) << (8 * (A_Index - 1)))
           }
        IconNumber := IconArray%ExtID%
     }

    if not IconNumber
    {
        if not DllCall("Shell32\SHGetFileInfoA", "str", FileName, "uint", 0, "str", sfi, "uint", sfi_size, "uint", 0x101)
            IconNumber = 9999999
        else
        {
            hIcon = 0
            Loop 4
                hIcon += *(&sfi + A_Index-1) << 8*(A_Index-1)
            IconNumber := DllCall("ImageList_ReplaceIcon", "uint", ImageListID1, "int", -1, "uint", hIcon) + 1
            DllCall("ImageList_ReplaceIcon", "uint", ImageListID2, "int", -1, "uint", hIcon)
            DllCall("DestroyIcon", "uint", hIcon)
            IconArray%ExtID% := IconNumber
        }
    }

FileCount += 1
TotalSize += A_LoopFileSize
LV_Add("Icon" . IconNumber, A_LoopFileName)
}

GuiControl,2: +Redraw, MyList1

SB_SetText(FileCount . " files", 1)
SB_SetText(Round(TotalSize / 1024, 1) . " KB", 2)
FilenameforSB =
SB_SetText(SelectedFullPath . FilenameforSB, 3)
return
;------------------------------




MyList:
Gui,2:submit,nohide
Gui,2:default
Gui,2:ListView,MyList1

    RN:=LV_GetNext("C")
    RF:=LV_GetNext("F")
    GC:=LV_GetCount()

if RN=0
   return


;gui,3:destroy
;GuiControl,2:Enable,A2x


if A_GuiEvent = Normal
    {
    GuiControl,2: ,A2x,
    LV_GetText(FileNameforSB, A_EventInfo, 1)
    StringRight, LastChar, SelectedFullPath, 1
    if LastChar <> \
       SelectedFullPath = %SelectedFullPath%\
    ;SB_SetText(FileNameforSB, 3)
    F1=%SelectedFullPath%%FilenameforSB%
    SB_SetText(F1, 3)
    SplitPath, F1, name, dir, ext, name_no_ext, drive
    ;----- if text -----------
    If Ext In %ext2%
      {
      GuiControl,2:Enable,A2x
      Fileread,a,%F1%
      GuiControl,2: ,A2x, %a%
      return
      }
    ;------ pictures ----------
    If Ext In %ext3%
       gosub,showpict

  }




if A_GuiEvent=K
{
LV_GetText(C1,RF,1)
F1=%SelectedFullPath%%C1%
SplitPath, F1, name, dir, ext, name_no_ext, drive

;- scroll Forward with SPACE-key or use UP/DOWN  ----------
GetKeyState, State,space
If (State = "D")
  {
  ;msgbox, 262208,SPACE,Pressed SPACE`n`nRow=%rn%`nC1=%c1%,2
  RF:=(RF+1)
  LV_Modify(RF, "+Select +Focus")    ;-- select focus
  LV_GetText(C1,RF,1)
  F1=%SelectedFullPath%%C1%
  SplitPath, F1, name, dir, ext, name_no_ext, drive
       if (RF=(GC))
         msgbox, 262208, Forward, Row=%rn%`nReached END`n%C1% , 2
       If Ext In %ext3%
         gosub, showpict
  }

  GetKeyState,state1,UP
  if (state1="D")
    {
    if RF=1
      msgbox, 262208, Backward, Row=%rn%`nReached FirstRow`n%C1% , 2
   If Ext In %ext3%
       gosub, showpict
    }


GetKeyState,state2,DOWN
  if (state2="D")
    {
       if (RF=(GC))
          msgbox, 262208, Forward, Row=%rn%`nReached END`n%C1% , 2
          If Ext In %ext3%
             gosub, showpict
    }
}
;------------




if A_GuiEvent = Doubleclick
    {
    LV_GetText(C1, A_EventInfo, 1)
    F1=%SelectedFullPath%%C1%
    SplitPath, F1, name, dir, ext, name_no_ext, drive
    If Ext In %Ext9%
       run,%f1%
    else
      {
      msgbox, 262180, , Want you RUN`n%f1% ?
      IfMsgBox,No
        return
      Else
       run,%f1%
       }
    }
;------------

if A_GuiEvent = Rightclick
    {
    LV_GetText(C1, A_EventInfo, 1)
    F1=%SelectedFullPath%%C1%
    SB_SetText(F1,3)
    If Ext In %Ext9%
       run,%f1%
    else
      {
      msgbox, 262180, , Want you RUN`n%f1% ?
      IfMsgBox,No
        return
      Else
       run,%f1%
       }
    }
return
;------------------------------





ShowPict:
      gui,3:destroy
      GuiControl,2:Disable,A2x
      ;Gui,2:Add,Picture,x220 y420 w200  h150 +0x4000000,%f1%  ;-- allow once a background behind GUI
      Gui,3: +Alwaysontop
      Gui,3:Add,Picture,x0 y0 w%w3%  h%pih%,%f1%
      Gui,3:Show,x%x3% y30 w%w3%  h%pih%
      Gui,2:Show
      WinActivate
return





MyStatusBar:
if A_GuiEvent = normal
  {
  if  a_eventinfo = 3
     Msgbox, %f1%
  }
return
;------------------------------




;------ replace 13 with 13/10 -----------
gwbasic1:
Gui,2:submit,nohide
GuiControlGet,C,,A2x
if (F1="" or C="")
   return
SplitPath, F1, name, dir, ext, name_no_ext, drive
if (ext="bas" or ext="ba")
  {
  msgbox, 262436, ,This converts 13 to 13/10`nOriginal file is in RecycleBin`n%F1% ?
   ifmsgbox,NO
      return
   ifmsgbox,Cancel
      return
  filerecycle,%f1%
  stringreplace,C,C,`r,`r`n,all
  ;F2=%dir%\%name_no_ext%_%A_now%.%ext%
  ;Fileappend,%c%`r`n,%f2%
  Fileappend,%c%`r`n,%f1%
  ;msgbox, 262208,Message,File %F1% is saved
  ;run,%f2%
  GuiControl,2:,A2x,
  ;Fileread,a,%F2%
  Fileread,a,%F1%
  GuiControl,2: ,A2x, %a%
  run,%SelectedFullPath%      ;-- open folder
  }
return
;-------------------------------------------------------------





;-- run gwbasic --------
GWBASIC2:
Gui,2:submit,nohide
GuiControlGet,C,,A2x
if (F1="" or C="")
   return
SplitPath, F1, name, dir, ext, name_no_ext, drive
if (ext="bas")
  {
  SplitPath, F1, name, dir, ext, name_no_ext, drive
  Loop, %F1%                              ;-- create shortpath
        SP1= %A_loopFileShortPath%
     Run,%ComSpec% /k %PR% %SP1%,,,PID1
  }
return
;-------------------------------------------------------------






80CHARS:
Gui,2:submit,nohide
GuiControlGet,C,,A2x
if (F1="" or C="")
   return
SplitPath, F1, name, dir, ext, name_no_ext, drive
F2=%dir%\%name_no_ext%_%A_now%.%ext%

if (ext="txt")
{
L2:=(81)
 Loop,Read,%F1%
   {
   LR=%A_LoopReadLine%
   LR=%LR%                      ;remove leading spaces
   if LR=
      continue
   stringlen,L1,LR
    if (L1<L2)
       {
       Fileappend,%LR%`r`n,%F2%
       continue
       }
    E=
    StringSplit,A,LR,%S%
     loop,%A0%
       {
       D:=A%A_Index%
       E=%E%%S%%D%
       stringlen,L1,E
       if (L1<L2)
          continue
       else
         {
         Fileappend,%E%`r`n,%F2%
         E=
         continue
         }
       }
   ;Fileappend,%S%%E%`r`n,%F2%          ;write rest
   Fileappend,%E%`r`n,%F2%          ;write rest
   }
  GuiControl,2:,A2x,
  Fileread,a,%F2%
  GuiControl,2: ,A2x, %a%
  run,%SelectedFullPath%      ;-- open folder
  ifexist,%f2%
    run,%f2%
}
return
;-------------------------------------------------------------




;-------------- move remarks in ahk-script ----------
remarks:
Gui,2:submit,nohide
GuiControlGet,C,,A2x
if (F1="" or C="")
   return
SplitPath, F1, name, dir, ext, name_no_ext, drive
F2=%dir%\%name_no_ext%_%A_now%.%ext%

Autotrim,off
TAB1=81

if (ext="ahk")
  {
  Loop,Read,%F1%
    {
    LR=
    C1=
    C2=
    LR=%A_LoopReadLine%
    stringreplace,LR,LR,%s%;,?,all
    StringSplit,C,LR,?,
    C1 := LP(C1,TAB1,S,"L")
    if C2=
       e4=%e4%%c1%%s%%c2%`r`n
    else
       e4=%e4%%c1%%s%;-- %c2%`r`n
    }
  Fileappend,%e4%,%f2%
  e4=
  LR=
  C1=
  C2=
  GuiControl,2:,A2x,
  Fileread,a,%F2%
  GuiControl,2: ,A2x, %a%
  run,%SelectedFullPath%      ;-- open folder
  ifexist,%f2%
    run, notepad %f2%
 }
return
;-------------------------------------------------------------





SYSTEM1:
Settitlematchmode,2
SetKeyDelay,25,5

;dd=C:\WINDOWS\system32\cmd.exe
dd=cmd.exe

;IfWinExist, cmd.exe
;  ifwinexist, %V2%
;    winactivate, %V2%
;#IfWinActive ahk_class ConsoleWindowClass


WinWait,%dd%
IfWinNotActive ,%dd%,,WinActivate,%dd%
  WinWaitActive,%dd%
  {
  sleep,1300
  ControlSend,,^{CtrlBreak}`r`n,ahk_pid %PID1% ;--
  sleep,1100
  ControlSend,,system`r`n,ahk_pid %PID1%       ;-- quit GWBASIC
  sleep,1100
  ControlSend,,exit`r`n,ahk_pid %PID1%         ;-- quit DOS
  }
return
;-------------------------------------------------------------




;----------- LinePadding BoBo --------------
LP(String,FieldLen,ToAppend,Justification)
 {
   StringLen, StringLen, String
   LCnt := FieldLen-StringLen
   Loop, % LCnt
     Appended := (Appended . ToAppend)
   If Justification = R
      Return (Appended . String)
   If Justification = L
         Return (String . Appended)
 }
;=========== END script LinePadding ===============



;======================== END PROGRAM ==================================================================


Report this post
Top
 Profile  
Reply with quote  
 Post subject: help
PostPosted: January 20th, 2012, 5:46 pm 
Offline

Joined: January 18th, 2012, 7:39 pm
Posts: 61
Location: tennessee/florida, United States
hey garry, thank you for referring me to this, but im more trying to set up one of those custom treeviews with "parent 1" or "item2"
could you please give me some input on this post of mine, if so i can continue with my project ive been stuck on for the longest time!

http://www.autohotkey.com/forum/viewtopic.php?p=506808#506808


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: Bing [Bot], bowen666 and 18 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group