Open SubDialog with parameters
-
On 21/12/2016 at 04:54, xxxxxxxx wrote:
Hi, guys!
I made some experiments trying to find a way to open a subdialogs with parameters.
But when i press the first button parameter is sending only once, and then with other button, it is used again.
Is there a solution of the issue?There is my code based on NiclasR example:
import c4d PLUGIN_ID = 1000004 # Test ID class MainDialog(c4d.gui.GeDialog) : # Do not create the object on class-level, although it might # be unimportant since you do not open multiple objects of your # MainDialog, it is contradicting to have one instance of sub # dialog for all instances of the main dialog. # A property that creates the dialog on-demand is perfect for # this purpose. # data = 'Testtt' # @property def sub_dialog(self,name) : if not hasattr(self, '_sub_dialog') : self._sub_dialog = SubDialog(name) return self._sub_dialog # c4d.gui.GeDialog def CreateLayout(self) : self.SetTitle('Main Dialog') self.AddButton(1000, 0, name="Open Sub-Dialog") self.AddButton(1001, 0, name="Open Sub-Dialog 2") return True def Command(self, param, bc) : if param == 1000: self.sub_dialog('First param').Open(c4d.DLG_TYPE_MODAL, PLUGIN_ID, subid=1) if param == 1001: # self.data = self.sub_dialog('Sec param').Open(c4d.DLG_TYPE_MODAL, PLUGIN_ID, subid=1) return True def Restore(self, pluginid, secref) : # We override this method so we don't have to handle the sub- # dialog from the CommandData plugin. THIS dialog is responsible # for the sub-dialog, do not split such management throughout # your program or it gets confusing. if secref['subid'] == 1: return self.sub_dialog('').Restore(pluginid, secref) else: return super(MainDialog, self).Restore(pluginid, secref) # if secref['subid'] == 2: # return self.sub_dialog('Udin').Restore(pluginid, secref) # else: # return super(MainDialog, self).Restore(pluginid, secref) class SubDialog(c4d.gui.GeDialog) : def __init__(self,name) : self.name = name def CreateLayout(self) : self.SetTitle('Sub-Dialog') # md = MainDialog() self.AddStaticText(1000, 0, name=self.name) return True class Command(c4d.plugins.CommandData) : def Register(self) : return c4d.plugins.RegisterCommandPlugin( PLUGIN_ID, "Sub-Dialog Docking Test", 0, None, "", self) @property def dialog(self) : if not hasattr(self, '_dialog') : self._dialog = MainDialog() return self._dialog # c4d.plugins.CommandData def Execute(self, doc) : return self.dialog.Open(c4d.DLG_TYPE_ASYNC, PLUGIN_ID) def RestoreLayout(self, secref) : return self.dialog.Restore(PLUGIN_ID, secref) if __name__ == '__main__': Command().Register()
G
M
T< id="SL_locer" ="" title="Зафиксировать язык"> < id="SL_lng_from">< value="auto">Определить язык< value="az">Азербайджанский< value="sq">Албанский< value="en">Английский< value="ar">Арабский< value="hy">Армянский< value="af">Африкаанс< value="eu">Баскский< value="be">Белорусский< value="bn">Бенгальский< value="my">Бирманский< value="bg">Болгарский< value="bs">Боснийский< value="cy">Валлийский< value="hu">Венгерский< value="vi">Вьетнамский< value="gl">Галисийский< value="el">Греческий< value="ka">Грузинский< value="gu">Гуджарати< value="da">Датский< value="zu">Зулу< value="iw">Иврит< value="ig">Игбо< value="yi">Идиш< value="id">Индонезийский< value="ga">Ирландский< value="is">Исландский< value="es">Испанский< value="it">Итальянский< value="yo">Йоруба< value="kk">Казахский< value="kn">Каннада< value="ca">Каталанский< value="zh-CN">Китайский (Трад)< value="zh-TW">Китайский (Упр)< value="ko">Корейский< value="ht">Креольский (Гаити)< value="km">Кхмерский< value="lo">Лаосский< value="la">Латинский< value="lv">Латышский< value="lt">Литовский< value="mk">Македонский< value="mg">Малагасийский< value="ms">Малайский< value="ml">Малайялам< value="mt">Мальтийский< value="mi">Маори< value="mr">Маратхи< value="mn">Монгольский< value="de">Немецкий< value="ne">Непали< value="nl">Нидерландский< value="no">Норвежский< value="pa">Панджаби< value="fa">Персидский< value="pl">Польский< value="pt">Португальский< value="ro">Румынский< value="ru">Русский< value="ceb">Себуанский< value="sr">Сербский< value="st">Сесото< value="si">Сингальский< value="sk">Словацкий< value="sl">Словенский< value="so">Сомали< value="sw">Суахили< value="su">Суданский< value="tl">Тагальский< value="tg">Таджикский< value="th">Тайский< value="ta">Тамильский< value="te">Телугу< value="tr">Турецкий< value="uz">Узбекский< value="uk">Украинский< value="ur">Урду< value="fi">Финский< value="fr">Французский< value="ha">Хауса< value="hi">Хинди< value="hmn">Хмонг< value="hr">Хорватский< value="ny">Чева< value="cs">Чешский< value="sv">Шведский< value="eo">Эсперанто< value="et">Эстонский< value="jw">Яванский< value="ja">Японский < id="SL_lng_to">< value="az">Азербайджанский< value="sq">Албанский< value="en">Английский< value="ar">Арабский< value="hy">Армянский< value="af">Африкаанс< value="eu">Баскский< value="be">Белорусский< value="bn">Бенгальский< value="my">Бирманский< value="bg">Болгарский< value="bs">Боснийский< value="cy">Валлийский< value="hu">Венгерский< value="vi">Вьетнамский< value="gl">Галисийский< value="el">Греческий< value="ka">Грузинский< value="gu">Гуджарати< value="da">Датский< value="zu">Зулу< value="iw">Иврит< value="ig">Игбо< value="yi">Идиш< value="id">Индонезийский< value="ga">Ирландский< value="is">Исландский< ed="ed" value="es">Испанский< value="it">Итальянский< value="yo">Йоруба< value="kk">Казахский< value="kn">Каннада< value="ca">Каталанский< value="zh-CN">Китайский (Трад)< value="zh-TW">Китайский (Упр)< value="ko">Корейский< value="ht">Креольский (Гаити)< value="km">Кхмерский< value="lo">Лаосский< value="la">Латинский< value="lv">Латышский< value="lt">Литовский< value="mk">Македонский< value="mg">Малагасийский< value="ms">Малайский< value="ml">Малайялам< value="mt">Мальтийский< value="mi">Маори< value="mr">Маратхи< value="mn">Монгольский< value="de">Немецкий< value="ne">Непали< value="nl">Нидерландский< value="no">Норвежский< value="pa">Панджаби< value="fa">Персидский< value="pl">Польский< value="pt">Португальский< value="ro">Румынский< value="ru">Русский< value="ceb">Себуанский< value="sr">Сербский< value="st">Сесото< value="si">Сингальский< value="sk">Словацкий< value="sl">Словенский< value="so">Сомали< value="sw">Суахили< value="su">Суданский< value="tl">Тагальский< value="tg">Таджикский< value="th">Тайский< value="ta">Тамильский< value="te">Телугу< value="tr">Турецкий< value="uz">Узбекский< value="uk">Украинский< value="ur">Урду< value="fi">Финский< value="fr">Французский< value="ha">Хауса< value="hi">Хинди< value="hmn">Хмонг< value="hr">Хорватский< value="ny">Чева< value="cs">Чешский< value="sv">Шведский< value="eo">Эсперанто< value="et">Эстонский< value="jw">Яванский< value="ja">Японский |
--- --- --- --- --- --- --- --- --- --- --- Звуковая функция ограничена 100 символами
Настройки : История : Справка : Обратная связь Закрыть -
On 21/12/2016 at 08:48, xxxxxxxx wrote:
Give this one a try Mike.
It's a little bit more organized than your code. So hopefully it's easier to follow what's going on in it#This is an example of a GeDialog plugin that opens another dialog using properties #It also allows both dialogs to be docked and saved in a custom layout import c4d PLUGIN_ID = 1000004 # Test ID class MainDialog(c4d.gui.GeDialog) : #Create 2 properties for each sub dialog #A property can create the sub dialogs on-demand as if they were class objects @property def sub_dialog1(self) : if not hasattr(self, '_sub_dialog1') : self._sub_dialog1 = SubDialog1() return self._sub_dialog1 @property def sub_dialog2(self) : if not hasattr(self, '_sub_dialog2') : self._sub_dialog2 = SubDialog2() return self._sub_dialog2 ############### GeDialog section ################### def CreateLayout(self) : self.SetTitle('Main Dialog') self.AddButton(1000, 0, name="Open Sub-Dialog 1") self.AddButton(1001, 0, name="Open Sub-Dialog 2") return True def Command(self, param, bc) : if param == 1000: self.sub_dialog1.Open(c4d.DLG_TYPE_ASYNC, PLUGIN_ID, subid=1) if param == 1001: self.sub_dialog2.Open(c4d.DLG_TYPE_ASYNC, PLUGIN_ID, subid=2) return True def Restore(self, pluginid, secref) : #Set the pointers to the specific sub dialog here rather than in the CommandData section of this plugin if secref['subid'] == 1: return self.sub_dialog1.Restore(pluginid, secref) if secref['subid'] == 2: return self.sub_dialog2.Restore(pluginid, secref) else: return super(MainDialog, self).Restore(pluginid, secref) ############### Sub Dialogs section ###################### class SubDialog1(c4d.gui.GeDialog) : def CreateLayout(self) : self.SetTitle('Sub-Dialog') self.AddStaticText(1000, 0, name="This is sub-dialog #1") return True class SubDialog2(c4d.gui.GeDialog) : def CreateLayout(self) : self.SetTitle('Sub-Dialog2') self.AddStaticText(1001, 0, name="This is sub-dialog #2") return True ################# CommandData section ####################### class Command(c4d.plugins.CommandData) : def Register(self) : return c4d.plugins.RegisterCommandPlugin(PLUGIN_ID, "Sub-Dialog Docking Test", 0, None, "", self) @property def dialog(self) : if not hasattr(self, '_dialog') : self._dialog = MainDialog() return self._dialog def Execute(self, doc) : return self.dialog.Open(c4d.DLG_TYPE_ASYNC, PLUGIN_ID) def RestoreLayout(self, secref) : return self.dialog.Restore(PLUGIN_ID, secref) if __name__ == '__main__': Command().Register()
-ScottA
-
On 21/12/2016 at 10:26, xxxxxxxx wrote:
Thanks for the reply, Scott!
The fact is that I do not know how many subdialogs user may need.
Buttons will be added by the loop.
G
M
T< id="SL_locer" ="" title="Зафиксировать язык"> < id="SL_lng_from">< value="auto">Определить язык< value="az">Азербайджанский< value="sq">Албанский< value="en">Английский< value="ar">Арабский< value="hy">Армянский< value="af">Африкаанс< value="eu">Баскский< value="be">Белорусский< value="bn">Бенгальский< value="my">Бирманский< value="bg">Болгарский< value="bs">Боснийский< value="cy">Валлийский< value="hu">Венгерский< value="vi">Вьетнамский< value="gl">Галисийский< value="el">Греческий< value="ka">Грузинский< value="gu">Гуджарати< value="da">Датский< value="zu">Зулу< value="iw">Иврит< value="ig">Игбо< value="yi">Идиш< value="id">Индонезийский< value="ga">Ирландский< value="is">Исландский< value="es">Испанский< value="it">Итальянский< value="yo">Йоруба< value="kk">Казахский< value="kn">Каннада< value="ca">Каталанский< value="zh-CN">Китайский (Трад)< value="zh-TW">Китайский (Упр)< value="ko">Корейский< value="ht">Креольский (Гаити)< value="km">Кхмерский< value="lo">Лаосский< value="la">Латинский< value="lv">Латышский< value="lt">Литовский< value="mk">Македонский< value="mg">Малагасийский< value="ms">Малайский< value="ml">Малайялам< value="mt">Мальтийский< value="mi">Маори< value="mr">Маратхи< value="mn">Монгольский< value="de">Немецкий< value="ne">Непали< value="nl">Нидерландский< value="no">Норвежский< value="pa">Панджаби< value="fa">Персидский< value="pl">Польский< value="pt">Португальский< value="ro">Румынский< value="ru">Русский< value="ceb">Себуанский< value="sr">Сербский< value="st">Сесото< value="si">Сингальский< value="sk">Словацкий< value="sl">Словенский< value="so">Сомали< value="sw">Суахили< value="su">Суданский< value="tl">Тагальский< value="tg">Таджикский< value="th">Тайский< value="ta">Тамильский< value="te">Телугу< value="tr">Турецкий< value="uz">Узбекский< value="uk">Украинский< value="ur">Урду< value="fi">Финский< value="fr">Французский< value="ha">Хауса< value="hi">Хинди< value="hmn">Хмонг< value="hr">Хорватский< value="ny">Чева< value="cs">Чешский< value="sv">Шведский< value="eo">Эсперанто< value="et">Эстонский< value="jw">Яванский< value="ja">Японский < id="SL_lng_to">< value="az">Азербайджанский< value="sq">Албанский< value="en">Английский< value="ar">Арабский< value="hy">Армянский< value="af">Африкаанс< value="eu">Баскский< value="be">Белорусский< value="bn">Бенгальский< value="my">Бирманский< value="bg">Болгарский< value="bs">Боснийский< value="cy">Валлийский< value="hu">Венгерский< value="vi">Вьетнамский< value="gl">Галисийский< value="el">Греческий< value="ka">Грузинский< value="gu">Гуджарати< value="da">Датский< value="zu">Зулу< value="iw">Иврит< value="ig">Игбо< value="yi">Идиш< value="id">Индонезийский< value="ga">Ирландский< value="is">Исландский< value="es">Испанский< value="it">Итальянский< value="yo">Йоруба< value="kk">Казахский< value="kn">Каннада< value="ca">Каталанский< value="zh-CN">Китайский (Трад)< value="zh-TW">Китайский (Упр)< value="ko">Корейский< value="ht">Креольский (Гаити)< value="km">Кхмерский< value="lo">Лаосский< value="la">Латинский< value="lv">Латышский< value="lt">Литовский< value="mk">Македонский< value="mg">Малагасийский< value="ms">Малайский< value="ml">Малайялам< value="mt">Мальтийский< value="mi">Маори< value="mr">Маратхи< value="mn">Монгольский< value="de">Немецкий< value="ne">Непали< value="nl">Нидерландский< value="no">Норвежский< value="pa">Панджаби< value="fa">Персидский< value="pl">Польский< value="pt">Португальский< value="ro">Румынский< ed="ed" value="ru">Русский< value="ceb">Себуанский< value="sr">Сербский< value="st">Сесото< value="si">Сингальский< value="sk">Словацкий< value="sl">Словенский< value="so">Сомали< value="sw">Суахили< value="su">Суданский< value="tl">Тагальский< value="tg">Таджикский< value="th">Тайский< value="ta">Тамильский< value="te">Телугу< value="tr">Турецкий< value="uz">Узбекский< value="uk">Украинский< value="ur">Урду< value="fi">Финский< value="fr">Французский< value="ha">Хауса< value="hi">Хинди< value="hmn">Хмонг< value="hr">Хорватский< value="ny">Чева< value="cs">Чешский< value="sv">Шведский< value="eo">Эсперанто< value="et">Эстонский< value="jw">Яванский< value="ja">Японский |
--- --- --- --- --- --- --- --- --- --- --- Звуковая функция ограничена 100 символами
Настройки : История : Справка : Обратная связь Закрыть And I need to get a dialogs with different details.