📄 fwelcome.class
字号:
' Gambas class fileSTATIC PRIVATE $sPath AS StringPRIVATE btnNew AS CCoolButtonPRIVATE btnOpen AS CCoolButtonPRIVATE btnRecent AS CCoolButtonPRIVATE btnExample AS CCoolButtonPRIVATE btnQuit AS CCoolButtonPRIVATE $iRecent AS IntegerPRIVATE $aExample AS String[]PRIVATE $bExample AS BooleanPRIVATE CONST LIST_NONE AS Integer = 0PRIVATE CONST LIST_RECENT AS Integer = 1PRIVATE CONST LIST_EXAMPLE AS Integer = 2PRIVATE CONST POS_BUTTON AS Integer = 128PRIVATE CONST HEIGHT_BUTTON AS Integer = 40STATIC PUBLIC FUNCTION Run() AS String 'DIM hForm AS Form $sPath = "" 'hForm = NEW FWelcome FWelcome.ShowModal() RETURN $sPathENDPUBLIC SUB _new() DIM iInd AS Integer DIM hPict AS Picture DIM hButton AS CCoolButton DIM W AS Integer DIM sFont AS String DIM aList AS String[] DIM sLastDir AS String DIM sDir AS String DIM Y AS Integer DIM hLabel AS Label sFont = "" W = ME.ClientW - 16 svwRecent.Background = ME.Background svwExample.Background = ME.Background 'lblList.Background = ME.Background btnNew = NEW CCoolButton(ME, 8, POS_BUTTON, W, HEIGHT_BUTTON, ("New project..."), "img/welcome/new.png", sFont) AS "btnNew" btnOpen = NEW CCoolButton(ME, 8, POS_BUTTON + HEIGHT_BUTTON, W, HEIGHT_BUTTON, ("Open project..."), "img/welcome/open.png", sFont) AS "btnOpen" btnRecent = NEW CCoolButton(ME, 8, POS_BUTTON + HEIGHT_BUTTON * 2, W, HEIGHT_BUTTON, ("Recent projects"), "img/welcome/recent.png", sFont) AS "btnRecent" btnExample = NEW CCoolButton(ME, 8, POS_BUTTON + HEIGHT_BUTTON * 3, W, HEIGHT_BUTTON, ("Examples"), "img/welcome/help.png", sFont) AS "btnExample" btnQuit = NEW CCoolButton(ME, 8, POS_BUTTON + HEIGHT_BUTTON * 4, W, HEIGHT_BUTTON, ("Quit"), "img/welcome/quit.png", sFont) AS "btnQuit" lblMessage.Width = lblMessage.Font.Width(lblMessage.Text) + 8 lblMessage.X = panMessage.Width ' Fill recent list aList = Project.Recent FOR iInd = 0 TO aList.Count - 1 hButton = NEW CCoolButton(svwRecent, 0, iInd * 32, 1024, 32, File.Name(aList[iInd]), Project.GetIcon(aList[iInd], 24)) AS "btnOpenRecent" hButton.Tag = aList[iInd] hButton.ToolTip = File.Dir(aList[iInd]) NEXT IF aList.Count = 0 THEN btnRecent.Enabled = FALSE ' Fill sample list $aExample = Project.GetExamples() IF $aExample.Count = 0 THEN btnExample.Enabled = FALSE lblVersion.Text = Subst(("version &1"), Project.Version) IF Project.Recent.Count THEN Toggle(LIST_RECENT) ELSE Toggle(LIST_EXAMPLE) ENDIFENDPUBLIC SUB cvwRecent_Click() $sPath = Project.Recent[Val(LAST.Key)] ME.CloseENDPUBLIC SUB timMessage_Timer() lblMessage.X = lblMessage.X - 1 IF lblMessage.X < (-lblMessage.Width) THEN lblMessage.X = panMessage.Width ENDIFENDPUBLIC SUB btnNew_Click() $sPath = FNewProject.Run() IF $sPath THEN ME.CloseENDPUBLIC SUB btnOpen_Click() $sPath = Project.GetProject() IF $sPath THEN ME.CloseENDPUBLIC SUB btnRecent_Click() Toggle(LIST_RECENT)ENDPUBLIC SUB btnExample_Click() Toggle(LIST_EXAMPLE)ENDPUBLIC SUB btnQuit_Click() $sPath = "" ME.Close(TRUE)ENDPRIVATE SUB Toggle(iState AS Integer) 'IF iState = $iRecent THEN ' $iRecent = LIST_NONE 'ELSE $iRecent = iState 'ENDIF 'ME.Border = Window.Resizable IF $iRecent THEN 'btnQuit.Move(8, 216 + cvwRecent.H + 8) 'cvwRecent.Move(360 - cvwRecent.W, 216) panList.Raise svwRecent.Visible = $iRecent = LIST_RECENT svwExample.Visible = $iRecent = LIST_EXAMPLE panList.Visible = TRUE IF $iRecent = LIST_RECENT THEN lblList.Text = " " & ("Recent projects") ELSE lblList.Text = " " & ("Examples") ENDIF ELSE panList.Visible = FALSE ENDIF IF $iRecent = LIST_EXAMPLE THEN FillExampleENDPUBLIC SUB btnOpenRecent_Click() $sPath = LAST.Tag ME.CloseENDPUBLIC SUB Form_KeyPress() IF Key.Code = Key["Esc"] THEN btnQuit_Click ENDIFENDPUBLIC SUB Form_Resize() DIM hCtrl AS Control DIM W AS Integer lblBackground.Width = ME.ClientW imgGambas.X = Max(224, ME.ClientW - 16 - imgGambas.Width) panMessage.Width = ME.ClientW - 48 panList.Resize(ME.ClientW - panList.X - 8, ME.ClientH - panList.Y - 8) lblList.Move(4, 4, panList.ClientW - 8, 16) svwExample.Move(4, lblList.Y + lblList.H + 4, panList.ClientW - 8, panList.ClientH - lblList.H - 12) WITH svwExample svwRecent.Move(.X, .Y, .W, .H) END WITH' W = ME.ClientW - 16' btnNew.Resize(W, HEIGHT_BUTTON)' btnOpen.Resize(W, HEIGHT_BUTTON)' btnRecent.Resize(W, HEIGHT_BUTTON)' btnExample.Resize(W, HEIGHT_BUTTON)' btnQuit.Resize(W, HEIGHT_BUTTON)ENDPRIVATE SUB FillExample() DIM sLastDir AS String DIM sDir AS String DIM Y AS Integer DIM hButton AS CCoolButton DIM hLabel AS Label DIM iInd AS Integer DIM sPath AS String IF $bExample THEN RETURN INC Application.Busy sLastDir = "" Y = 0 FOR iInd = 0 TO $aExample.Count - 1 sPath = $aExample[iInd] sDir = File.Dir(sPath) IF sDir <> sLastDir THEN sLastDir = sDir hLabel = NEW Label(svwExample) hLabel.Move(0, Y, 1024, 16) 'hLabel.Alignment = Align.BottomNormal hLabel.Text = " " & sDir hLabel.Font = Font["8"] hLabel.BackColor = &HC0E8FF Y = Y + hLabel.H ENDIF hButton = NEW CCoolButton(svwExample, 0, Y, 1024, 32, File.Name(sPath), Project.GetIcon(Project.EXAMPLES_DIR &/ sPath, 24)) AS "btnOpenRecent" Y = Y + 32 hButton.Tag = Project.EXAMPLES_DIR &/ sPath NEXT $bExample = TRUEFINALLY DEC Application.BusyENDPUBLIC SUB Form_Open() Config.LoadWindow(ME, "/FWelcome")ENDPUBLIC SUB Form_Close() Config.SaveWindow(ME, "/FWelcome")END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -