| | 94 | class FundamentalBooleanRadioToggle(ClassprefsTooltipMixin, RadioAction): |
| | 95 | local_setting = None |
| | 96 | local_true = None |
| | 97 | local_false = None |
| | 98 | |
| | 99 | def getIndex(self): |
| | 100 | # True is shown first |
| | 101 | if getattr(self.mode.locals, self.local_setting): |
| | 102 | return 0 |
| | 103 | return 1 |
| | 104 | |
| | 105 | def getItems(self): |
| | 106 | return [self.local_true, self.local_false] |
| | 107 | |
| | 108 | def action(self, index=-1, multiplier=1): |
| | 109 | state = (index == 0) |
| | 110 | setattr(self.mode.locals, self.local_setting, state) |
| | 111 | self.mode.applyDefaultSettings() |
| | 112 | |
| | 113 | |
| | 114 | class FundamentalIntRadioToggle(ClassprefsTooltipMixin, RadioAction, MinibufferMixin): |
| | 115 | local_setting = None |
| | 116 | local_values = None |
| | 117 | allow_other = True |
| | 118 | other_name = _("other") |
| | 119 | minibuffer = IntMinibuffer |
| | 120 | |
| | 121 | def getIndex(self): |
| | 122 | val = getattr(self.mode.locals, self.local_setting) |
| | 123 | try: |
| | 124 | return self.local_values.index(val) |
| | 125 | except ValueError: |
| | 126 | if self.allow_other: |
| | 127 | # Other is always last, after the local values |
| | 128 | return len(self.local_values) |
| | 129 | return 0 |
| | 130 | |
| | 131 | def getItems(self): |
| | 132 | items = [str(i) for i in self.local_values] |
| | 133 | if self.allow_other: |
| | 134 | items.append(self.other_name) |
| | 135 | return items |
| | 136 | |
| | 137 | def action(self, index=-1, multiplier=1): |
| | 138 | if index < len(self.local_values): |
| | 139 | setattr(self.mode.locals, self.local_setting, self.local_values[index]) |
| | 140 | self.mode.applyDefaultSettings() |
| | 141 | else: |
| | 142 | self.showMinibuffer(self.mode) |
| | 143 | |
| | 144 | def processMinibuffer(self, minibuffer, mode, value): |
| | 145 | dprint(value) |
| | 146 | setattr(self.mode.locals, self.local_setting, value) |
| | 147 | self.mode.applyDefaultSettings() |
| | 148 | |
| | 149 | |
| | 197 | |
| | 198 | class IndentSize(FundamentalIntRadioToggle): |
| | 199 | local_setting = 'indent_size' |
| | 200 | local_values = [2, 4, 8] |
| | 201 | allow_other = True |
| | 202 | name = "Indentation Size" |
| | 203 | minibuffer_label = "Number of spaces per indent:" |
| | 204 | default_menu = ("View", 306.5) |
| | 205 | |
| | 206 | class IndentWithTabsOrSpaces(FundamentalBooleanRadioToggle): |
| | 207 | local_setting = 'use_tab_characters' |
| | 208 | local_true = 'tab characters' |
| | 209 | local_false = 'spaces' |
| | 210 | name = "Indent With" |
| | 211 | default_menu = ("View", 307) |
| | 212 | |
| | 213 | class TabSize(FundamentalIntRadioToggle): |
| | 214 | local_setting = 'tab_size' |
| | 215 | local_values = [2, 4, 8] |
| | 216 | allow_other = True |
| | 217 | name = "Tab Size" |
| | 218 | minibuffer_label = "Number of spaces per tab:" |
| | 219 | default_menu = ("View", 308) |
| | 220 | |
| | 221 | def isEnabled(self): |
| | 222 | return self.mode.locals.use_tab_characters |
| 374 | | ViewEOL, IndentationGuides, CaretLineHighlight, CaretWidth, |
| 375 | | ViewWhitespace, LongLineIndicator, TabHighlight, |
| 376 | | RevertEncoding, |
| | 456 | ViewEOL, |
| | 457 | |
| | 458 | IndentationGuides, IndentSize, IndentWithTabsOrSpaces, |
| | 459 | TabSize, |
| | 460 | |
| | 461 | CaretLineHighlight, CaretWidth, ViewWhitespace, |
| | 462 | LongLineIndicator, TabHighlight, RevertEncoding, |