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

📄 fpropertyproject.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
字号:
' Gambas class fileSTATIC PRIVATE $bShowUsed AS BooleanSTATIC PRIVATE $bShowBeta AS BooleanPRIVATE $cCheckBox AS NEW CollectionPRIVATE $bCheck AS BooleanPRIVATE $hCheck AS PicturePRIVATE $hUncheck AS PicturePRIVATE $sLibName AS String'PRIVATE $hProcess AS ProcessPRIVATE $sTemp AS StringPRIVATE $sIcon AS StringPRIVATE $bCanInitLibrary AS Boolean'PRIVATE $bLibModify AS BooleanSTATIC PUBLIC FUNCTION Run() AS Boolean  RETURN FPropertyProject.ShowModal()END' PRIVATE SUB AddOption(sId AS String, sName AS String)''   DIM hPict AS Picture''   hPict = Picture["img/32/gambas.png"]'   TRY hPict = Picture["img/32" &/ sId & ".png"]''   lvwProject.Add(sId, " " & sName, hPict)'' ENDPUBLIC SUB _new()  DIM sClass AS String  DIM sLib AS String  DIM sLang AS String  ME.Title = ("Project properties") & " - " & Project.Name  'txtInfo.Background = txtInfo.Parent.Background  'txtInfo.Text = ("Please wait...")  'StartInfo  lblName.Text = UCase(Left$(Project.Name)) & Mid$(Project.Name, 2)  lblPath.Text = File.Dir(Project.Dir)  WITH Project    txtTitle.Text = .Title    txtDesc.Text = .Description    lstArgument.List = .Arguments    chkDebug.Value = .KeepDebugInfo    chkCtrlPublic.Value = .ControlPublic    txtMajor.Text = CStr(.MajorVersion)    txtMinor.Text = CStr(.MinorVersion)    txtRelease.Text = CStr(.ReleaseVersion)    chkSnap.Value = .SnapToGrid    chkShowGrid.Value = .ShowGrid    txtGrid.Value = .Snap    'txtGridY.Text = CStr(.SnapY)    chkLocalize.Value = .Localize    $sIcon = .Icon    IF $sIcon AND Exist(Project.Dir &/ $sIcon) THEN      btnIcon.Picture = Picture[Project.Dir &/ $sIcon].Image.Stretch(48, 48).Picture    ENDIF    btnIcon.ToolTip = .Icon    txtTabSize.Value = .TabSize  END WITH  UpdateArgument  $hCheck = Picture["img/16/checked.png"]  $hUncheck = Picture["img/16/unchecked.png"]  WITH clvLibrary    .Columns.Count = 3    .Columns[0].Width = 24    .Columns[1].Text = ("Component")    .Columns[1].Width = 136    .Columns[2].Text = ("Description")  END WITH  'IF $bShowUsed THEN  chkShowUsed.Value = $bShowUsed  chkShowBeta.Value = $bShowBeta  $bCanInitLibrary = TRUE  InitLibrary  clvLibrary["gb"].Selected = TRUE  IF Exist(File.Dir(Project.Path) &/ ".lang") THEN    cvwTranslation.Columns.Count = 1    FOR EACH sLang IN Dir(File.Dir(Project.Path) &/ ".lang", "*.po")      cvwTranslation.Add(File.BaseName(sLang), Language.ToName(File.BaseName(sLang)))    NEXT  ENDIF  btnApply.Enabled = NOT Project.ReadOnly  btnOK.Enabled = NOT Project.ReadOnlyENDPUBLIC SUB btnCancel_Click()  ME.Close(TRUE)ENDPRIVATE FUNCTION TestVersion(hCtrl AS TextBox) AS Boolean  DIM vVal AS Variant  vVal = Val(hCtrl.Text)  IF IsInteger(vVal) THEN    IF vVal >= 0 AND vVal <= 9999 THEN      RETURN    ENDIF  ENDIF  Message.Warning(("Bad version number"))  hCtrl.SetFocus  RETURN TRUEENDPRIVATE FUNCTION DoApply() AS Boolean  DIM bCheck AS Boolean  DIM vVal AS Variant  DIM bRefreshForm AS Boolean  DIM bRefreshEditor AS Boolean  DIM hFile AS Object  IF TestVersion(txtMajor) THEN RETURN  IF TestVersion(txtMinor) THEN RETURN  IF TestVersion(txtRelease) THEN RETURN'   IF chkSnap.Value THEN''     vVal = Val(txtGrid.Text)'     IF NOT IsInteger(vVal) THEN vVal = 0'     IF vVal < 2 OR vVal > 64 THEN'       txtGrid.SetFocus'       GOTO BAD_GRID'     ENDIF''   ENDIF  WITH Project    .Title = Trim(txtTitle.Text)    .Description = Trim(txtDesc.Text)    .Icon = $sIcon    .Arguments = lstArgument.List    .KeepDebugInfo = chkDebug.Value    IF .ControlPublic <> chkCtrlPublic.Value THEN      Project.ResetScan      Project.DeleteCompiledFiles    ENDIF    .ControlPublic = chkCtrlPublic.Value    .MajorVersion = Val(txtMajor.Text)    .MinorVersion = Val(txtMinor.Text)    .ReleaseVersion = Val(txtRelease.Text)    .SnapToGrid = chkSnap.Value    IF chkShowGrid.Value <> .ShowGrid OR .Snap <> txtGrid.Value THEN      bRefreshForm = TRUE    ENDIF    .ShowGrid = chkShowGrid.Value    .Snap = txtGrid.Value    .Localize = chkLocalize.Value    IF .TabSize <> txtTabSize.Value THEN      bRefreshEditor = TRUE    ENDIF    .TabSize = txtTabSize.Value  END WITH  SaveLibrary  Project.WriteProject  IF bRefreshForm THEN Project.RefreshForm  IF bRefreshEditor THEN Project.RefreshEditor  RETURNBAD_GRID:  Message.Error(("Snapping value is incorrect."))  RETURN TRUEENDPUBLIC SUB btnOK_Click()  IF DoApply() THEN RETURN  ME.closeENDPRIVATE SUB SaveLibrary()  DIM sLib AS String  DIM bCheck AS Boolean  DIM hComp AS CComponent  Project.Libraries.Clear  FOR EACH hComp IN CComponent.All    sLib = CComponent.All.Key    bCheck = FALSE    TRY bCheck = (clvLibrary[sLib].Picture = $hCheck)    IF bCheck THEN      IF sLib <> "gb" THEN Project.Libraries.Add(sLib)    ENDIF  NEXT  Project.Libraries.Sort  Project.RefreshLibraryEND' PRIVATE FUNCTION CountChr(sStr AS String, sChr AS String) AS Integer''   DIM iPos AS Integer'   DIM iCpt AS Integer''   DO''     iPos = Instr(sStr, sChr, iPos + 1)'     IF iPos = 0 THEN RETURN iCpt''     iCpt = iCpt + 1''   LOOP'' ENDPRIVATE SUB InitLibrary()  DIM sLib AS String  DIM hComp AS CComponent  DIM aRemove AS NEW String[]  IF NOT $bCanInitLibrary THEN RETURN  clvLibrary.Clear  FOR EACH hComp IN CComponent.All    sLib = CComponent.All.Key    'IF NOT $bShowBeta THEN    '  IF hComp.Alpha THEN CONTINUE    'ENDIF    clvLibrary.Add(sLib, "", $hUncheck)    clvLibrary[sLib][1] = sLib    clvLibrary[sLib][2] = hComp.Name  NEXT  FOR EACH sLib IN Project.Libraries    TRY clvLibrary[sLib].Picture = $hCheck  NEXT  clvLibrary["gb"].Picture = $hCheck  IF $bShowUsed THEN    WITH clvLibrary      .MoveFirst      WHILE .Available        sLib = .Item.Key        IF clvLibrary[sLib].Picture = $hUncheck THEN          aRemove.Add(sLib)        ENDIF        .MoveNext      WEND    END WITH  ENDIF  FOR EACH sLib IN aRemove    clvLibrary.Remove(sLib)  NEXT  'svwLibrary.ClientHeight = Max(svwLibrary.Height - 4, iY)  'clvLibrary.Resizable = FALSE  clvLibrary.Columns.Sort = 1  $bCheck = TRUEENDPRIVATE SUB CheckComponent(sKey AS String, bCheck AS Boolean)  DIM hComp AS CComponent  DIM sComp AS String  WITH clvLibrary    .MoveTo(sKey)    IF NOT .Available THEN RETURN    IF bCheck THEN      .Item.Picture = $hCheck      FOR EACH sComp IN CComponent.All[sKey].Exclude        CheckComponent(sComp, FALSE)      NEXT      FOR EACH sComp IN CComponent.All[sKey].Require        CheckComponent(sComp, TRUE)      NEXT    ELSE      .Item.Picture = $hUncheck      FOR EACH hComp IN CComponent.All        IF hComp.Require.Find(sKey) < 0 THEN CONTINUE        CheckComponent(hComp.Key, FALSE)      NEXT    ENDIF  END WITHENDPUBLIC SUB clvLibrary_ColumnClick(Column AS Integer)  IF Column THEN RETURN  WITH clvLibrary    IF .Item.Key = "gb" THEN RETURN    IF .Item.Picture = $hCheck THEN      'IF CControl.IsRefLibrary(.Item.Key) THEN      '  Message.Warning(("This component is in use."))      '  RETURN      'ENDIF      CheckComponent(.Item.Key, FALSE)    ELSE      CheckComponent(.Item.Key, TRUE)    ENDIF  END WITH  '$bLibModify = TRUEENDPUBLIC SUB chkShowUsed_Click()  $bShowUsed = chkShowUsed.Value  InitLibraryENDPUBLIC SUB clvLibrary_Activate()  clvLibrary_ColumnClick(0)ENDPUBLIC SUB chkSnap_Click()  txtGrid.Enabled = chkSnap.ValueENDPUBLIC SUB btnApply_Click()  DoApplyENDPRIVATE SUB FillLibrary(sLib AS String)  DIM sText AS String  WITH CComponent.All[sLib]    sText = "<h2>" & sLib & "</h2>" & .Name & "<p>"    IF .Alpha THEN      sText = sText & "<table bgcolor=#43C7FF cellspacing=0 cellpadding=2><tr><td><img src=\"img/32/warning.png\"></td><td>"  & ("WARNING! This component is in BETA version.") & " " &        ("It is under development and may change without notice.") & "</td></tr></table><br>"    ELSE      'sText = sText & "<p>"    ENDIF    sText = sText & "<b>" & ("Authors:") & "</b> " & .Authors.Join(", ")    IF .Controls THEN      IF .Controls.Count THEN        sText = sText & "<p><b>" & ("Controls:") & "</b> " & .Controls.Join(", ")      ENDIF    ENDIF    txtComponent.Text = sText  END WITHENDPUBLIC SUB clvLibrary_Select()  FillLibrary(clvLibrary.Key)  'lblLibrary.Visible = TRUE  'clvLibrary.Height = 200  'clvLibrary.Current.EnsureVisibleENDPUBLIC SUB chkLocalize_Click()  cvwTranslation.Enabled = chkLocalize.ValueENDPUBLIC SUB btnIcon_Click()  DIM sIcon AS String  sIcon = FGetIcon.Run($sIcon)  IF NOT sIcon THEN RETURN  $sIcon = sIcon  TRY btnIcon.Picture = Picture[Project.Dir &/ $sIcon].Image.Stretch(48, 48).PictureENDPUBLIC SUB btnAddArg_Click()  DIM sArg AS String  IF lstArgument.Index >= 0 THEN    IF NOT txtArgument.Text THEN RETURN  ENDIF  'IF lstArgument.Index < 0 THEN    lstArgument.Add("")    lstArgument.Index = lstArgument.Count - 1  'ELSE  '  lstArgument.Add("", lstArgument.Index)  '  lstArgument.Index = lstArgument.Index - 1  'ENDIF  UpdateArgumentENDPUBLIC SUB btnRemoveArg_Click()  IF lstArgument.Index >= 0 THEN    txtArgument.Text = ""    lstArgument.Remove(lstArgument.Index)  ENDIF  UpdateArgumentENDPUBLIC SUB txtArgument_Change()  IF lstArgument.Index < 0 THEN RETURN  lstArgument[lstArgument.Index].Text = txtArgument.TextENDPUBLIC SUB lstArgument_Select()  IF lstArgument.Index >= 0 THEN    Object.Lock(txtArgument)    txtArgument.Text = lstArgument[lstArgument.Index].Text    Object.Unlock(txtArgument)  ENDIF  UpdateArgument  IF txtArgument.Enabled THEN    txtArgument.Select    txtArgument.SetFocus  ENDIFENDPRIVATE SUB UpdateArgument()  txtArgument.Enabled = lstArgument.Index >= 0ENDPUBLIC SUB btnUpArg_Click()  DIM iInd AS Integer  DIM sItem AS String  Object.Lock(lstArgument)  WITH lstArgument    iInd = .Index    IF iInd > 0 THEN      sItem = lstArgument[iInd].Text      .Add(sItem, iInd - 1)      .Remove(iInd + 1)      .Index = iInd - 1    ENDIF  END WITH  Object.Unlock(lstArgument)ENDPUBLIC SUB btnDownArg_Click()  DIM iInd AS Integer  DIM sItem AS String  Object.Lock(lstArgument)  WITH lstArgument    iInd = .Index    IF iInd >=0 AND iInd < (.Count - 1) THEN      sItem = lstArgument[iInd].Text      .Remove(iInd)      .Add(sItem, iInd + 1)      .Index = iInd + 1    ENDIF  END WITH  Object.Unlock(lstArgument)ENDPUBLIC SUB btnDeleteAllArg_Click()  lstArgument.Clear  txtArgument.Text = ""  UpdateArgumentENDPUBLIC SUB txtArgument_LostFocus()  IF NOT txtArgument.Text THEN btnRemoveArg_ClickENDPUBLIC SUB chkShowBeta_Click()  $bShowBeta = chkShowBeta.Value  InitLibraryEND

⌨️ 快捷键说明

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