NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

radioButtonMessageBox.py (3409B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\radioButtonMessageBox.py
      2 import uthread
      3 import localization
      4 from carbonui import uiconst
      5 from carbonui.control.scrollContainer import ScrollContainer
      6 from carbonui.primitives.container import Container
      7 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      8 from carbonui.uicore import uicore
      9 from carbonui.control.radioButton import RadioButton
     10 from eve.client.script.ui.control import eveLabel
     11 from eve.client.script.ui.control.eveEditPlainText import EditPlainText
     12 from eve.client.script.ui.control.eveLabel import CaptionLabel
     13 from eve.client.script.ui.shared.messagebox import MessageBox
     14 from eve.client.script.ui.util import uix
     15 
     16 class RadioButtonMessageBox(MessageBox):
     17     __guid__ = 'form.RadioButtonMessageBox'
     18     __nonpersistvars__ = ['suppress']
     19 
     20     def _show_message(self, text, title, buttons, icon, suppText, customicon = None, height = None, default = None, modal = True, cancelLabel = None, isClosable = True, width = None, radioOptions = None, is_suppressable = False):
     21         height = height or 280
     22         width = width or 340
     23         self.HideHeader()
     24         self.SetMinSize([width, height])
     25         self.width = width
     26         self.height = height
     27         self.GetMainArea().padding = 16
     28         iconTexturePath = customicon or uix.GetDialogIconTexturePath(icon)
     29         self.icon = iconTexturePath
     30         self.SetTopIcon(iconTexturePath)
     31         if title is None:
     32             title = localization.GetByLabel('UI/Common/Information')
     33         eveLabel.EveCaptionLarge(parent=ContainerAutoSize(parent=self.topParent, align=uiconst.TOLEFT, left=8), align=uiconst.CENTERLEFT, text=title, width=300)
     34         self.radioButtonContainer = ContainerAutoSize(name='radioContainer', parent=self.sr.main, align=uiconst.TOBOTTOM, padding=(0, 8, 0, 8))
     35         if text:
     36             self._message_scroll = ScrollContainer(parent=self.content, align=uiconst.TOALL, padBottom=8)
     37             self.edit = self._message_label = eveLabel.EveLabelMedium(parent=self._message_scroll, align=uiconst.TOTOP, text=text, tabs=list((16 * i for i in range(1, 9))))
     38         if radioOptions:
     39             self.radioboxID = 'radioButtonMessageBox_%s' % repr(title)
     40             radioSelection = settings.user.ui.Get(self.radioboxID, 'radioboxOption1Selected')
     41             for index, label in enumerate(radioOptions):
     42                 RadioButton(parent=self.radioButtonContainer, text=label, settingsKey=self.radioboxID, retval='radioboxOption%dSelected' % (index + 1), checked='radioboxOption%dSelected' % (index + 1) == radioSelection, groupname=self.radioboxID, callback=self.OnCheckboxChange)
     43 
     44         if suppText:
     45             self.construct_suppress_checkbox(suppText)
     46         self.DefineButtons(buttons, default=default)
     47         if modal:
     48             uicore.registry.SetFocus(self)
     49         scroll_size_fraction = self._message_scroll._scrollbar_vertical.handle_size_fraction
     50         self.height = min(int(round(0.8 * uicore.desktop.height)), max(self.GetMinHeight(), self.height + self._message_label.height * (1.0 - scroll_size_fraction)))
     51 
     52     def OnCheckboxChange(self, radioButton, *args):
     53         settings.user.ui.Set(radioButton.GetSettingsKey(), radioButton.GetReturnValue())
     54 
     55     def GetRadioSelection(self):
     56         return settings.user.ui.Get(self.radioboxID, 'radioboxOption1Selected')