Changeset 280:7bb6296024c4


Ignore:
Timestamp:
Sep 5, 2013, 12:12:55 PM (7 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
Message:

Add current mode hints

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/area_editor.py

    r277 r280  
    332332class LevelWidget(Widget):
    333333
    334     def __init__(self, level):
     334    def __init__(self, level, parent):
    335335        super(LevelWidget, self).__init__(pygame.rect.Rect(0, 0,
    336336                                          SCREEN[0], SCREEN[1]))
     
    346346        self.sel_mode = False
    347347        self._start_pos = None
     348        self._parent = parent
    348349
    349350    def _level_coordinates(self, pos):
     
    402403        self._draw_lines = False
    403404        if self.cur_poly is not None:
     405            self._parent.reset_lit_buttons()
    404406            self.filled_mode = False
    405407
    406408    def line_mode(self):
    407409        self.cur_poly = None
     410        self._parent.reset_lit_buttons()
    408411        self._draw_lines = True
    409412        self.filled_mode = False
     
    434437        if closed:
    435438            self.cur_poly = None
     439            self._parent.reset_lit_buttons()
    436440            self.filled_mode = True
    437441            self._draw_lines = False
     
    635639
    636640
    637 class PolyButton(Button):
     641class HighLightButton(Button):
     642    """Button with highlight support"""
     643    def __init__(self, text, parent, **kwds):
     644        super(HighLightButton, self).__init__(text, **kwds)
     645        self._parent = parent
     646
     647    def highlight(self):
     648        self.border_color = pygame.color.Color('red')
     649
     650    def reset(self):
     651        self.border_color = self.fg_color
     652
     653
     654class PolyButton(HighLightButton):
    638655    """Button for coosing the correct polygon"""
    639656
    640     def __init__(self, index, level_widget):
     657    def __init__(self, index, level_widget, parent):
    641658        if index is not None:
    642659            text = "Draw: %s" % index
    643660        else:
    644661            text = 'Exit Draw Mode'
    645         super(PolyButton, self).__init__(text)
     662        super(PolyButton, self).__init__(text, parent)
    646663        self.index = index
    647664        self.level_widget = level_widget
     
    649666    def action(self):
    650667        self.level_widget.change_poly(self.index)
     668        self._parent.reset_lit_buttons()
     669        if self.index is not None:
     670            self.highlight()
    651671
    652672
     
    656676        super(EditorApp, self).__init__(surface)
    657677        self.level = level
    658         self.level_widget = LevelWidget(self.level)
     678        self.level_widget = LevelWidget(self.level, self)
    659679        self.add(self.level_widget)
    660680
    661681        self._dMenus = {}
     682
     683        self._light_buttons = []
    662684
    663685        self._make_draw_menu()
     
    673695        y = 15
    674696        for poly in range(1, 7):
    675             but = PolyButton(poly, self.level_widget)
     697            but = PolyButton(poly, self.level_widget, self)
    676698            but.rect = pygame.rect.Rect(0, 0, MENU_WIDTH // 2 - MENU_PAD,
    677699                                        MENU_BUTTON_HEIGHT)
     
    682704                                 y)
    683705                y += MENU_BUTTON_HEIGHT + MENU_PAD
     706            self._light_buttons.append(but)
    684707            widgets.append(but)
    685708
    686         end_poly_but = PolyButton(None, self.level_widget)
     709        end_poly_but = PolyButton(None, self.level_widget, self)
    687710        end_poly_but.rect = BUTTON_RECT.copy()
    688711        end_poly_but.rect.move_ip(MENU_LEFT, y)
     
    690713        y += MENU_BUTTON_HEIGHT + MENU_PAD
    691714
    692         draw_line = Button("Draw interior wall", self.level_widget.line_mode)
    693         draw_line.rect = BUTTON_RECT.copy()
    694         draw_line.rect.move_ip(MENU_LEFT, y)
    695         widgets.append(draw_line)
     715        self.draw_line_but = HighLightButton("Draw interior wall", self,
     716                                             action=self.set_line_mode)
     717        self.draw_line_but.rect = BUTTON_RECT.copy()
     718        self.draw_line_but.rect.move_ip(MENU_LEFT, y)
     719        widgets.append(self.draw_line_but)
     720        self._light_buttons.append(self.draw_line_but)
    696721        y += MENU_BUTTON_HEIGHT + MENU_PAD
    697722
     
    791816
    792817        y += MENU_PAD
    793         sel_mode_but = Button('Select Object',
    794                               action=self.sel_mode)
    795         sel_mode_but.rect = BUTTON_RECT.copy()
    796         sel_mode_but.rect.move_ip(MENU_LEFT, y)
    797         widgets.append(sel_mode_but)
     818        self.sel_mode_but = HighLightButton('Select Object', self,
     819                                            action=self.sel_mode)
     820        self.sel_mode_but.rect = BUTTON_RECT.copy()
     821        self.sel_mode_but.rect.move_ip(MENU_LEFT, y)
     822        widgets.append(self.sel_mode_but)
     823        self._light_buttons.append(self.sel_mode_but)
    798824        y += MENU_BUTTON_HEIGHT + MENU_PAD
    799825
     
    853879            self.remove(widget)
    854880
     881    def reset_lit_buttons(self):
     882        for but in self._light_buttons:
     883            but.reset()
     884
    855885    def _populate_menu(self):
    856886        self.level_widget.change_poly(None)
     
    860890        self.invalidate()
    861891
     892    def set_line_mode(self):
     893        self.level_widget.line_mode()
     894        self.draw_line_but.highlight()
     895
    862896    def sel_mode(self):
    863897        self.level_widget.sel_mode = not self.level_widget.sel_mode
     898        if self.level_widget.sel_mode:
     899            self.sel_mode_but.highlight()
     900        else:
     901            self.sel_mode_but.reset()
    864902
    865903    def mouse_move(self, ev):
Note: See TracChangeset for help on using the changeset viewer.