diff --git a/MANIFEST.in b/MANIFEST.in
index a0c7156328..86683d201b 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -16,6 +16,8 @@ include trytond/ir/module/*.xml
include trytond/ir/ui/*.xml
include trytond/ir/ui/*.rng
include trytond/ir/ui/*.rnc
+include trytond/ir/ui/icons/*.svg
+include trytond/ir/ui/icons/LICENSE
include trytond/res/*.xml
include trytond/res/*.csv
include trytond/test/*.xml
diff --git a/trytond/ir/__tryton__.py b/trytond/ir/__tryton__.py
index 45f0a7e8d8..3f22aa5bcf 100644
--- a/trytond/ir/__tryton__.py
+++ b/trytond/ir/__tryton__.py
@@ -33,6 +33,7 @@ Fournit les concepts et l'administration des modèles, actions, séquences, loca
'ui/ui.xml',
'ui/menu.xml',
'ui/view.xml',
+ 'ui/icons.xml',
'action.xml',
'model.xml',
'sequence.xml',
diff --git a/trytond/ir/ui/icons.xml b/trytond/ir/ui/icons.xml
new file mode 100644
index 0000000000..a885712a4c
--- /dev/null
+++ b/trytond/ir/ui/icons.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+ tryton-calendar
+ ui/icons/tryton-calendar.svg
+
+
+ tryton-clock
+ ui/icons/tryton-clock.svg
+
+
+ tryton-graph
+ ui/icons/tryton-graph.svg
+
+
+ tryton-image-missing
+ ui/icons/tryton-image-missing.svg
+
+
+ tryton-list
+ ui/icons/tryton-list.svg
+
+
+ tryton-presentation
+ ui/icons/tryton-presentation.svg
+
+
+ tryton-readonly
+ ui/icons/tryton-readonly.svg
+
+
+ tryton-spreadsheet
+ ui/icons/tryton-spreadsheet.svg
+
+
+ tryton-tree
+ ui/icons/tryton-tree.svg
+
+
+
diff --git a/trytond/ir/ui/icons/LICENSE b/trytond/ir/ui/icons/LICENSE
new file mode 100644
index 0000000000..11782c0258
--- /dev/null
+++ b/trytond/ir/ui/icons/LICENSE
@@ -0,0 +1,264 @@
+ [1]Creative Commons
+
+ Creative Commons Legal Code
+
+ Attribution-ShareAlike 2.0
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+ License
+
+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
+ CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
+ PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
+ WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+ PROHIBITED.
+
+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
+ AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS
+ YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
+ SUCH TERMS AND CONDITIONS.
+
+ 1. Definitions
+ a. "Collective Work" means a work, such as a periodical issue,
+ anthology or encyclopedia, in which the Work in its entirety in
+ unmodified form, along with a number of other contributions,
+ constituting separate and independent works in themselves, are
+ assembled into a collective whole. A work that constitutes a
+ Collective Work will not be considered a Derivative Work (as
+ defined below) for the purposes of this License.
+ b. "Derivative Work" means a work based upon the Work or upon the
+ Work and other pre-existing works, such as a translation, musical
+ arrangement, dramatization, fictionalization, motion picture
+ version, sound recording, art reproduction, abridgment,
+ condensation, or any other form in which the Work may be recast,
+ transformed, or adapted, except that a work that constitutes a
+ Collective Work will not be considered a Derivative Work for the
+ purpose of this License. For the avoidance of doubt, where the
+ Work is a musical composition or sound recording, the
+ synchronization of the Work in timed-relation with a moving image
+ ("synching") will be considered a Derivative Work for the purpose
+ of this License.
+ c. "Licensor" means the individual or entity that offers the Work
+ under the terms of this License.
+ d. "Original Author" means the individual or entity who created the
+ Work.
+ e. "Work" means the copyrightable work of authorship offered under
+ the terms of this License.
+ f. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License
+ with respect to the Work, or who has received express permission
+ from the Licensor to exercise rights under this License despite a
+ previous violation.
+ g. "License Elements" means the following high-level license
+ attributes as selected by Licensor and indicated in the title of
+ this License: Attribution, ShareAlike.
+
+ 2. Fair Use Rights. Nothing in this license is intended to reduce,
+ limit, or restrict any rights arising from fair use, first sale or
+ other limitations on the exclusive rights of the copyright owner under
+ copyright law or other applicable laws.
+
+ 3. License Grant. Subject to the terms and conditions of this License,
+ Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+ perpetual (for the duration of the applicable copyright) license to
+ exercise the rights in the Work as stated below:
+ a. to reproduce the Work, to incorporate the Work into one or more
+ Collective Works, and to reproduce the Work as incorporated in the
+ Collective Works;
+ b. to create and reproduce Derivative Works;
+ c. to distribute copies or phonorecords of, display publicly, perform
+ publicly, and perform publicly by means of a digital audio
+ transmission the Work including as incorporated in Collective
+ Works;
+ d. to distribute copies or phonorecords of, display publicly, perform
+ publicly, and perform publicly by means of a digital audio
+ transmission Derivative Works.
+ e. For the avoidance of doubt, where the work is a musical
+ composition:
+ i. Performance Royalties Under Blanket Licenses. Licensor waives
+ the exclusive right to collect, whether individually or via a
+ performance rights society (e.g. ASCAP, BMI, SESAC),
+ royalties for the public performance or public digital
+ performance (e.g. webcast) of the Work.
+ ii. Mechanical Rights and Statutory Royalties. Licensor waives
+ the exclusive right to collect, whether individually or via a
+ music rights society or designated agent (e.g. Harry Fox
+ Agency), royalties for any phonorecord You create from the
+ Work ("cover version") and distribute, subject to the
+ compulsory license created by 17 USC Section 115 of the US
+ Copyright Act (or the equivalent in other jurisdictions).
+ f. Webcasting Rights and Statutory Royalties. For the avoidance of
+ doubt, where the Work is a sound recording, Licensor waives the
+ exclusive right to collect, whether individually or via a
+ performance-rights society (e.g. SoundExchange), royalties for the
+ public digital performance (e.g. webcast) of the Work, subject to
+ the compulsory license created by 17 USC Section 114 of the US
+ Copyright Act (or the equivalent in other jurisdictions).
+
+ The above rights may be exercised in all media and formats whether now
+ known or hereafter devised. The above rights include the right to make
+ such modifications as are technically necessary to exercise the rights
+ in other media and formats. All rights not expressly granted by
+ Licensor are hereby reserved.
+
+ 4. Restrictions.The license granted in Section 3 above is expressly
+ made subject to and limited by the following restrictions:
+ a. You may distribute, publicly display, publicly perform, or
+ publicly digitally perform the Work only under the terms of this
+ License, and You must include a copy of, or the Uniform Resource
+ Identifier for, this License with every copy or phonorecord of the
+ Work You distribute, publicly display, publicly perform, or
+ publicly digitally perform. You may not offer or impose any terms
+ on the Work that alter or restrict the terms of this License or
+ the recipients' exercise of the rights granted hereunder. You may
+ not sublicense the Work. You must keep intact all notices that
+ refer to this License and to the disclaimer of warranties. You may
+ not distribute, publicly display, publicly perform, or publicly
+ digitally perform the Work with any technological measures that
+ control access or use of the Work in a manner inconsistent with
+ the terms of this License Agreement. The above applies to the Work
+ as incorporated in a Collective Work, but this does not require
+ the Collective Work apart from the Work itself to be made subject
+ to the terms of this License. If You create a Collective Work,
+ upon notice from any Licensor You must, to the extent practicable,
+ remove from the Collective Work any reference to such Licensor or
+ the Original Author, as requested. If You create a Derivative
+ Work, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Derivative Work any reference to such
+ Licensor or the Original Author, as requested.
+ b. You may distribute, publicly display, publicly perform, or
+ publicly digitally perform a Derivative Work only under the terms
+ of this License, a later version of this License with the same
+ License Elements as this License, or a Creative Commons iCommons
+ license that contains the same License Elements as this License
+ (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy
+ of, or the Uniform Resource Identifier for, this License or other
+ license specified in the previous sentence with every copy or
+ phonorecord of each Derivative Work You distribute, publicly
+ display, publicly perform, or publicly digitally perform. You may
+ not offer or impose any terms on the Derivative Works that alter
+ or restrict the terms of this License or the recipients' exercise
+ of the rights granted hereunder, and You must keep intact all
+ notices that refer to this License and to the disclaimer of
+ warranties. You may not distribute, publicly display, publicly
+ perform, or publicly digitally perform the Derivative Work with
+ any technological measures that control access or use of the Work
+ in a manner inconsistent with the terms of this License Agreement.
+ The above applies to the Derivative Work as incorporated in a
+ Collective Work, but this does not require the Collective Work
+ apart from the Derivative Work itself to be made subject to the
+ terms of this License.
+ c. If you distribute, publicly display, publicly perform, or publicly
+ digitally perform the Work or any Derivative Works or Collective
+ Works, You must keep intact all copyright notices for the Work and
+ give the Original Author credit reasonable to the medium or means
+ You are utilizing by conveying the name (or pseudonym if
+ applicable) of the Original Author if supplied; the title of the
+ Work if supplied; to the extent reasonably practicable, the
+ Uniform Resource Identifier, if any, that Licensor specifies to be
+ associated with the Work, unless such URI does not refer to the
+ copyright notice or licensing information for the Work; and in the
+ case of a Derivative Work, a credit identifying the use of the
+ Work in the Derivative Work (e.g., "French translation of the Work
+ by Original Author," or "Screenplay based on original Work by
+ Original Author"). Such credit may be implemented in any
+ reasonable manner; provided, however, that in the case of a
+ Derivative Work or Collective Work, at a minimum such credit will
+ appear where any other comparable authorship credit appears and in
+ a manner at least as prominent as such other comparable authorship
+ credit.
+
+ 5. Representations, Warranties and Disclaimer
+
+ UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+ THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+ CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+ LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
+ ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
+ THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
+ TO YOU.
+
+ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
+ APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
+ LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR
+ EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK,
+ EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. Termination
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Derivative Works or
+ Collective Works from You under this License, however, will not
+ have their licenses terminated provided such individuals or
+ entities remain in full compliance with those licenses. Sections
+ 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted
+ here is perpetual (for the duration of the applicable copyright in
+ the Work). Notwithstanding the above, Licensor reserves the right
+ to release the Work under different license terms or to stop
+ distributing the Work at any time; provided, however that any such
+ election will not serve to withdraw this License (or any other
+ license that has been, or is required to be, granted under the
+ terms of this License), and this License will continue in full
+ force and effect unless terminated as stated above.
+
+ 8. Miscellaneous
+ a. Each time You distribute or publicly digitally perform the Work or
+ a Collective Work, the Licensor offers to the recipient a license
+ to the Work on the same terms and conditions as the license
+ granted to You under this License.
+ b. Each time You distribute or publicly digitally perform a
+ Derivative Work, Licensor offers to the recipient a license to the
+ original Work on the same terms and conditions as the license
+ granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability
+ of the remainder of the terms of this License, and without further
+ action by the parties to this agreement, such provision shall be
+ reformed to the minimum extent necessary to make such provision
+ valid and enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in
+ writing and signed by the party to be charged with such waiver or
+ consent.
+ e. This License constitutes the entire agreement between the parties
+ with respect to the Work licensed here. There are no
+ understandings, agreements or representations with respect to the
+ Work not specified here. Licensor shall not be bound by any
+ additional provisions that may appear in any communication from
+ You. This License may not be modified without the mutual written
+ agreement of the Licensor and You.
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, neither party will use the trademark
+ "Creative Commons" or any related trademark or logo of Creative
+ Commons without the prior written consent of Creative Commons. Any
+ permitted use will be in compliance with Creative Commons'
+ then-current trademark usage guidelines, as may be published on its
+ website or otherwise made available upon request from time to time.
+
+ Creative Commons may be contacted at [2]http://creativecommons.org/.
+
+ [3]« Back to Commons Deed
+
+References
+
+ 1. http://creativecommons.org/
+ 2. http://creativecommons.org/
+ 3. http://creativecommons.org/licenses/by-sa/2.0/
diff --git a/trytond/ir/ui/icons/tryton-calendar.svg b/trytond/ir/ui/icons/tryton-calendar.svg
new file mode 100644
index 0000000000..fb05f73c48
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-calendar.svg
@@ -0,0 +1,314 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-clock.svg b/trytond/ir/ui/icons/tryton-clock.svg
new file mode 100644
index 0000000000..30a6173c22
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-clock.svg
@@ -0,0 +1,418 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-graph.svg b/trytond/ir/ui/icons/tryton-graph.svg
new file mode 100644
index 0000000000..720ea0e083
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-graph.svg
@@ -0,0 +1,637 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-image-missing.svg b/trytond/ir/ui/icons/tryton-image-missing.svg
new file mode 100644
index 0000000000..e585fd87df
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-image-missing.svg
@@ -0,0 +1,318 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-list.svg b/trytond/ir/ui/icons/tryton-list.svg
new file mode 100644
index 0000000000..34ae9d35c9
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-list.svg
@@ -0,0 +1,348 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-presentation.svg b/trytond/ir/ui/icons/tryton-presentation.svg
new file mode 100644
index 0000000000..b10a7c6169
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-presentation.svg
@@ -0,0 +1,565 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-readonly.svg b/trytond/ir/ui/icons/tryton-readonly.svg
new file mode 100644
index 0000000000..10cdd97285
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-readonly.svg
@@ -0,0 +1,298 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-spreadsheet.svg b/trytond/ir/ui/icons/tryton-spreadsheet.svg
new file mode 100644
index 0000000000..0f7eb3a4d1
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-spreadsheet.svg
@@ -0,0 +1,627 @@
+
+
+
diff --git a/trytond/ir/ui/icons/tryton-tree.svg b/trytond/ir/ui/icons/tryton-tree.svg
new file mode 100644
index 0000000000..4be6463d6f
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-tree.svg
@@ -0,0 +1,348 @@
+
+
+
diff --git a/trytond/ir/ui/menu.py b/trytond/ir/ui/menu.py
index 117ea0370f..f27e41bafc 100644
--- a/trytond/ir/ui/menu.py
+++ b/trytond/ir/ui/menu.py
@@ -12,65 +12,52 @@ def one_in(i, j):
return True
return False
-ICONS = [(x, x) for x in [
- 'tryton-accessories',
+CLIENT_ICONS = [(x, x) for x in (
+ 'tryton-attachment-hi',
'tryton-attachment',
+ 'tryton-cancel',
'tryton-clear',
'tryton-close',
- 'tryton-calculator',
- 'tryton-calendar',
- 'tryton-clock',
'tryton-connect',
'tryton-copy',
- 'tryton-currency',
'tryton-delete',
- 'tryton-development',
'tryton-dialog-error',
'tryton-dialog-information',
'tryton-dialog-warning',
'tryton-disconnect',
'tryton-executable',
- 'tryton-find',
'tryton-find-replace',
+ 'tryton-find',
'tryton-folder-new',
- 'tryton-folder-saved-search',
'tryton-fullscreen',
- 'tryton-graph',
'tryton-go-home',
'tryton-go-jump',
'tryton-go-next',
'tryton-go-previous',
'tryton-help',
- 'tryton-image-missing',
- 'tryton-information',
- 'tryton-lock',
- 'tryton-list',
+ 'tryton-icon',
'tryton-list-add',
'tryton-list-remove',
'tryton-locale',
+ 'tryton-lock',
'tryton-log-out',
'tryton-mail-message-new',
+ 'tryton-mail-message',
'tryton-new',
- 'tryton-noimage',
+ 'tryton-ok',
'tryton-open',
- 'tryton-package',
- 'tryton-preferences',
- 'tryton-preferences-system',
'tryton-preferences-system-session',
- 'tryton-presentation',
+ 'tryton-preferences-system',
+ 'tryton-preferences',
'tryton-print',
- 'tryton-readonly',
'tryton-refresh',
'tryton-save-as',
'tryton-save',
- 'tryton-spreadsheet',
'tryton-start-here',
- 'tryton-tree',
- 'tryton-system',
'tryton-system-file-manager',
- 'tryton-users',
- 'tryton-web-browser',
-]]
+ 'tryton-system',
+ 'tryton-undo',
+ 'tryton-web-browser')]
class UIMenu(ModelSQL, ModelView):
@@ -85,7 +72,7 @@ class UIMenu(ModelSQL, ModelView):
'menu_id', 'gid', 'Groups')
complete_name = fields.Function(fields.Char('Complete Name',
order_field='name'), 'get_full_name')
- icon = fields.Selection(ICONS, 'Icon', translate=False)
+ icon = fields.Selection('list_icons', 'Icon')
action = fields.Function(fields.Reference('Action',
selection=[
('ir.action.report', 'ir.action.report'),
@@ -108,6 +95,11 @@ class UIMenu(ModelSQL, ModelView):
def default_active(self):
return True
+ def list_icons(self):
+ icon_obj = self.pool.get('ir.ui.icon')
+ return sorted(CLIENT_ICONS
+ + [(name, name) for _, name in icon_obj.list_icons()])
+
def get_full_name(self, ids, name):
res = {}
for menu in self.browse(ids):