| Index: grit/tool/toolbar_postprocess.py
|
| ===================================================================
|
| --- grit/tool/toolbar_postprocess.py (revision 0)
|
| +++ grit/tool/toolbar_postprocess.py (revision 0)
|
| @@ -0,0 +1,126 @@
|
| +#!/usr/bin/python2.4
|
| +# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +''' Toolbar postprocessing class. Modifies the previously processed GRD tree
|
| +by creating separate message groups for each of the IDS_COMMAND macros.
|
| +Also adds some identifiers nodes to declare specific ids to be included
|
| +in the generated grh file.
|
| +'''
|
| +
|
| +import sys
|
| +import re
|
| +import postprocess_interface
|
| +import grit.node.empty
|
| +from grit.node import misc
|
| +
|
| +class ToolbarPostProcessor(postprocess_interface.PostProcessor):
|
| + ''' Defines message groups within the grd file for each of the
|
| + IDS_COMMAND stuff.
|
| + '''
|
| +
|
| + _IDS_COMMAND = re.compile(r'IDS_COMMAND_')
|
| + _GRAB_PARAMETERS = re.compile(r'(IDS_COMMAND_[a-zA-Z0-9]+)_([a-zA-z0-9]+)')
|
| +
|
| + def Process(self, rctext, rcpath, grdnode):
|
| + ''' Processes the data in rctext and grdnode.
|
| + Args:
|
| + rctext: string containing the contents of the RC file being processed.
|
| + rcpath: the path used to access the file.
|
| + grdnode: the root node of the grd xml data generated by
|
| + the rc2grd tool.
|
| +
|
| + Return:
|
| + The root node of the processed GRD tree.
|
| + '''
|
| +
|
| + release = grdnode.children[2]
|
| + messages = release.children[2]
|
| +
|
| + identifiers = grit.node.empty.IdentifiersNode()
|
| + identifiers.StartParsing('identifiers', release)
|
| + identifiers.EndParsing()
|
| + release.AddChild(identifiers)
|
| +
|
| +
|
| + #
|
| + # Turn the IDS_COMMAND messages into separate message groups
|
| + # with ids that are offsetted to the message group's first id
|
| + #
|
| + previous_name_attr = ''
|
| + previous_prefix = ''
|
| + previous_node = ''
|
| + new_messages_node = self.ConstructNewMessages(release)
|
| + for node in messages.children[:]:
|
| + name_attr = node.attrs['name']
|
| + if self._IDS_COMMAND.search(name_attr):
|
| + mo = self._GRAB_PARAMETERS.search(name_attr)
|
| + mp = self._GRAB_PARAMETERS.search(previous_name_attr)
|
| + if mo and mp:
|
| + prefix = mo.group(1)
|
| + previous_prefix = mp.group(1)
|
| + new_message_id = mp.group(2)
|
| + if prefix == previous_prefix:
|
| + messages.RemoveChild(previous_name_attr)
|
| + previous_node.attrs['offset'] = 'PCI_' + new_message_id
|
| + del previous_node.attrs['name']
|
| + new_messages_node.AddChild(previous_node)
|
| + else:
|
| + messages.RemoveChild(previous_name_attr)
|
| + previous_node.attrs['offset'] = 'PCI_' + new_message_id
|
| + del previous_node.attrs['name']
|
| + new_messages_node.AddChild(previous_node)
|
| + new_messages_node.attrs['first_id'] = previous_prefix
|
| + new_messages_node = self.ConstructNewMessages(release)
|
| + else:
|
| + if self._IDS_COMMAND.search(previous_name_attr):
|
| + messages.RemoveChild(previous_name_attr)
|
| + previous_prefix = mp.group(1)
|
| + new_message_id = mp.group(2)
|
| + previous_node.attrs['offset'] = 'PCI_' + new_message_id
|
| + del previous_node.attrs['name']
|
| + new_messages_node.AddChild(previous_node)
|
| + new_messages_node.attrs['first_id'] = previous_prefix
|
| + new_messages_node = self.ConstructNewMessages(release)
|
| + else:
|
| + if self._IDS_COMMAND.search(previous_name_attr):
|
| + messages.RemoveChild(previous_name_attr)
|
| + mp = self._GRAB_PARAMETERS.search(previous_name_attr)
|
| + previous_prefix = mp.group(1)
|
| + new_message_id = mp.group(2)
|
| + previous_node.attrs['offset'] = 'PCI_' + new_message_id
|
| + del previous_node.attrs['name']
|
| + new_messages_node.AddChild(previous_node)
|
| + new_messages_node.attrs['first_id'] = previous_prefix
|
| + new_messages_node = self.ConstructNewMessages(release)
|
| + previous_name_attr = name_attr
|
| + previous_node = node
|
| +
|
| +
|
| + self.AddIdentifiers(rctext, identifiers)
|
| + return grdnode
|
| +
|
| + def ConstructNewMessages(self, parent):
|
| + new_node = grit.node.empty.MessagesNode()
|
| + new_node.StartParsing('messages', parent)
|
| + new_node.EndParsing()
|
| + parent.AddChild(new_node)
|
| + return new_node
|
| +
|
| + def AddIdentifiers(self, rctext, node):
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'IDS_COMMAND_gcFirst', '12000', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node,
|
| + 'IDS_COMMAND_PCI_SPACE', '16', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_BUTTON', '0', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_MENU', '1', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP', '2', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_OPTIONS_TEXT', '3', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP_DISABLED', '4', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP_MENU', '5', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP_MENU_DISABLED', '6', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP_OPTIONS', '7', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node, 'PCI_TIP_OPTIONS_DISABLED', '8', ''))
|
| + node.AddChild(misc.IdentifierNode.Construct(node,
|
| + 'PCI_TIP_DISABLED_BY_POLICY', '9', ''))
|
| +
|
|
|
| Property changes on: grit/tool/toolbar_postprocess.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|