2024-10-02 22:15:59 +04:00

82 lines
2.2 KiB
Python

# (sort-of) Registry editor
import commctrl
import dialog
import win32con
import win32ui
class RegistryControl:
def __init__(self, key):
self.key = key
class RegEditPropertyPage(dialog.PropertyPage):
IDC_LISTVIEW = 1000
def GetTemplate(self):
"Return the template used to create this dialog"
w = 152 # Dialog width
h = 122 # Dialog height
SS_STD = win32con.WS_CHILD | win32con.WS_VISIBLE
FRAMEDLG_STD = win32con.WS_CAPTION | win32con.WS_SYSMENU
style = (
FRAMEDLG_STD
| win32con.WS_VISIBLE
| win32con.DS_SETFONT
| win32con.WS_MINIMIZEBOX
)
template = [
[self.caption, (0, 0, w, h), style, None, (8, "Helv")],
]
lvStyle = (
SS_STD
| commctrl.LVS_EDITLABELS
| commctrl.LVS_REPORT
| commctrl.LVS_AUTOARRANGE
| commctrl.LVS_ALIGNLEFT
| win32con.WS_BORDER
| win32con.WS_TABSTOP
)
template.append(
["SysListView32", "", self.IDC_LISTVIEW, (10, 10, 185, 100), lvStyle]
)
return template
class RegistryPage(RegEditPropertyPage):
def __init__(self):
self.caption = "Path"
RegEditPropertyPage.__init__(self, self.GetTemplate())
def OnInitDialog(self):
self.listview = self.GetDlgItem(self.IDC_LISTVIEW)
RegEditPropertyPage.OnInitDialog(self)
# Setup the listview columns
itemDetails = (commctrl.LVCFMT_LEFT, 100, "App", 0)
self.listview.InsertColumn(0, itemDetails)
itemDetails = (commctrl.LVCFMT_LEFT, 1024, "Paths", 0)
self.listview.InsertColumn(1, itemDetails)
index = self.listview.InsertItem(0, "App")
self.listview.SetItemText(index, 1, "Path")
class RegistrySheet(dialog.PropertySheet):
def __init__(self, title):
dialog.PropertySheet.__init__(self, title)
self.HookMessage(self.OnActivate, win32con.WM_ACTIVATE)
def OnActivate(self, msg):
print("OnAcivate")
def t():
ps = RegistrySheet("Registry Settings")
ps.AddPage(RegistryPage())
ps.DoModal()
if __name__ == "__main__":
t()