' 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