' Gambas class file
PRIVATE hUpdateInfo AS File ' handler to read update-watch-info file
PUBLIC SUB Form_Open()
DIM sSummary AS String
DIM sLine AS String
' position window
ME.Center()
' adjust button size according to it's font size
btnHelp.Width = btnHelp.Font.Width(btnHelp.Text) + 20
btnUpgrade.Width = btnUpgrade.Font.Width(btnUpgrade.Text) + 36
btnClose.Width = btnClose.Font.Width(btnClose.Text) + 20
hbxBottom.Height = btnClose.Font.Height(btnClose.Text) + 12
hbxTop.Height = tlbTitle.Font.Height(tlbTitle.Text) + 4
IF Stat(FMain.sPathInfo).Size > 0 THEN
' read update-watch-info file to create list of updates
hUpdateInfo = OPEN FMain.sPathInfo FOR READ
WHILE NOT Eof(hUpdateInfo)
LINE INPUT #hUpdateInfo, sLine
SELECT CASE Split(sLine, ":")[0]
CASE "new"
SHELL "apt-cache show " & Split(sLine, ":")[1] & " | grep Summary:" TO sSummary
' remove unnecessary text & \n from string
sSummary = Split(sSummary, ":")[1]
sSummary = Split(sSummary, "\n")[0]
AddTreeviewItem(("New"), Split(sLine, ":")[1], TryDConv$(sSummary))
CASE "upgrade"
EXEC ["rpm", "-q", "--queryformat", "%{SUMMARY}", Split(sLine, ":")[1]] TO sSummary
AddTreeviewItem(("Upgrade"), Split(sLine, ":")[1], TryDConv$(sSummary))
CASE "remove"
EXEC ["rpm", "-q", "--queryformat", "%{SUMMARY}", Split(sLine, ":")[1]] TO sSummary
AddTreeviewItem(("Remove"), Split(sLine, ":")[1], TryDConv$(sSummary))
CASE "hold"
EXEC ["rpm", "-q", "--queryformat", "%{SUMMARY}", Split(sLine, ":")[1]] TO sSummary
AddTreeviewItem(("Hold"), Split(sLine, ":")[1], TryDConv$(sSummary))
CASE "duplicate"
EXEC ["rpm", "-q", "--queryformat", "%{SUMMARY}", Split(Split(sLine, ":")[1], "#")[0]] TO sSummary
AddTreeviewItem(("Duplicate"), Split(sLine, ":")[1], TryDConv$(sSummary))
END SELECT
WEND
' scroll up treeview
tvwPackage.MoveFirst
tvwPackage.Item.EnsureVisible
' workaround to set focus on close button
btnClose.SetFocus
ELSE
' If there is no updates, then hide treeview and change icon & text
pbxIcon.Picture = Picture["update-watch.png"]
tlbTitle.Text = ("No updates found
\n
\nYour system seems now up-to-date.
\n")
hbxTop.Height = tlbTitle.Font.Height(tlbTitle.Text) + 4
tvwPackage.Visible = FALSE
FList.Height = FList.Height - (tvwPackage.Height + FList.Spacing)
btnUpgrade.Enabled = FALSE
ENDIF
END
PUBLIC SUB btnClose_Click()
ME.Close()
END
PUBLIC SUB btnHelp_Click()
FMain.hMenuHelp_Click()
END
PUBLIC SUB AddTreeviewItem(sStatus AS String, sName AS String, sSummary AS String)
' add parent node in treeview
IF tvwPackage.Exist(sStatus) = FALSE THEN tvwPackage.Add(sStatus, sStatus)
' add each package
tvwPackage.Add(sName, sName & " - " & sSummary, "", sStatus)
tvwPackage.Item.EnsureVisible
END
PRIVATE FUNCTION TryDConv$(sOrig AS String) AS String
' If charset is not UTF-8, then convert it to UTF-8
TRY Conv$(sOrig, "EUC-JP", "UTF-8")
IF ERROR THEN
RETURN sOrig
ELSE
RETURN Conv$(sOrig, "EUC-JP", "UTF-8")
ENDIF
END
PUBLIC SUB btnUpgrade_Click()
FMain.hMenuApply_Click()
ME.Close
END