Что делать, если нужно в зависимости от каких-то условий запрещать выполнение некоторых пунктов меню Действия?
Кстати, что такое 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']=""