Что делать, если нужно в зависимости от каких-то условий запрещать выполнение некоторых пунктов меню Действия?
Кстати, что такое GUI-логика :)?
В разделе INIT:
def makeUpActions(mem=mem): #стандартные действия sc.refreshToolBar(mem) if mem.prevMem.t.r.status>='3': mem.disableGridAction(u"Удалить", 1) mem.disableGridAction(u"Правка", 1) else: mem.disableGridAction(u"Удалить", not mem.t.rowCount()>0) mem.disableGridAction(u"Правка", not mem.t.rowCount()>0) #Заменяем стандарный метод mem.refreshToolBar=makeUpActions
Можно и так
в разделе кода Init пишем:
def makeUpActions(mem): def realDo(): if mem.prevMem.t.r.draft!="*": mem.disableGridAction(u"Правка", 1) mem.disableGridAction(u"Новая", 1) mem.disableGridAction(u"Копия", 1) mem.disableGridAction(u"Удалить", 1) mem.disableGridAction(u"Строку вниз", 1) mem.disableGridAction(u"Строку вверх", 1) mem.disableGridAction(u"Сдвинуть вниз", 1) return realDo mem.zzGridWidget.connect(mem.zzGridWidget, SIGNAL("gridRowChanged(grid)"),makeUpActions(mem)) mem.heap.makeUpActions=makeUpActions(mem) mem.heap.makeUpActions()
«Включение» отображения подчиненной таблицы
if "mem" in locals() and "scname" in dir(mem):#убедимся, что мы в нужном месте if mem.scname=="spr_tmc": for x in xrange(len(mem.scActions)): if u'Цены' in mem.scActions[x]['text']: mem.scActions[x]['dtl_noshow']=""