⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsupselector.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
📖 第 1 页 / 共 3 页
字号:
    imgForm = Picture["img/32/form.png"]    imgModule = Picture["img/32/module.png"]    imgPicture = Picture["img/32/image.png"]    imgProject = Picture["img/32/gambas.png"]    imgDirectory = Picture["img/32/folder.png"]    imgNoDir = Picture["img/32/forbid.png"]    Explorer = ivExplorer    iImageSize = 32    cvExplorer.Visible = FALSE    ivExplorer.Visible = TRUE    btnTypeList.Picture = Picture["img/16/list.png"]    btnTypeList.ToolTip = ("Show by list")  ENDIF  Explorer.RaiseENDPRIVATE SUB Fill_Tree(sPath AS String)  DIM sDir AS String  DIM arFile AS NEW String[]  DIM scDir AS String  DIM sSeq AS String  'Message("tree " & sPath)  sSeq = Left(sPath)  sPath = Mid(sPath,2)  IF NOT Exist (sPath) THEN RETURN  IF NOT TreeExplorer.Exist(sSeq & sPath &/ "child") THEN RETURN  TreeExplorer.Remove(sSeq & sPath &/ "child")  'TRY sDir = Dir(sPath)  INC Application.Busy  FOR EACH sDir IN Dir(sPath)    IF IsDir(sPath &/ sDir) THEN      IF Stat(sPath &/ sDir).Hidden AND NOT ShowHidden THEN CONTINUE      arFile.add(sDir)    ENDIF  NEXT  arFile.Sort  FOR EACH sDir IN arFile    'scDir = Conv$(sDir, System.Charset, Desktop.Charset)    scDir = sDir    IF AccessTest(sPath &/ sDir) THEN      IF Exist(sPath &/ sDir &/ ".project") THEN        TreeExplorer.add(sSeq & sPath &/ sDir, scDir,imgTreeProject,sSeq & sPath)        IF HaveDirChild(sPath &/ sDir) THEN TreeExplorer.add(sSeq & sPath &/ sDir &/ "child", "",imgTreeDir,sSeq & sPath &/ sDir)      ELSE         TreeExplorer.add(sSeq & sPath &/ sDir, scDir,imgTreeDir,sSeq & sPath)          IF HaveDirChild(sPath &/ sDir) THEN TreeExplorer.add(sSeq & sPath &/ sDir &/ "child", "",imgTreeDir,sSeq & sPath &/ sDir)      ENDIF    ELSE        TreeExplorer.add(sSeq & sPath &/ sDir, scDir,imgTreeNoDir,sSeq & sPath)    ENDIF  NEXTFINALLY  DEC Application.BusyCATCH  TreeExplorer.ClearENDPRIVATE FUNCTION HaveDirChild(sPath AS String) AS Boolean  DIM shDir AS String  FOR EACH shDir IN Dir(sPath)    WITH Stat(sPath &/ shDir)    IF .Type = gb.Directory THEN      IF .Hidden THEN        IF ShowHidden THEN RETURN TRUE      ELSE        RETURN TRUE      ENDIF    ENDIF    END WITH  NEXT  RETURN FALSEENDPUBLIC SUB TreeExplorer_Expand()  Fill_Tree(LAST.Item.Key)ENDPUBLIC SUB InitTree(sPath AS String, OPTIONAL Seq AS String)  DIM arSeq AS NEW String[]  DIM sSeq AS String  TreeExplorer.Clear  IF NOT Seq THEN Seq = "$"  arSeq = Split(Seq, ",")  FOR EACH sSeq IN arSeq    IF MyVal(sSeq) > CoolTab.Count() - 1 THEN sSeq = "0"    IF sSeq = "$" THEN      sPath = sSeq & sPath      imgTreeRoot = CoolTab.current.Picture    ELSE      CoolTab.Button_Select(MyVal(sSeq))      sPath = sSeq & CoolTab.GetBookMark(MyVal(sSeq)).ToolTip      imgTreeRoot = CoolTab.GetBookMark(MyVal(sSeq)).Picture    ENDIF    TreeExplorer.Add(sPath,File.Name(Mid(sPath,2)),imgTreeRoot)    TreeExplorer.Add(sPath &/ "child","child",,sPath)    TreeExplorer[sPath].Expanded = TRUE 'Fill_Tree("/")  NEXTENDPUBLIC SUB Form_Resize()  DIM iBW AS Integer  IF DialogType = SHOW_DIRECTORY THEN    pnlFile.H = txtFile.Y + txtFile.H + 8  ENDIF  iBW = ButtonWidth  IF iBW THEN ibW = iBW + 8  lblLook.Move(0, 0)  pnlFile.Move(0, ME.ClientHeight - pnlFile.Height, ME.ClientWidth - iBW)  txtFile.Move(lblFile.Width + 10, lblFile.Top, pnlFile.ClientWidth - lblFile.Width - 10)  cboFilter.Move(lblFilter.Width + 10, pnlFile.ClientH - cboFilter.Height, pnlFile.ClientWidth - lblFilter.Width - 10)  pnlButton.Move(ME.ClientWidth - pnlButton.Width,0)  cboLook.Move(lblLook.Width , 0, ME.ClientWidth - pnlButton.Width - lblLook.Width - 10, 24)  Splitter.Move (CoolTab.Width(),cboLook.Height + 5,ME.ClientWidth - CoolTab.Width(),ME.ClientHeight - cboLook.Height - pnlFile.Height - 16)  cvExplorer.ScrollBar = Scroll.Both  CoolTab.Move(0,Splitter.Top,, Splitter.Height)ENDPUBLIC SUB TreeExplorer_Select()  DIM sPath AS String  'Message(TreeExplorer.Current.Key)  sPath = Mid(TreeExplorer.Key,2)  IF Left(TreeExplorer.Key,1) <> CurSeq THEN    CurSeq = Left(TreeExplorer.Key,1)    IF CurSeq <> "$" THEN      Root = CoolTab.GetTabUrl(MyVal(CurSeq))    ENDIF  ENDIF  IF AccessTest(sPath) THEN      CurrentPath = sPath    Fill_Explorer(CurrentPath)    IF Validate(sPath) THEN txtFile.Text = TreeExplorer.Current.Text  ENDIFENDPUBLIC SUB Button3_Click()  PreviewImg = NOT PreviewImg  Fill_Explorer(CurrentPath)ENDPRIVATE SUB Fill_Look(sPath AS String)  cboLook.Clear  IF NOT sPath THEN RETURN  IF sPath ="/" THEN    cboLook.add(sPath)    RETURN  ENDIF  IF Right(sPath, 1) = "/" THEN sPath = Left(sPath, Len(sPath) - 1)  DO    cboLook.Add(sPath)    IF sPath = "/" THEN RETURN    IF sPath = Root THEN RETURN    sPath = File.Dir(sPath)  LOOPENDPUBLIC SUB cboLook_Click()  IF TExplorer = -1 THEN RETURN  Fill_Explorer(cboLook.Current.Text)  SelectNode(Left(TreeExplorer.Key, 1) & cboLook.Current.Text)ENDPUBLIC FUNCTION SelectNode(sNode AS String) AS Boolean  DIM arParse AS NEW String[]  DIM sVar AS String  DIM sPath AS String  DIM TreeSeq AS String  TreeSeq = Left(sNode,1)  sPath = Mid(sNode,2)  IF NOT Exist(sPath) THEN RETURN  arParse = Split(sPath, "/")  sPath = "/"  FOR EACH sVar IN arParse    sPath = sPath &/ sVar    Fill_Tree(TreeSeq & sPath)    TRY TreeExplorer[TreeSeq & File.dir(sPath)].Expanded = TRUE  NEXT  'IF NOT TreeExplorer.Exist(sNode) THEN Message(sNode)  TreeExplorer[sNode].Selected = TRUE  TreeExplorer[sNode].EnsureVisibleCATCH  RETURN TRUEENDPUBLIC SUB btnTypeList_Click()  IF TExplorer = 0 THEN    ChangeExplorer(1)  ELSE    ChangeExplorer(0)  ENDIF  RefreshExplorerENDPUBLIC FUNCTION Validate(OPTIONAL sPath AS String) AS Boolean  DIM sFile AS String  DIM sCurrentPath AS String  DIM bSel AS Boolean  'Validation  sCurrentPath = CurrentPath  IF sPath THEN    sCurrentPath = File.Dir(sPath)    txtFile.Text = ""    sFile = File.Name(sPath)    IF sPath = File.Dir(CurrentPath) THEN RETURN  ELSE    IF txtFile.Text = "" THEN      SELECT CASE DialogType        CASE SHOW_PROJECT          Message.Warning(("Please choose a project."))        CASE SHOW_DIRECTORY          Message.Warning(("Please choose a valid directory."))      END SELECT      RETURN    ENDIF    sFile = txtFile.Text  ENDIF  IF NOT sPath THEN    TRY bSel = Explorer.Current.Selected    IF NOT bSel THEN sFile = ""  ENDIF  SELECT CASE DialogType    CASE SHOW_PROJECT      'BM - Why this test ?? This is an HORRIBLE and buggy hack, shame on you Fabien !      'IF File.Name(sCurrentPath) = sFile THEN sFile = ""      IF Exist(sCurrentPath &/ sFile &/ ".project") THEN        Path = sCurrentPath &/ sFile        GOTO GOOD '$BM      ENDIF      IF NOT sPath THEN Message.Error(("Cannot find this project."))    CASE SHOW_DIRECTORY      'IF File.Name(sCurrentPath) = sFile THEN sFile = ""      IF Exist(sCurrentPath &/ sFile) THEN        IF IsDir(sCurrentPath &/sFile) THEN          IF NoProjectDir THEN            'Message (sPath)            IF Exist(sCurrentPath &/ sFile &/ ".project") OR IsProjectChild(sCurrentPath &/ sFile) THEN              RETURN FALSE            ENDIF          ENDIF          Path = sCurrentPath &/ sFile          GOTO GOOD '$BM        ENDIF      ENDIF      IF NOT sPath THEN Message.Error(("Cannot find this directory."))    CASE SHOW_FILE, SHOW_IMAGE      IF IsDir(sCurrentPath &/ sFile) THEN RETURN FALSE      IF bAllowNewFile THEN        Path = sCurrentPath &/ sFile        GOTO GOOD      ENDIF      IF Exist(sCurrentPath &/ sFile)  THEN        Path = sCurrentPath &/ sFile        GOTO GOOD      ENDIF      IF NOT sPath THEN Message.Error(("Cannot find this file."))   '$BM  END SELECT  RETURN FALSEGOOD: '$BM  IF sPath THEN RETURN TRUE  IF Key THEN    IF DialogType = SHOW_FILE OR DialogType = SHOW_IMAGE THEN    'Message (key &/ "Path")      Settings[Key &/ "Path"] = File.Dir(Path)    ELSE      Settings[Key &/ "Path"] = Path    ENDIF    Settings[Key &/ "Key"] = CStr(CoolTab.Current.Tag)  ENDIF  RETURN TRUEENDPUBLIC SUB Explorer_Click()  IF Validate(Explorer.Item.Key) THEN      txtFile.Text = Explorer.Current.Text  ENDIFCATCHENDPRIVATE SUB DefineFilters()  'Definition for Filters (Multi Filters in Some Case)  DIM arpreFilter AS String[]  DIM arSubFilter AS String[]  DIM sSubFilter AS String  DIM Index AS Integer  arpreFilter = Split(Filters, "|")  FOR Index = 0 TO arpreFilter.Count - 1    arSubFilter = NEW String[]    arSubFilter = Split(arpreFilter[Index], ",")    $arFilters.add( arSubFilter)  NEXT  FOR Index = 0 TO $arFilters.Count - 1 STEP 2    cboFilter.add($arFilters[Index][0])  NEXT  TRY cbofilter.Index = FilterIndexENDPUBLIC SUB cboFilter_Click()  RefreshExplorerENDPUBLIC SUB btnParent_Click()  IF CurrentPath <> Root THEN    CurrentPath = File.Dir(CurrentPath)    RefreshExplorer  ENDIFENDPRIVATE SUB RefreshExplorer()  $sLastPath = ""  Fill_Explorer(CurrentPath)ENDPUBLIC SUB btnRefresh_Click()  DIM TreeSeq AS String  DIM sKey AS String  DIM bExpand AS Boolean  TreeSeq = "$"  sKey = TreeExplorer.Key  TRY bExpand = TreeExplorer[sKey].Expanded  InitTree(Root,TreeSequence)  TRY TreeSeq = Left(TreeExplorer.Key)  RefreshExplorer  SelectNode(TreeSeq & CurrentPath)  TRY TreeExplorer[sKey].Expanded = bExpandENDPUBLIC SUB CoolTab_ButtonClick(Index AS Integer, Button AS Integer)  DIM arSeq AS NEW String[]  DIM Fi AS Integer  IF Button = 2 THEN    arSeq = Split(TreeSequence,",")    Fi = arSeq.Find(Str(Index))    IF Fi <> -1 THEN      IF arSeq.Count = 1 THEN RETURN      'PRINT arSeq.Count      CoolTab.Button_UnSelect(arSeq[Fi] )      arSeq.Remove(Fi)      TreeSequence = arSeq.Join(",")      btnRefresh_Click()    ELSE      IF NOT Exist (CoolTab.Current.Tooltip) THEN RETURN      TreeSequence = TreeSequence & "," & Str(Index)      'CoolTab.Button_Select(Index)      Root = Cooltab.Current.Tooltip      btnRefresh_Click()    ENDIF  ELSE    IF NOT Exist (CoolTab.Current.Tooltip) THEN RETURN    TreeSequence = Str(Index)     CurrentPath = CoolTab.Current.Tooltip     Root = Cooltab.Current.Tooltip     btnRefresh_Click()  ENDIFEND

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -