1from .Button import Button 2from .Panel import Panel 3from ..common.i18n import gettext 4from ..common.layout import HorizontalLayout, VerticalLayout 5 6 7class DialogButtons(Panel): 8 def __init__(self, parent): 9 super().__init__(parent) 10 self.layout = HorizontalLayout(padding=20) 11 self.layout.padding_top = 0 12 self.added_spacer = False 13 self.button_layout = HorizontalLayout() 14 self.layout.add_spacer(0, expand=True) 15 self.layout.add(self.button_layout, fill=True) 16 17 @classmethod 18 def create_with_layout(cls, parent): 19 parent.layout = VerticalLayout() 20 buttons = DialogButtons(parent) 21 layout = VerticalLayout(padding=20) 22 parent.layout.add(layout, expand=True, fill=True) 23 parent.layout.add(buttons, fill=True) 24 return buttons, layout 25 26 def add_spacer_if_needed(self): 27 if self.added_spacer: 28 return 29 # self.layout.add_spacer(0, expand=True) 30 self.added_spacer = True 31 32 def add_button(self, button): 33 self.add_spacer_if_needed() 34 self.button_layout.add(button, margin_left=10, fill=True) 35 return button 36 37 def create_close_button(self): 38 self.add_spacer_if_needed() 39 button = Button(self, gettext("Close")) 40 button.activated.connect(self.__close_activated) 41 self.layout.add(button, margin_left=10, fill=True) 42 return button 43 44 def __close_activated(self): 45 self.get_parent().close() 46