Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: grit/tool/resize.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « grit/tool/rc2grd_unittest.py ('k') | grit/tool/test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: grit/tool/resize.py
===================================================================
--- grit/tool/resize.py (revision 202)
+++ grit/tool/resize.py (working copy)
@@ -1,289 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 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.
-
-'''The 'grit resize' tool.
-'''
-
-import getopt
-import os
-
-from grit import grd_reader
-from grit import pseudo
-from grit import util
-from grit.format import rc
-from grit.format import rc_header
-from grit.node import include
-from grit.tool import interface
-
-
-# Template for the .vcproj file, with a couple of [[REPLACEABLE]] parts.
-PROJECT_TEMPLATE = '''\
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="[[DIALOG_NAME]]"
- ProjectGUID="[[PROJECT_GUID]]"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- CharacterSet="2">
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- <File
- RelativePath=".\[[DIALOG_NAME]].rc">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>'''
-
-
-# Template for the .rc file with a couple of [[REPLACEABLE]] parts.
-# TODO(joi) Improve this (and the resource.h template) to allow saving and then
-# reopening of the RC file in Visual Studio. Currently you can only open it
-# once and change it, then after you close it you won't be able to reopen it.
-RC_TEMPLATE = '''\
-// This file is automatically generated by GRIT and intended for editing
-// the layout of the dialogs contained in it. Do not edit anything but the
-// dialogs. Any changes made to translateable portions of the dialogs will
-// be ignored by GRIT.
-
-#include "resource.h"
-#include <winresrc.h>
-#ifdef IDC_STATIC
-#undef IDC_STATIC
-#endif
-#define IDC_STATIC (-1)
-
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-
-#pragma code_page([[CODEPAGE_NUM]])
-
-[[INCLUDES]]
-
-[[DIALOGS]]
-'''
-
-
-# Template for the resource.h file with a couple of [[REPLACEABLE]] parts.
-HEADER_TEMPLATE = '''\
-// This file is automatically generated by GRIT. Do not edit.
-
-#pragma once
-
-// Edit commands
-#define ID_EDIT_CLEAR 0xE120
-#define ID_EDIT_CLEAR_ALL 0xE121
-#define ID_EDIT_COPY 0xE122
-#define ID_EDIT_CUT 0xE123
-#define ID_EDIT_FIND 0xE124
-#define ID_EDIT_PASTE 0xE125
-#define ID_EDIT_PASTE_LINK 0xE126
-#define ID_EDIT_PASTE_SPECIAL 0xE127
-#define ID_EDIT_REPEAT 0xE128
-#define ID_EDIT_REPLACE 0xE129
-#define ID_EDIT_SELECT_ALL 0xE12A
-#define ID_EDIT_UNDO 0xE12B
-#define ID_EDIT_REDO 0xE12C
-
-
-[[DEFINES]]
-'''
-
-
-class ResizeDialog(interface.Tool):
- '''Generates an RC file, header and Visual Studio project that you can use
-with Visual Studio's GUI resource editor to modify the layout of dialogs for
-the language of your choice. You then use the RC file, after you resize the
-dialog, for the language or languages of your choice, using the <skeleton> child
-of the <structure> node for the dialog. The translateable bits of the dialog
-will be ignored when you use the <skeleton> node (GRIT will instead use the
-translateable bits from the original dialog) but the layout changes you make
-will be used. Note that your layout changes must preserve the order of the
-translateable elements in the RC file.
-
-Usage: grit resize [-f BASEFOLDER] [-l LANG] [-e RCENCODING] DIALOGID*
-
-Arguments:
- DIALOGID The 'name' attribute of a dialog to output for resizing. Zero
- or more of these parameters can be used. If none are
- specified, all dialogs from the input .grd file are output.
-
-Options:
-
- -f BASEFOLDER The project will be created in a subfolder of BASEFOLDER.
- The name of the subfolder will be the first DIALOGID you
- specify. Defaults to '.'
-
- -l LANG Specifies that the RC file should contain a dialog translated
- into the language LANG. The default is a cp1252-representable
- pseudotranslation, because Visual Studio's GUI RC editor only
- supports single-byte encodings.
-
- -c CODEPAGE Code page number to indicate to the RC compiler the encoding
- of the RC file, default is something reasonable for the
- language you selected (but this does not work for every single
- language). See details on codepages below. NOTE that you do
- not need to specify the codepage unless the tool complains
- that it's not sure which codepage to use. See the following
- page for codepage numbers supported by Windows:
- http://www.microsoft.com/globaldev/reference/wincp.mspx
-
- -D NAME[=VAL] Specify a C-preprocessor-like define NAME with optional
- value VAL (defaults to 1) which will be used to control
- conditional inclusion of resources.
-
-
-IMPORTANT NOTE: For now, the tool outputs a UTF-8 encoded file for any language
-that can not be represented in cp1252 (i.e. anything other than Western
-European languages). You will need to open this file in a text editor and
-save it using the codepage indicated in the #pragma code_page(XXXX) command
-near the top of the file, before you open it in Visual Studio.
-
-'''
-
- # TODO(joi) It would be cool to have this tool note the Perforce revision
- # of the original RC file somewhere, such that the <skeleton> node could warn
- # if the original RC file gets updated without the skeleton file being updated.
-
- # TODO(joi) Would be cool to have option to add the files to Perforce
-
- def __init__(self):
- self.lang = pseudo.PSEUDO_LANG
- self.defines = {}
- self.base_folder = '.'
- self.codepage_number = 1252
- self.codepage_number_specified_explicitly = False
-
- def SetLanguage(self, lang):
- '''Sets the language code to output things in.
- '''
- self.lang = lang
- if not self.codepage_number_specified_explicitly:
- self.codepage_number = util.LanguageToCodepage(lang)
-
- def GetEncoding(self):
- if self.codepage_number == 1200:
- return 'utf_16'
- if self.codepage_number == 65001:
- return 'utf_8'
- return 'cp%d' % self.codepage_number
-
- def ShortDescription(self):
- return 'Generate a file where you can resize a given dialog.'
-
- def Run(self, opts, args):
- self.SetOptions(opts)
-
- own_opts, args = getopt.getopt(args, 'l:f:c:D:')
- for key, val in own_opts:
- if key == '-l':
- self.SetLanguage(val)
- if key == '-f':
- self.base_folder = val
- if key == '-c':
- self.codepage_number = int(val)
- self.codepage_number_specified_explicitly = True
- if key == '-D':
- name, val = util.ParseDefine(val)
- self.defines[name] = val
-
- res_tree = grd_reader.Parse(opts.input, debug=opts.extra_verbose)
- res_tree.OnlyTheseTranslations([self.lang])
- res_tree.RunGatherers()
-
- # Dialog IDs are either explicitly listed, or we output all dialogs from the
- # .grd file
- dialog_ids = args
- if not len(dialog_ids):
- for node in res_tree:
- if node.name == 'structure' and node.attrs['type'] == 'dialog':
- dialog_ids.append(node.attrs['name'])
-
- self.Process(res_tree, dialog_ids)
-
- def Process(self, grd, dialog_ids):
- '''Outputs an RC file and header file for the dialog 'dialog_id' stored in
- resource tree 'grd', to self.base_folder, as discussed in this class's
- documentation.
-
- Arguments:
- grd: grd = grd_reader.Parse(...); grd.RunGatherers()
- dialog_ids: ['IDD_MYDIALOG', 'IDD_OTHERDIALOG']
- '''
- grd.SetOutputLanguage(self.lang)
- grd.SetDefines(self.defines)
-
- project_name = dialog_ids[0]
-
- dir_path = os.path.join(self.base_folder, project_name)
- if not os.path.isdir(dir_path):
- os.mkdir(dir_path)
-
- # If this fails then we're not on Windows (or you don't have the required
- # win32all Python libraries installed), so what are you doing mucking
- # about with RC files anyway? :)
- import pythoncom
-
- # Create the .vcproj file
- project_text = PROJECT_TEMPLATE.replace(
- '[[PROJECT_GUID]]', str(pythoncom.CreateGuid())
- ).replace('[[DIALOG_NAME]]', project_name)
- fname = os.path.join(dir_path, '%s.vcproj' % project_name)
- self.WriteFile(fname, project_text)
- print "Wrote %s" % fname
-
- # Create the .rc file
- # Output all <include> nodes since the dialogs might depend on them (e.g.
- # for icons and bitmaps).
- include_items = []
- for node in grd.ActiveDescendants():
- if isinstance(node, include.IncludeNode):
- include_items.append(rc.FormatInclude(node, self.lang, '.'))
- rc_text = RC_TEMPLATE.replace('[[CODEPAGE_NUM]]',
- str(self.codepage_number))
- rc_text = rc_text.replace('[[INCLUDES]]', ''.join(include_items))
-
- # Then output the dialogs we have been asked to output.
- dialogs = []
- for dialog_id in dialog_ids:
- node = grd.GetNodeById(dialog_id)
- assert node.name == 'structure' and node.attrs['type'] == 'dialog'
- # TODO(joi) Add exception handling for better error reporting
- dialogs.append(rc.FormatStructure(node, self.lang, '.'))
- rc_text = rc_text.replace('[[DIALOGS]]', ''.join(dialogs))
-
- fname = os.path.join(dir_path, '%s.rc' % project_name)
- self.WriteFile(fname, rc_text, self.GetEncoding())
- print "Wrote %s" % fname
-
- # Create the resource.h file
- header_defines = ''.join(rc_header.FormatDefines(grd))
- header_text = HEADER_TEMPLATE.replace('[[DEFINES]]', header_defines)
- fname = os.path.join(dir_path, 'resource.h')
- self.WriteFile(fname, header_text)
- print "Wrote %s" % fname
-
- def WriteFile(self, filename, contents, encoding='cp1252'):
- with open(filename, 'wb') as f:
- writer = util.WrapOutputStream(f, encoding)
- writer.write(contents)
« no previous file with comments | « grit/tool/rc2grd_unittest.py ('k') | grit/tool/test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698