I am writing an application which is used to read and write registers of a device connected through telnet. The device may have several sub-components (FPGAs, PLLs, IOExpanders, etc), each of which contains a register map. Some devices have only a few registers, whereas others have 50+. Each register has a dropdown with buttons to read and write individually defined bit fields, which as you can tell, starts to increase the number of UI elements quite significantly. The panel contains a 9-column grid for placing the elements, which includes (in order from left to right):
static textctrl
vertical line
static textctrl
vertical line
static textctrl
textctrl
read button
write button
empty space / dropdown button
With three devices containing over 50 registers each, the total count of elements is 9954 (!). Hypothetically, if I was able to compress this to 1 element per bit field, there would still be over 1100 elements, and as the number of supported devices increases, I will soon hit the limit once again. I realize the vertical lines could be removed, their purpose is for legibility, but there are other ways to make it readable. Anyways, I can run the program fine with only 2 of the device pages, but adding the third pushes the number of elements over what I assume to be the limit (Somewhere around 8000 is my guess). When I break this limit, I get errors such as the following:
logTitle.SetFont (wx.Font(pointSize = 12, family = wx.FONTFAMILY_DEFAULT, style = wx.FONTSTYLE_NORMAL, weight = wx.FONTWEIGHT_NORMAL))
File “C:\Python27\lib\site-packages\wx-3.0-msw\wx_core.py”, line 10987, in SetFont
return core.Window_SetFont(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion “((HWND)GetHWND())” failed at …\src\msw\window.cpp(1156) in wxWindow::GetLayoutDirection(): invalid window
The call to SetFont works fine if I comment out a few registers, and the object that is having the font set is not even related to the register pages.
Performance is of no concern, and it is likely that with all the devices, the element count may reach 20-30 thousand. I am open to suggestions on simplifying the interface, but I would much rather increase the limit of elements if possible. Hopefully I have provided enough info. I have attached an image of the layout.