You can subscribe to this list here.
2008 |
Jan
(18) |
Feb
(41) |
Mar
(8) |
Apr
(19) |
May
(11) |
Jun
(5) |
Jul
(3) |
Aug
(20) |
Sep
(23) |
Oct
(31) |
Nov
(13) |
Dec
(25) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(26) |
Feb
(26) |
Mar
(4) |
Apr
(4) |
May
(125) |
Jun
(6) |
Jul
(32) |
Aug
(12) |
Sep
(19) |
Oct
(29) |
Nov
(15) |
Dec
(15) |
2010 |
Jan
(11) |
Feb
(50) |
Mar
(88) |
Apr
(45) |
May
(20) |
Jun
(3) |
Jul
(10) |
Aug
(47) |
Sep
(10) |
Oct
(36) |
Nov
(45) |
Dec
(27) |
2011 |
Jan
(72) |
Feb
(28) |
Mar
(36) |
Apr
(26) |
May
(5) |
Jun
(3) |
Jul
(5) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: <ena...@us...> - 2011-09-18 08:23:22
|
Revision: 1337 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1337&view=rev Author: enayet05 Date: 2011-09-18 08:23:16 +0000 (Sun, 18 Sep 2011) Log Message: ----------- Commited by Enayet to listed all available language from world file. Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/Converter.py Modified: branches/wordforge0.8/WordForge/Editor/modules/Converter.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Converter.py 2011-07-16 04:46:17 UTC (rev 1336) +++ branches/wordforge0.8/WordForge/Editor/modules/Converter.py 2011-09-18 08:23:16 UTC (rev 1337) @@ -62,6 +62,8 @@ if v[0] not in self.locale: self.locale.append(v[0]) self.locale.append(v[2]) + else: + self.locale.append(v[0]) self.locale.sort() # add item to converter lists This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-07-16 04:46:23
|
Revision: 1336 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1336&view=rev Author: enayet05 Date: 2011-07-16 04:46:17 +0000 (Sat, 16 Jul 2011) Log Message: ----------- Commited by Enayet to fix bug related to inline tags display Modified Paths: -------------- branches/wordforge0.8/WordForge/translate/storage/lisa.py Modified: branches/wordforge0.8/WordForge/translate/storage/lisa.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-07-16 04:39:48 UTC (rev 1335) +++ branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-07-16 04:46:17 UTC (rev 1336) @@ -86,7 +86,8 @@ nextPart = node.getchildren()[i].tail miniinline=miniinline+firstPart +unicode("«") +node.getchildren()[i].get("id") + unicode("»") +nextPart fullinlinewithid=fullinlinewithid+firstPart + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +node.getchildren()[i].get("id") +nextPart - incompleteFull=incompleteFull +firstPart + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +nextPart +# incompleteFull=incompleteFull +firstPart + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +nextPart + incompleteFull=incompleteFull +firstPart + nextPart nextPart="" firstPart="" textForHighlight=unicode("«") +node.getchildren()[i].get("id") + unicode("»") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-07-16 04:39:55
|
Revision: 1335 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1335&view=rev Author: enayet05 Date: 2011-07-16 04:39:48 +0000 (Sat, 16 Jul 2011) Log Message: ----------- Commited by Enayet to Add :Preserve in-line tags in the translations: option in preference (for error checking) . Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/ErrorChecking.py branches/wordforge0.8/WordForge/Editor/modules/Preference.py branches/wordforge0.8/WordForge/Editor/modules/TUview.py branches/wordforge0.8/WordForge/Editor/test_files/initial.xml branches/wordforge0.8/WordForge/Editor/ui/Preference.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py Modified: branches/wordforge0.8/WordForge/Editor/modules/ErrorChecking.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/ErrorChecking.py 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/modules/ErrorChecking.py 2011-07-16 04:39:48 UTC (rev 1335) @@ -489,7 +489,13 @@ hasState = True else: hasState = False - + elif test == 'inline': + if globalClass.inlinetextLIst: + hasState = True + globalClass.CurrentinlinetexttargetLIst = globalClass.inlinetextLIst + globalClass.inlinetagstarget = globalClass.curinlinetaginTarget + else: + hasState = False elif test == 'glossarytest': if self.searchFileError: @@ -615,6 +621,10 @@ elif test == 'xmltags': errormessage = self.WF_xmltags(unicode(source), unicode(target), self.XmltagAttDic1, self.duplicate) + + elif test == 'inline': + errormessage = self.WF_inlinetags() + if(errormessage): if (test == 'accelerators' or test == 'variables'): for each in errormessage: @@ -1107,6 +1117,18 @@ return u'Xml tag: ' + u', '.join(lst) + 'should be exactly same as the source.' else: return False + + def WF_inlinetags(self): +# this function checks whether all the inline tags of the source is in the target. + lst = [] + if not ((globalClass.inlinetagstarget==globalClass.CurrentinlinetexttargetLIst) or (globalClass.curinlinetaginTarget==globalClass.CurrentinlinetexttargetLIst)): + for each in globalClass.CurrentinlinetexttargetLIst: + if each not in (globalClass.inlinetagstarget or globalClass.curinlinetaginTarget): + tags = each.split(".....")[0] + lst.append(tags) + return u'Inline tag: "' + u', '.join(lst) + '" should be exactly same as the source.' + return False + #start of code by Aditi def WF_xmltags(self, str1, str2, XmltagAttDic1, duplicateTag1): # this function checks whether all the xml tags of the list xmltags is in the target This test doesnot check Attribute value. Modified: branches/wordforge0.8/WordForge/Editor/modules/Preference.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Preference.py 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/modules/Preference.py 2011-07-16 04:39:48 UTC (rev 1335) @@ -266,6 +266,7 @@ self.ui.chkOption.setChecked(False) self.ui.chkEscape.setChecked(False) self.ui.chkTab.setChecked(False) + self.ui.chkInLine.setChecked(False) self.ui.chkStWhiteSpc.setChecked(False) self.ui.chkEndWhiteSpc.setChecked(False) @@ -320,6 +321,7 @@ self.errorOptionList.append(self.ui.chkOption) self.errorOptionList.append(self.ui.chkEscape) self.errorOptionList.append(self.ui.chkTab) + self.errorOptionList.append(self.ui.chkInLine) self.errorOptionList.append(self.ui.chkStWhiteSpc) self.errorOptionList.append(self.ui.chkEndWhiteSpc) @@ -414,6 +416,7 @@ self.errorNodeList.append("options") self.errorNodeList.append("escapes") self.errorNodeList.append("tabs") + self.errorNodeList.append("inline") self.errorNodeList.append("startwhitespace") self.errorNodeList.append("endwhitespace") @@ -680,7 +683,7 @@ root.appendChild( std ) std.setAttribute( "code", filecode ) addCount=-1 - subnode=13 + subnode=14 for k in range(subnode): addCount=addCount+1 self.addCheckTest(std, doc, addCount ) @@ -1365,7 +1368,7 @@ nodeList=self.set_error_node_list() localCheckingDict = {} j=-1 - subnode=30 + subnode=31 for k in range(subnode): j=j+1 nodeName= nodeList[j] @@ -1388,7 +1391,7 @@ localCheckingDict["accelerators"]=accProgram localCheckingDict[accProgram]=accMarks - j=13 + j=14 nodeValue=lst5[j] glossaryEnabledValue=str(nodeValue) subnode=4 @@ -1407,7 +1410,7 @@ punctuationList=[] punctuaionList=self.set_punctuation_list() punctuationCount=-1 - j=29 + j=30 nodeValue=lst5[j] punctuationEnabledValue=str(nodeValue) subnode=7 @@ -1477,7 +1480,7 @@ self.accValue=[] self.accValue=self.set_acceleratorValue_list() showCount=-1 - subnode=13 + subnode=14 errorlist=[] errorlist=self.set_error_options_list() for k in range(subnode): Modified: branches/wordforge0.8/WordForge/Editor/modules/TUview.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-07-16 04:39:48 UTC (rev 1335) @@ -1073,6 +1073,7 @@ self.setCursorToHome(self.ui.txtTarget) else: self.setCursorToEnd(self.ui.txtTarget) + self.emitTargetChanged() def translation2target(self, translation): """ @@ -1511,6 +1512,7 @@ globalClass.preCheck = 1 #Enayet end globalClass.preComputeFlag = 0 + self.emitTargetChanged() # Finding out the index of last modified word. self.recentModifiedWords = [] key = event.key() Modified: branches/wordforge0.8/WordForge/Editor/test_files/initial.xml =================================================================== --- branches/wordforge0.8/WordForge/Editor/test_files/initial.xml 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/test_files/initial.xml 2011-07-16 04:39:48 UTC (rev 1335) @@ -10,6 +10,7 @@ <options>True</options> <escapes>True</escapes> <tabs>True</tabs> + <inline>True</inline> <startwhitespace>True</startwhitespace> <endwhitespace>True</endwhitespace> <doublespacing>True</doublespacing> Modified: branches/wordforge0.8/WordForge/Editor/ui/Preference.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-07-16 04:39:48 UTC (rev 1335) @@ -109,7 +109,7 @@ <number>1</number> </property> <property name="currentIndex"> - <number>2</number> + <number>8</number> </property> <widget class="QWidget" name="personal"> <property name="sizePolicy"> @@ -925,49 +925,6 @@ </property> </widget> </item> - <item row="2" column="0"> - <layout class="QGridLayout" name="gridLayout_7"> - <item row="0" column="0"> - <widget class="QLabel" name="label_16"> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Maximum number of suggestions for each message</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="spnMaxSuggestions"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="value"> - <number>10</number> - </property> - </widget> - </item> - <item row="0" column="2"> - <spacer> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>128</width> - <height>21</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> <item row="3" column="0"> <widget class="QGroupBox" name="groupBox"> <property name="font"> @@ -988,83 +945,6 @@ <string>File TM</string> </property> <layout class="QGridLayout" name="gridLayout_13"> - <item row="0" column="0" colspan="3"> - <layout class="QGridLayout"> - <item row="0" column="0"> - <widget class="QCheckBox" name="chkTargetInclusion"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="text"> - <string>Include suggestions directly in the translation if match is equal or over</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="spnTarget"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="toolTip"> - <string>100% = identical source</string> - </property> - <property name="suffix"> - <string>%</string> - </property> - <property name="minimum"> - <number>71</number> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="value"> - <number>100</number> - </property> - </widget> - </item> - <item row="0" column="2"> - <spacer> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>13</width> - <height>21</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="1" column="1" colspan="2"> - <widget class="QCheckBox" name="chbMarkStringAsFuzzy"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="text"> - <string>Mark messages as fuzzy if 100% match</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> <item row="2" column="0" colspan="3"> <widget class="QGroupBox" name="chkAddSuggestions"> <property name="enabled"> @@ -1186,6 +1066,99 @@ </layout> </widget> </item> + <item row="4" column="0" colspan="3"> + <widget class="QCheckBox" name="chkIncludeFuzzy"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="whatsThis"> + <string><h3>Ignore Fuzzy Strings</h3> If this option is checked, the fuzzy string will not be searching for from the Translation Memory.</string> + </property> + <property name="text"> + <string>Propose suggestions for fuzzy messages (in addition to suggestion for untranslated messages)</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2"> + <widget class="QCheckBox" name="chbMarkStringAsFuzzy"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="text"> + <string>Mark messages as fuzzy if 100% match</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="0" colspan="3"> + <layout class="QGridLayout"> + <item row="0" column="0"> + <widget class="QCheckBox" name="chkTargetInclusion"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="text"> + <string>Include suggestions directly in the translation if match is equal or over</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="spnTarget"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="toolTip"> + <string>100% = identical source</string> + </property> + <property name="suffix"> + <string>%</string> + </property> + <property name="minimum"> + <number>71</number> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>100</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>13</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> <item row="3" column="0" colspan="3"> <layout class="QGridLayout"> <item row="0" column="2"> @@ -1248,22 +1221,6 @@ </item> </layout> </item> - <item row="4" column="0" colspan="3"> - <widget class="QCheckBox" name="chkIncludeFuzzy"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="whatsThis"> - <string><h3>Ignore Fuzzy Strings</h3> If this option is checked, the fuzzy string will not be searching for from the Translation Memory.</string> - </property> - <property name="text"> - <string>Propose suggestions for fuzzy messages (in addition to suggestion for untranslated messages)</string> - </property> - </widget> - </item> </layout> <zorder>chkAddSuggestions</zorder> <zorder>chkIncludeFuzzy</zorder> @@ -1272,6 +1229,49 @@ <zorder></zorder> </widget> </item> + <item row="2" column="0"> + <layout class="QGridLayout" name="gridLayout_7"> + <item row="0" column="0"> + <widget class="QLabel" name="label_16"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Maximum number of suggestions for each message</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="spnMaxSuggestions"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="value"> + <number>10</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>128</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> <item row="4" column="0"> <layout class="QGridLayout" name="gridLayout_8"> <item row="0" column="0"> @@ -2074,15 +2074,15 @@ <item> <widget class="QToolBox" name="toolBox"> <property name="currentIndex"> - <number>2</number> + <number>1</number> </property> <widget class="QWidget" name="page_7"> <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>180</width> - <height>84</height> + <width>813</width> + <height>191</height> </rect> </property> <attribute name="label"> @@ -2161,9 +2161,9 @@ <property name="geometry"> <rect> <x>0</x> - <y>0</y> - <width>321</width> - <height>270</height> + <y>-107</y> + <width>798</width> + <height>298</height> </rect> </property> <attribute name="label"> @@ -2246,6 +2246,13 @@ </property> </spacer> </item> + <item> + <widget class="QCheckBox" name="chkInLine"> + <property name="text"> + <string>Preserve inline tags in the translation</string> + </property> + </widget> + </item> </layout> </widget> <widget class="QWidget" name="page_6"> @@ -2253,8 +2260,8 @@ <rect> <x>0</x> <y>0</y> - <width>262</width> - <height>178</height> + <width>813</width> + <height>191</height> </rect> </property> <attribute name="label"> @@ -2356,7 +2363,7 @@ <rect> <x>0</x> <y>0</y> - <width>174</width> + <width>798</width> <height>277</height> </rect> </property> @@ -2489,8 +2496,8 @@ <rect> <x>0</x> <y>0</y> - <width>306</width> - <height>130</height> + <width>813</width> + <height>191</height> </rect> </property> <attribute name="label"> @@ -2545,7 +2552,7 @@ <rect> <x>0</x> <y>0</y> - <width>311</width> + <width>798</width> <height>214</height> </rect> </property> @@ -2628,8 +2635,8 @@ <rect> <x>0</x> <y>0</y> - <width>208</width> - <height>140</height> + <width>813</width> + <height>191</height> </rect> </property> <attribute name="label"> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-07-05 06:26:12 UTC (rev 1334) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-07-16 04:39:48 UTC (rev 1335) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/Preference.ui' # -# Created: Tue May 10 15:48:35 2011 +# Created: Thu Jul 14 14:25:41 2011 # by: PyQt4 UI code generator 4.7.3 # # WARNING! All changes made in this file will be lost! @@ -413,26 +413,6 @@ self.line_3.setFrameShadow(QtGui.QFrame.Sunken) self.line_3.setObjectName("line_3") self.gridLayout_14.addWidget(self.line_3, 1, 0, 1, 1) - self.gridLayout_7 = QtGui.QGridLayout() - self.gridLayout_7.setObjectName("gridLayout_7") - self.label_16 = QtGui.QLabel(self.TM_Glossary ) - font = QtGui.QFont() - font.setWeight(75) - font.setBold(True) - self.label_16.setFont(font) - self.label_16.setObjectName("label_16") - self.gridLayout_7.addWidget(self.label_16, 0, 0, 1, 1) - self.spnMaxSuggestions = QtGui.QSpinBox(self.TM_Glossary ) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.spnMaxSuggestions.setFont(font) - self.spnMaxSuggestions.setProperty("value", 10) - self.spnMaxSuggestions.setObjectName("spnMaxSuggestions") - self.gridLayout_7.addWidget(self.spnMaxSuggestions, 0, 1, 1, 1) - spacerItem5 = QtGui.QSpacerItem(128, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_7.addItem(spacerItem5, 0, 2, 1, 1) - self.gridLayout_14.addLayout(self.gridLayout_7, 2, 0, 1, 1) self.groupBox = QtGui.QGroupBox(self.TM_Glossary ) font = QtGui.QFont() font.setWeight(75) @@ -441,41 +421,6 @@ self.groupBox.setObjectName("groupBox") self.gridLayout_13 = QtGui.QGridLayout(self.groupBox) self.gridLayout_13.setObjectName("gridLayout_13") - self.gridlayout1 = QtGui.QGridLayout() - self.gridlayout1.setObjectName("gridlayout1") - self.chkTargetInclusion = QtGui.QCheckBox(self.groupBox) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.chkTargetInclusion.setFont(font) - self.chkTargetInclusion.setObjectName("chkTargetInclusion") - self.gridlayout1.addWidget(self.chkTargetInclusion, 0, 0, 1, 1) - self.spnTarget = QtGui.QSpinBox(self.groupBox) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.spnTarget.setFont(font) - self.spnTarget.setMinimum(71) - self.spnTarget.setMaximum(100) - self.spnTarget.setProperty("value", 100) - self.spnTarget.setObjectName("spnTarget") - self.gridlayout1.addWidget(self.spnTarget, 0, 1, 1, 1) - spacerItem6 = QtGui.QSpacerItem(13, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridlayout1.addItem(spacerItem6, 0, 2, 1, 1) - self.gridLayout_13.addLayout(self.gridlayout1, 0, 0, 1, 3) - self.chbMarkStringAsFuzzy = QtGui.QCheckBox(self.groupBox) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.chbMarkStringAsFuzzy.sizePolicy().hasHeightForWidth()) - self.chbMarkStringAsFuzzy.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.chbMarkStringAsFuzzy.setFont(font) - self.chbMarkStringAsFuzzy.setChecked(True) - self.chbMarkStringAsFuzzy.setObjectName("chbMarkStringAsFuzzy") - self.gridLayout_13.addWidget(self.chbMarkStringAsFuzzy, 1, 1, 1, 2) self.chkAddSuggestions = QtGui.QGroupBox(self.groupBox) self.chkAddSuggestions.setEnabled(True) font = QtGui.QFont() @@ -513,8 +458,8 @@ self.lblMax.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.lblMax.setObjectName("lblMax") self.gridLayout_12.addWidget(self.lblMax, 0, 2, 1, 2) - spacerItem7 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_12.addItem(spacerItem7, 0, 4, 1, 1) + spacerItem5 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout_12.addItem(spacerItem5, 0, 4, 1, 1) self.chkEliminateIdentical = QtGui.QCheckBox(self.chkAddSuggestions) font = QtGui.QFont() font.setWeight(50) @@ -531,6 +476,48 @@ self.FuzzyGLb4TM.setObjectName("FuzzyGLb4TM") self.gridLayout_12.addWidget(self.FuzzyGLb4TM, 3, 1, 1, 4) self.gridLayout_13.addWidget(self.chkAddSuggestions, 2, 0, 1, 3) + self.chkIncludeFuzzy = QtGui.QCheckBox(self.groupBox) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.chkIncludeFuzzy.setFont(font) + self.chkIncludeFuzzy.setObjectName("chkIncludeFuzzy") + self.gridLayout_13.addWidget(self.chkIncludeFuzzy, 4, 0, 1, 3) + self.chbMarkStringAsFuzzy = QtGui.QCheckBox(self.groupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.chbMarkStringAsFuzzy.sizePolicy().hasHeightForWidth()) + self.chbMarkStringAsFuzzy.setSizePolicy(sizePolicy) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.chbMarkStringAsFuzzy.setFont(font) + self.chbMarkStringAsFuzzy.setChecked(True) + self.chbMarkStringAsFuzzy.setObjectName("chbMarkStringAsFuzzy") + self.gridLayout_13.addWidget(self.chbMarkStringAsFuzzy, 1, 1, 1, 2) + self.gridlayout1 = QtGui.QGridLayout() + self.gridlayout1.setObjectName("gridlayout1") + self.chkTargetInclusion = QtGui.QCheckBox(self.groupBox) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.chkTargetInclusion.setFont(font) + self.chkTargetInclusion.setObjectName("chkTargetInclusion") + self.gridlayout1.addWidget(self.chkTargetInclusion, 0, 0, 1, 1) + self.spnTarget = QtGui.QSpinBox(self.groupBox) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.spnTarget.setFont(font) + self.spnTarget.setMinimum(71) + self.spnTarget.setMaximum(100) + self.spnTarget.setProperty("value", 100) + self.spnTarget.setObjectName("spnTarget") + self.gridlayout1.addWidget(self.spnTarget, 0, 1, 1, 1) + spacerItem6 = QtGui.QSpacerItem(13, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridlayout1.addItem(spacerItem6, 0, 2, 1, 1) + self.gridLayout_13.addLayout(self.gridlayout1, 0, 0, 1, 3) self.gridlayout2 = QtGui.QGridLayout() self.gridlayout2.setObjectName("gridlayout2") self.label_10 = QtGui.QLabel(self.groupBox) @@ -556,17 +543,30 @@ self.label_17.setFont(font) self.label_17.setObjectName("label_17") self.gridlayout2.addWidget(self.label_17, 0, 0, 1, 1) - spacerItem8 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridlayout2.addItem(spacerItem8, 0, 3, 1, 1) + spacerItem7 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridlayout2.addItem(spacerItem7, 0, 3, 1, 1) self.gridLayout_13.addLayout(self.gridlayout2, 3, 0, 1, 3) - self.chkIncludeFuzzy = QtGui.QCheckBox(self.groupBox) + self.gridLayout_14.addWidget(self.groupBox, 3, 0, 1, 1) + self.gridLayout_7 = QtGui.QGridLayout() + self.gridLayout_7.setObjectName("gridLayout_7") + self.label_16 = QtGui.QLabel(self.TM_Glossary ) font = QtGui.QFont() + font.setWeight(75) + font.setBold(True) + self.label_16.setFont(font) + self.label_16.setObjectName("label_16") + self.gridLayout_7.addWidget(self.label_16, 0, 0, 1, 1) + self.spnMaxSuggestions = QtGui.QSpinBox(self.TM_Glossary ) + font = QtGui.QFont() font.setWeight(50) font.setBold(False) - self.chkIncludeFuzzy.setFont(font) - self.chkIncludeFuzzy.setObjectName("chkIncludeFuzzy") - self.gridLayout_13.addWidget(self.chkIncludeFuzzy, 4, 0, 1, 3) - self.gridLayout_14.addWidget(self.groupBox, 3, 0, 1, 1) + self.spnMaxSuggestions.setFont(font) + self.spnMaxSuggestions.setProperty("value", 10) + self.spnMaxSuggestions.setObjectName("spnMaxSuggestions") + self.gridLayout_7.addWidget(self.spnMaxSuggestions, 0, 1, 1, 1) + spacerItem8 = QtGui.QSpacerItem(128, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout_7.addItem(spacerItem8, 0, 2, 1, 1) + self.gridLayout_14.addLayout(self.gridLayout_7, 2, 0, 1, 1) self.gridLayout_8 = QtGui.QGridLayout() self.gridLayout_8.setObjectName("gridLayout_8") self.chkInstant = QtGui.QGroupBox(self.TM_Glossary ) @@ -925,7 +925,7 @@ self.toolBox = QtGui.QToolBox(self.page) self.toolBox.setObjectName("toolBox") self.page_7 = QtGui.QWidget() - self.page_7.setGeometry(QtCore.QRect(0, 0, 180, 84)) + self.page_7.setGeometry(QtCore.QRect(0, 0, 813, 191)) self.page_7.setObjectName("page_7") self.gridLayout_16 = QtGui.QGridLayout(self.page_7) self.gridLayout_16.setObjectName("gridLayout_16") @@ -959,7 +959,7 @@ self.gridLayout_16.addItem(spacerItem16, 2, 1, 1, 1) self.toolBox.addItem(self.page_7, "") self.page_4 = QtGui.QWidget() - self.page_4.setGeometry(QtCore.QRect(0, 0, 321, 270)) + self.page_4.setGeometry(QtCore.QRect(0, -107, 798, 298)) self.page_4.setObjectName("page_4") self.verticalLayout_5 = QtGui.QVBoxLayout(self.page_4) self.verticalLayout_5.setObjectName("verticalLayout_5") @@ -992,9 +992,12 @@ self.verticalLayout_5.addWidget(self.chkTab) spacerItem17 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_5.addItem(spacerItem17) + self.chkInLine = QtGui.QCheckBox(self.page_4) + self.chkInLine.setObjectName("chkInLine") + self.verticalLayout_5.addWidget(self.chkInLine) self.toolBox.addItem(self.page_4, "") self.page_6 = QtGui.QWidget() - self.page_6.setGeometry(QtCore.QRect(0, 0, 262, 178)) + self.page_6.setGeometry(QtCore.QRect(0, 0, 813, 191)) self.page_6.setObjectName("page_6") self.gridLayout_3 = QtGui.QGridLayout(self.page_6) self.gridLayout_3.setObjectName("gridLayout_3") @@ -1041,7 +1044,7 @@ self.gridLayout_3.addItem(spacerItem18, 5, 1, 1, 1) self.toolBox.addItem(self.page_6, "") self.page_5 = QtGui.QWidget() - self.page_5.setGeometry(QtCore.QRect(0, 0, 174, 277)) + self.page_5.setGeometry(QtCore.QRect(0, 0, 798, 277)) self.page_5.setObjectName("page_5") self.gridLayout = QtGui.QGridLayout(self.page_5) self.gridLayout.setObjectName("gridLayout") @@ -1101,7 +1104,7 @@ self.gridLayout.addItem(spacerItem19, 8, 1, 1, 1) self.toolBox.addItem(self.page_5, "") self.page_15 = QtGui.QWidget() - self.page_15.setGeometry(QtCore.QRect(0, 0, 306, 130)) + self.page_15.setGeometry(QtCore.QRect(0, 0, 813, 191)) self.page_15.setObjectName("page_15") self.verticalLayout_3 = QtGui.QVBoxLayout(self.page_15) self.verticalLayout_3.setObjectName("verticalLayout_3") @@ -1121,7 +1124,7 @@ self.verticalLayout_3.addItem(spacerItem20) self.toolBox.addItem(self.page_15, "") self.page_16 = QtGui.QWidget() - self.page_16.setGeometry(QtCore.QRect(0, 0, 311, 214)) + self.page_16.setGeometry(QtCore.QRect(0, 0, 798, 214)) self.page_16.setObjectName("page_16") self.verticalLayout_4 = QtGui.QVBoxLayout(self.page_16) self.verticalLayout_4.setObjectName("verticalLayout_4") @@ -1152,7 +1155,7 @@ self.verticalLayout_4.addItem(spacerItem21) self.toolBox.addItem(self.page_16, "") self.page_17 = QtGui.QWidget() - self.page_17.setGeometry(QtCore.QRect(0, 0, 208, 140)) + self.page_17.setGeometry(QtCore.QRect(0, 0, 813, 191)) self.page_17.setObjectName("page_17") self.gridLayout_2 = QtGui.QGridLayout(self.page_17) self.gridLayout_2.setObjectName("gridLayout_2") @@ -1214,8 +1217,8 @@ self.gridLayout_4.addWidget(self.stackedWidget, 0, 1, 1, 1) self.retranslateUi(frmPreference) - self.stackedWidget.setCurrentIndex(2) - self.toolBox.setCurrentIndex(2) + self.stackedWidget.setCurrentIndex(8) + self.toolBox.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(frmPreference) frmPreference.setTabOrder(self.okButton, self.cancelButton) frmPreference.setTabOrder(self.cancelButton, self.listWidget) @@ -1329,7 +1332,6 @@ "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:600; font-style:normal;\">\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'DejaVu Sans\';\">Options for Applying Translation Memory (TM)</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.label_16.setText(QtGui.QApplication.translate("frmPreference", "Maximum number of suggestions for each message", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox.setToolTip(QtGui.QApplication.translate("frmPreference", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" @@ -1337,10 +1339,6 @@ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:400;\">File TM looks at all the possible suggestions for all untranslated messages in the current file at once (and also for fuzzy messages if you select the appropriate check box below), and stores the information in the XLIFF file (or the PO file, but less information can be stored). </span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:400;\">This information can then be used by the WordForge editor without having to consult TM every time.</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox.setTitle(QtGui.QApplication.translate("frmPreference", "File TM", None, QtGui.QApplication.UnicodeUTF8)) - self.chkTargetInclusion.setText(QtGui.QApplication.translate("frmPreference", "Include suggestions directly in the translation if match is equal or over", None, QtGui.QApplication.UnicodeUTF8)) - self.spnTarget.setToolTip(QtGui.QApplication.translate("frmPreference", "100% = identical source", None, QtGui.QApplication.UnicodeUTF8)) - self.spnTarget.setSuffix(QtGui.QApplication.translate("frmPreference", "%", None, QtGui.QApplication.UnicodeUTF8)) - self.chbMarkStringAsFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Mark messages as fuzzy if 100% match", None, QtGui.QApplication.UnicodeUTF8)) self.chkAddSuggestions.setTitle(QtGui.QApplication.translate("frmPreference", "Add suggestions of alternative translations to XLIFF files", None, QtGui.QApplication.UnicodeUTF8)) self.label_20.setText(QtGui.QApplication.translate("frmPreference", "Add suggestion if match is between ", None, QtGui.QApplication.UnicodeUTF8)) self.spnMin.setSuffix(QtGui.QApplication.translate("frmPreference", "%", None, QtGui.QApplication.UnicodeUTF8)) @@ -1348,11 +1346,16 @@ self.chkEliminateIdentical.setText(QtGui.QApplication.translate("frmPreference", "Eliminate identical suggestions (do not show me the same suggestions twice)", None, QtGui.QApplication.UnicodeUTF8)) self.chkGLb4TM.setText(QtGui.QApplication.translate("frmPreference", "If a message is a single glossary entry, translate from glossary and not from TM.", None, QtGui.QApplication.UnicodeUTF8)) self.FuzzyGLb4TM.setText(QtGui.QApplication.translate("frmPreference", "Mark as fuzzy if the message matches with the glossary entry by 100%", None, QtGui.QApplication.UnicodeUTF8)) + self.chkIncludeFuzzy.setWhatsThis(QtGui.QApplication.translate("frmPreference", "<h3>Ignore Fuzzy Strings</h3> If this option is checked, the fuzzy string will not be searching for from the Translation Memory.", None, QtGui.QApplication.UnicodeUTF8)) + self.chkIncludeFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Propose suggestions for fuzzy messages (in addition to suggestion for untranslated messages)", None, QtGui.QApplication.UnicodeUTF8)) + self.chbMarkStringAsFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Mark messages as fuzzy if 100% match", None, QtGui.QApplication.UnicodeUTF8)) + self.chkTargetInclusion.setText(QtGui.QApplication.translate("frmPreference", "Include suggestions directly in the translation if match is equal or over", None, QtGui.QApplication.UnicodeUTF8)) + self.spnTarget.setToolTip(QtGui.QApplication.translate("frmPreference", "100% = identical source", None, QtGui.QApplication.UnicodeUTF8)) + self.spnTarget.setSuffix(QtGui.QApplication.translate("frmPreference", "%", None, QtGui.QApplication.UnicodeUTF8)) self.label_10.setText(QtGui.QApplication.translate("frmPreference", "characters will be considered.", None, QtGui.QApplication.UnicodeUTF8)) self.spnMaxLen.setToolTip(QtGui.QApplication.translate("frmPreference", "If the message has more than this number of characters, the rest of the character will be considered to be identical. A higher number increases the accuracy of the search, but makes it slower.", None, QtGui.QApplication.UnicodeUTF8)) self.label_17.setText(QtGui.QApplication.translate("frmPreference", "When calculating the percentage match of a message, only the first ", None, QtGui.QApplication.UnicodeUTF8)) - self.chkIncludeFuzzy.setWhatsThis(QtGui.QApplication.translate("frmPreference", "<h3>Ignore Fuzzy Strings</h3> If this option is checked, the fuzzy string will not be searching for from the Translation Memory.", None, QtGui.QApplication.UnicodeUTF8)) - self.chkIncludeFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Propose suggestions for fuzzy messages (in addition to suggestion for untranslated messages)", None, QtGui.QApplication.UnicodeUTF8)) + self.label_16.setText(QtGui.QApplication.translate("frmPreference", "Maximum number of suggestions for each message", None, QtGui.QApplication.UnicodeUTF8)) self.chkInstant.setToolTip(QtGui.QApplication.translate("frmPreference", "Instant Message TM looks up suggestions for a given message in real time, when that message is selected for translation. As this takes a few seconds, it sometimes gives the impression that the program is slow.", None, QtGui.QApplication.UnicodeUTF8)) self.chkInstant.setTitle(QtGui.QApplication.translate("frmPreference", "Enable Instant Message TM", None, QtGui.QApplication.UnicodeUTF8)) self.page_2.setToolTip(QtGui.QApplication.translate("frmPreference", "When the use of glossaries is enabled - and a glossary is present - \n" @@ -1438,6 +1441,7 @@ self.chkOption.setText(QtGui.QApplication.translate("frmPreference", "Preserve --options in the translation", None, QtGui.QApplication.UnicodeUTF8)) self.chkEscape.setText(QtGui.QApplication.translate("frmPreference", "Preserve \\Escapes in the \\t translation \\n", None, QtGui.QApplication.UnicodeUTF8)) self.chkTab.setText(QtGui.QApplication.translate("frmPreference", "Preserve \\t tabs in the \\t translation", None, QtGui.QApplication.UnicodeUTF8)) + self.chkInLine.setText(QtGui.QApplication.translate("frmPreference", "Preserve inline tags in the translation", None, QtGui.QApplication.UnicodeUTF8)) self.toolBox.setItemText(self.toolBox.indexOf(self.page_4), QtGui.QApplication.translate("frmPreference", "Preserve in the Translation", None, QtGui.QApplication.UnicodeUTF8)) self.chkGlossary.setText(QtGui.QApplication.translate("frmPreference", "Enable", None, QtGui.QApplication.UnicodeUTF8)) self.label_49.setText(QtGui.QApplication.translate("frmPreference", "General Ignore last", None, QtGui.QApplication.UnicodeUTF8)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-07-05 06:26:18
|
Revision: 1334 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1334&view=rev Author: enayet05 Date: 2011-07-05 06:26:12 +0000 (Tue, 05 Jul 2011) Log Message: ----------- Commited by Enayet to fix bug related to inline tags display Modified Paths: -------------- branches/wordforge0.8/WordForge/translate/storage/lisa.py Modified: branches/wordforge0.8/WordForge/translate/storage/lisa.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-07-04 06:52:44 UTC (rev 1333) +++ branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-07-05 06:26:12 UTC (rev 1334) @@ -442,7 +442,7 @@ previousIndex=0 indexOftext=0 originalText=self.inline - for i in globalClass.CurrentinlinetextLIst: + for i in globalClass.inlinetextLIst: inlineText=i.split(".....")[0] indexOftext=originalText.find(inlineText) if indexOftext>=0: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-07-04 06:52:50
|
Revision: 1333 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1333&view=rev Author: enayet05 Date: 2011-07-04 06:52:44 +0000 (Mon, 04 Jul 2011) Log Message: ----------- Commited by Enayet to set default inline style. Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py Modified: branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-07-04 06:33:22 UTC (rev 1332) +++ branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-07-04 06:52:44 UTC (rev 1333) @@ -511,7 +511,7 @@ self.connect(self.ui.actionFull_tagid, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) self.connect(self.ui.actionFull, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) self.connect(self.ui.actionMinimal, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) - inlineList = World.settings.value("inlineTagList", QtCore.QVariant(["false", "true", "false"])).toStringList() + inlineList = World.settings.value("inlineTagList", QtCore.QVariant(["true", "false", "false"])).toStringList() if inlineList[0]=="false": self.ui.actionFull_tagid.setChecked(False) else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-07-04 06:33:28
|
Revision: 1332 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1332&view=rev Author: enayet05 Date: 2011-07-04 06:33:22 +0000 (Mon, 04 Jul 2011) Log Message: ----------- Commited by Enayet to fixed TM Creation fails Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py Modified: branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py 2011-06-21 11:47:37 UTC (rev 1331) +++ branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py 2011-07-04 06:33:22 UTC (rev 1332) @@ -350,6 +350,10 @@ create matcher, start a timer for extend tm. """ self.lazyInit() + if not self.targetLanguageCode: + self.loadSettings() + self.targetLanguageCode = self.tmPrefernce.striplangcontryname(self.ui.tmsettingtargetlang.currentText(), self.ui.tmsettingtargetcontry.currentText()) + globalClass.TMGLStargetLanguageCode=self.targetLanguageCode # save some settings if (self.section == World.settingModeTM): World.settings.setValue("TMTargetLanguage", QtCore.QVariant(self.targetLanguageCode)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adi...@us...> - 2011-06-21 11:47:43
|
Revision: 1331 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1331&view=rev Author: aditibarua Date: 2011-06-21 11:47:37 +0000 (Tue, 21 Jun 2011) Log Message: ----------- inline support Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py Modified: branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-06-21 11:34:39 UTC (rev 1330) +++ branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-06-21 11:47:37 UTC (rev 1331) @@ -18,7 +18,6 @@ # Aditi Barua(ad...@an...) # Asheq Hamid(as...@an...) # Md. Rezwan Shahid(re...@an...) -# Goutom Roy(go...@an...) # Md. Enayet Ullah(en...@an...) # This module is working on the main windows of Editor @@ -507,7 +506,24 @@ #action showing invisible character self.connect(self.ui.actionShow_Nonprinting_Char, QtCore.SIGNAL("toggled(bool)"), self.dockOverview.shownonprintChar) - + + #action showing inline tag + self.connect(self.ui.actionFull_tagid, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) + self.connect(self.ui.actionFull, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) + self.connect(self.ui.actionMinimal, QtCore.SIGNAL("toggled(bool)"), self.setInlineTagOption) + inlineList = World.settings.value("inlineTagList", QtCore.QVariant(["false", "true", "false"])).toStringList() + if inlineList[0]=="false": + self.ui.actionFull_tagid.setChecked(False) + else: + self.ui.actionFull_tagid.setChecked(True) + if inlineList[1]=="false": + self.ui.actionFull.setChecked(False) + else: + self.ui.actionFull.setChecked(True) + if inlineList[2]=="false": + self.ui.actionMinimal.setChecked(False) + else: + self.ui.actionMinimal.setChecked(True) self.applySettings() # if World.WF_debug: @@ -559,6 +575,37 @@ # current language # self.curLanguage =curLanguage(self) + def setInlineTagOption(self, bool): + inlineflags=[] + if self.sender()==self.ui.actionFull_tagid and self.sender().isChecked(): + World.settings.setValue("inlineTag", QtCore.QVariant("fullTagid")) + self.ui.actionFull.setChecked(False) + self.ui.actionMinimal.setChecked(False) + globalClass.InlinetagMode="fullTagid" + self.dockTUview.ui.txtSource.setPlainText(unicode(globalClass.fullinlinewithid)) + self.dockTUview.ui.txtTarget.setPlainText(unicode(globalClass.targetFullId)) + + if self.sender()==self.ui.actionFull and self.sender().isChecked(): + World.settings.setValue("inlineTag", QtCore.QVariant("full")) + self.ui.actionFull_tagid.setChecked(False) + self.ui.actionMinimal.setChecked(False) + globalClass.InlinetagMode="full" + self.dockTUview.ui.txtSource.setPlainText(unicode(globalClass.full)) + self.dockTUview.ui.txtTarget.setPlainText(unicode(globalClass.targetFull)) + + if self.sender()==self.ui.actionMinimal and self.sender().isChecked(): + World.settings.setValue("inlineTag", QtCore.QVariant("minimal")) + self.ui.actionFull.setChecked(False) + self.ui.actionFull_tagid.setChecked(False) + globalClass.InlinetagMode="minimal" + self.dockTUview.ui.txtSource.setPlainText(unicode(globalClass.miniinline)) + self.dockTUview.ui.txtTarget.setPlainText(unicode(globalClass.targetMini)) + + inlineflags.append(self.ui.actionFull_tagid.isChecked()) + inlineflags.append(self.ui.actionFull.isChecked()) + inlineflags.append(self.ui.actionMinimal.isChecked()) + World.settings.setValue("inlineTagList", QtCore.QVariant(inlineflags)) + def uisetshortcut(self, path, file): # First, read the shortcut.ini file to get the section and then options # @@ -1203,7 +1250,7 @@ print "Enter focusChanged in Class MainWindow" if (oldWidget): self.disconnect(oldWidget, QtCore.SIGNAL("copyAvailable(bool)"), self.enableCopyCut) - self.disconnect(oldWidget, QtCore.SIGNAL("undoAvailable(bool)"), self.enableUndo) +# self.disconnect(oldWidget, QtCore.SIGNAL("undoAvailable(bool)"), self.enableUndo) self.disconnect(oldWidget, QtCore.SIGNAL("redoAvailable(bool)"), self.enableRedo) # cut, copy and paste in oldWidget if (callable(getattr(oldWidget, "cut", None))): @@ -1216,12 +1263,12 @@ self.disconnect(self.ui.actionPaste, QtCore.SIGNAL("triggered()"), oldWidget, QtCore.SLOT("paste()")) # undo, redo and selectAll in oldWidget if (callable(getattr(oldWidget, "document", None))): - self.disconnect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("undo()")) +# self.disconnect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("undo()")) self.disconnect(self.ui.actionRedo, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("redo()")) if (newWidget): self.connect(newWidget, QtCore.SIGNAL("copyAvailable(bool)"), self.enableCopyCut) - self.connect(newWidget, QtCore.SIGNAL("undoAvailable(bool)"), self.enableUndo) +# self.connect(newWidget, QtCore.SIGNAL("undoAvailable(bool)"), self.enableUndo) self.connect(newWidget, QtCore.SIGNAL("redoAvailable(bool)"), self.enableRedo) # cut, copy and paste in newWidget if (callable(getattr(newWidget, "cut", None))): @@ -1249,12 +1296,12 @@ if (callable(getattr(newWidget, "document", None))): undoAvailable = newWidget.document().isUndoAvailable() redoAvailable = newWidget.document().isRedoAvailable() - self.enableUndo(undoAvailable) +# self.enableUndo(undoAvailable) self.enableRedo(redoAvailable) - self.connect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("undo()")) +# self.connect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("undo()")) self.connect(self.ui.actionRedo, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("redo()")) else: - self.enableUndo(False) +# self.enableUndo(False) self.enableRedo(False) def openFile(self, filename): @@ -1388,6 +1435,7 @@ self.ui.actionError_Checking.setEnabled(value) self.ui.actionSearchErrors.setEnabled(value) self.ui.actionShow_Nonprinting_Char.setEnabled(value) + self.ui.menuInline_Tags.setEnabled(value) if self.ui.actionError_Checking.isChecked(): globalClass.errorCheckEnableFlag = 1 else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <adi...@us...> - 2011-06-21 11:34:50
|
Revision: 1330 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1330&view=rev Author: aditibarua Date: 2011-06-21 11:34:39 +0000 (Tue, 21 Jun 2011) Log Message: ----------- imline support Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/Highlighter.py branches/wordforge0.8/WordForge/Editor/modules/Operator.py branches/wordforge0.8/WordForge/Editor/modules/Overview.py branches/wordforge0.8/WordForge/Editor/modules/Status.py branches/wordforge0.8/WordForge/Editor/modules/TUview.py branches/wordforge0.8/WordForge/Editor/modules/globalClass.py branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py branches/wordforge0.8/WordForge/translate/storage/lisa.py branches/wordforge0.8/WordForge/translate/storage/xliff.py Modified: branches/wordforge0.8/WordForge/Editor/modules/Highlighter.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Highlighter.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/Highlighter.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -16,6 +16,9 @@ # Keo Sophon (keo...@kh...) # San Titvirak (tit...@kh...) # Seth Chanratha (set...@kh...) +# Aditi Barua(ad...@an...) +# Asheq Hamid(as...@an...) +# Md. Rezwan Shahid(re...@an...) from WordForge.Editor.modules import World from PyQt4 import QtCore, QtGui @@ -84,6 +87,15 @@ self.searchString = None self.missed = None + # tag id superscript format + self.superscriptFormat = QtGui.QTextCharFormat() + self.superscriptFormat.setVerticalAlignment(QtGui.QTextCharFormat.AlignSuperScript) + self.superscriptFormat.setBackground(QtCore.Qt.gray) + + # inline tag format + self.inlineTagFormat = QtGui.QTextCharFormat() + self.inlineTagFormat.setForeground(QtCore.Qt.darkMagenta) + def highlightBlock(self, text): """ highlight the text according to the self.expression @@ -186,31 +198,88 @@ else: tagIndex = -1 - #start of code by Aditi - + +#start of code by Aditi # highlight variable varIndex = -1 matchObj = self.varExpression.search(unicode(text),0) if matchObj: - varIndex = matchObj.start() + varIndex = matchObj.start() while (varIndex >= 0): if matchObj: matchRange = matchObj.span() length = matchRange[1] - matchRange[0] self.setFormat(varIndex, length, self.varFormat) - matchObj = self.varExpression.search(unicode(text),varIndex + length) if matchObj: varIndex = matchObj.start() else: varIndex = -1 + +#highlight tag id + if globalClass.CurrentHighlight: + superIndex = -1 + starthighlightlen=0 + previousIndex=0 + uiText=unicode(text) + cursorterm="–" + term1 = cursorterm.encode("utf-8") + for tagtext in globalClass.CurrentinlinetextLIst: #['A Short Title', '1'] + lst=tagtext.split(".....") + tag=unicode(lst[0]) + id=lst[1] + lenID=len(id) + lenofText=len(tag) + indexOftext=str(uiText).find(tag) + temptext=unicode("«")+id +unicode("»")+id+tag+ unicode("«")+id +unicode("»")+id + if temptext not in uiText: + temptext="" + if indexOftext>=0: + starthighlightlen=lenofText +indexOftext + try: + if globalClass.tagstartingPoint[str(text)][indexOftext +previousIndex]: + pass + except: + globalClass.tagstartingPoint[str(text)][indexOftext +previousIndex] = tag + globalClass.tagendPoint[str(text)][indexOftext +previousIndex] = indexOftext +previousIndex+len(tag) + globalClass.tagID[str(text)][indexOftext +previousIndex] = id + if not temptext: + self.setFormat(starthighlightlen +previousIndex,lenID, self.superscriptFormat) + uiText=uiText[starthighlightlen+lenID:len(uiText)] + previousIndex=previousIndex+starthighlightlen +lenID + else: + lenof_inside_ID=len(unicode("«")+id +unicode("»")) + startindex= indexOftext-1+previousIndex + endindex=starthighlightlen+lenof_inside_ID+previousIndex + self.setFormat(startindex,lenID, self.superscriptFormat) + self.setFormat(endindex,lenID, self.superscriptFormat) + previousIndex=previousIndex+starthighlightlen+lenof_inside_ID + uiText=uiText[starthighlightlen+lenof_inside_ID:len(uiText)] + +#highlight inline tag + starthighlightlen=0 + previousIndex=0 + indexOftext=0 + uiTextInline=unicode(text) + if not globalClass.CurrentValidtaglist: + globalClass.CurrentValidtaglist=globalClass.Validtaglist + for tagtext in globalClass.CurrentValidtaglist: + tag=unicode(tagtext.split(".....")[0]) + indexOftext=str(uiTextInline).find(tag) + if indexOftext>=0: + starthighlightlen=len(tag) +indexOftext + self.setFormat(indexOftext +previousIndex , len(tag), self.inlineTagFormat) + uiTextInline=uiTextInline[starthighlightlen:len(uiTextInline)] + previousIndex=previousIndex+starthighlightlen + + #end of code modification for highlighting variable correctly. # Highlight escapes escapeIndex = -1 matchObj = self.escapeExpression.search(unicode(text),0) if matchObj: escapeIndex = matchObj.start() - + while (escapeIndex >= 0): # highlight tag and variable if matchObj: Modified: branches/wordforge0.8/WordForge/Editor/modules/Operator.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Operator.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/Operator.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -48,7 +48,7 @@ import enchant from threading import Thread - +# reload(sys) sys.setdefaultencoding("utf-8") @@ -2518,6 +2518,7 @@ def run(self): # This function is called when the thread method start() is complete. + if globalClass.endPuncDict: if globalClass.endPuncDict['accelerators'] != 'False' and globalClass.endPuncDict[globalClass.endPuncDict['accelerators']] in self.word: if len(self.word)>2: Modified: branches/wordforge0.8/WordForge/Editor/modules/Overview.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Overview.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/Overview.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -399,7 +399,8 @@ row = self.ui.tableOverview.row(targetItem) if (targetItem and self.unit): self.targetBeforeEdit = self.unit.target - targetItem.setText(self.targetBeforeEdit) + if self.targetBeforeEdit: + targetItem.setText(self.targetBeforeEdit) def keyReleaseEvent(self, event): # This event is called automatically when a key release occurs. @@ -660,9 +661,7 @@ highlight the table's row, mark comment icon, mark state icon, and set the target text according to unit. @param unit: unit class - """ -# print "current row", self.ui.tableOverview.item(self.ui.tableOverview.currentRow(), 1).text() -# + """ currentError='' if (not unit) or (not hasattr(unit, "x_editor_tableItem")): Modified: branches/wordforge0.8/WordForge/Editor/modules/Status.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Status.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/Status.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -16,6 +16,10 @@ # Keo Sophon (keo...@kh...) # San Titvirak (tit...@kh...) # Seth Chanratha (set...@kh...) +# Aditi Barua(ad...@an...) +# Asheq Hamid(as...@an...) +# Md. Rezwan Shahid(re...@an...) +# Md. Enayet Ullah(en...@an...) # # This module stores status Modified: branches/wordforge0.8/WordForge/Editor/modules/TUview.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -115,7 +115,8 @@ self.origtarget="" self.prevtarget="" self.cursorTerm="" - + self.completeText="" + self.taglist=[] #Thesaurus self.synonymsList=[] self.Thesaurus_done=False @@ -281,15 +282,12 @@ def popupTerm(self, candidates): """ Popup menu or show tooltip of glossary word's translation. - @param candidates: as list of units. - if World.WF_debug: print "Entering popupterm in class TUview" """ if (not candidates): - return - + return if (self.requestAction == CONTEXTMENU and self.eventObj == self.ui.txtSource or self.eventObj in self.pluralTextBoxList): menu = QtGui.QMenu() text = self.ui.txtTarget.toPlainText() @@ -340,6 +338,18 @@ menuAction = menu.addAction(synonyms) menuAction.setData(QtCore.QVariant(self.synonymsList[i])) self.synonymsList=[] + + if globalClass.CurrentinlinetextLIst: + for tagtext in globalClass.CurrentinlinetextLIst: + inlineText=tagtext.split(".....")[0] + if self.inlineTerm==inlineText: + tag = unicode(self.tr("%s")) % (self.inlineTerm+self.inlineId) + menuAction = menu.addAction(tag) + menuAction.setData(QtCore.QVariant(self.inlineTerm+tagtext.split(".....")[1])) + self.connect(menuAction, QtCore.SIGNAL("triggered()"), self.replaceTranslationInCursor) + break + self.inlineAdded=True + if not connected and definitionAdded: menu.exec_(self.globalPos) @@ -348,6 +358,8 @@ self.disconnect(menuAction, QtCore.SIGNAL("triggered()"), self.copyTranslation) connected = False + + elif (self.requestAction == CONTEXTMENU and self.eventObj == self.ui.txtTarget): menu = QtGui.QMenu() for candidate in candidates: @@ -423,7 +435,6 @@ if World.WF_debug: print "Entering replaceTranslationInCursor in class TUview" """ - if self.isSingle: # if there is no plural text = self.ui.txtTarget.toPlainText() @@ -566,6 +577,7 @@ if World.WF_debug: print "Entering emitTermRequest in class TUview" """ + connected=False menu = QtGui.QMenu() length4 = 0 if (self.eventObj == self.ui.txtSource or self.eventObj == self.ui.txtTarget or self.eventObj in self.pluralTextBoxList): @@ -590,6 +602,7 @@ glossaryWords = self.sourceHighlighter.glossaryWords # wordWithSpace termWithSpace = None + self.inlineTerm=None #take the cursor position and check backwrd for getting the first index of the nearest highlighted portion in the txtSource tempPos = position while (tempPos>=0 and (not termWithSpace)): @@ -604,7 +617,22 @@ except: tempPos -= 1 pass -#end of my code + tempPos=position + tempText=self.eventObj.toPlainText() + while (tempPos>=0 and (not self.inlineTerm)): + try: + if globalClass.tagstartingPoint[str(tempText)][tempPos]: + lastIndex = globalClass.tagendPoint[str(tempText)][tempPos] + if (position<= lastIndex): + self.inlineTerm = unicode(globalClass.tagstartingPoint[str(tempText)][tempPos]) + self.inlineId =unicode(globalClass.tagID[str(tempText)][tempPos]) + self.inlineAdded=False + else: + break + except: + tempPos -= 1 + pass + # wordWithoutSpace withoutSpace = "\\b(\\w+)\\b" wordWithoutSpace = QtCore.QRegExp(withoutSpace) @@ -659,7 +687,7 @@ synonyms = unicode(self.tr("%s")) % (unicode(self.synonymsList[i])) menuAction = menu.addAction(synonyms) menuAction.setData(QtCore.QVariant(self.synonymsList[i])) - menu.exec_(QtGui.QCursor.pos()) + connected=True elif (self.eventObj == self.ui.txtTarget): #thesaurus operation @@ -669,9 +697,24 @@ synonyms = unicode(self.tr("%s")) % (unicode(synonymsList[i])) menuAction = menu.addAction(synonyms) menuAction.setData(QtCore.QVariant(synonymsList[i])) - menu.exec_(QtGui.QCursor.pos()) + connected=True self.getSuggestedWords(termWithoutSpace) + if globalClass.CurrentinlinetextLIst: + for tagtext in globalClass.CurrentinlinetextLIst: + inlineText=tagtext.split(".....")[0] + if self.inlineTerm==inlineText: + tag = unicode(self.tr("%s")) % (self.inlineTerm+self.inlineId) + menuAction = menu.addAction(tag) + menuAction.setData(QtCore.QVariant(self.inlineTerm+tagtext.split(".....")[1])) + self.connect(menuAction, QtCore.SIGNAL("triggered()"), self.replaceTranslationInCursor) + connected=True + break + self.inlineAdded=True + if connected : + menu.exec_(self.globalPos) + connected=False + def setPattern(self, patternList): """ call highlighter.setPattern() @@ -802,6 +845,19 @@ if World.WF_debug: print "Entering updateView in class TUview" """ + self.taglist=[] + self.completeTextlist=[] + self.completeText=globalClass.completeInlineText + globalClass.CurrentInlineText=self.completeText + if "....." in self.completeText: + lst=self.completeText.split(".....") + for tag in lst: + if tag!="": + self.completeTextlist.append(tag) + globalClass.CurrentinlinetextLIst=globalClass.inlinetextLIst + globalClass.CurrentValidtaglist=globalClass.Validtaglist + globalClass.CurrentHighlight=globalClass.highlight + if (not unit): return self.disconnect(self.ui.txtTarget, QtCore.SIGNAL("textChanged()"), self.emitTextChanged) @@ -1172,8 +1228,6 @@ if World.WF_debug: print "Entering setMissSpelledList in class TUview" - - #to avoid Textchanged when just highlighting document self.disconnect(self.ui.txtTarget, QtCore.SIGNAL("textChanged()"), self.emitTextChanged) self.missSpelledList = missSpelledList @@ -1477,7 +1531,6 @@ cursor = self.ui.txtTarget.textCursor() self.cursor = cursor.position() - if self.parent.ui.actionShow_Nonprinting_Char.isChecked(): if activestyle: self.comparetargets(target) Modified: branches/wordforge0.8/WordForge/Editor/modules/globalClass.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/globalClass.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/modules/globalClass.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -6,6 +6,28 @@ #Enayet start preCheck = 0 headerInfoFromFile=[] + CurrentValidtaglist=[] + CurrentinlinetextLIst=[] + CurrentHighlight=False + CurrentInlineText="" + CurrentinlinetexttargetLIst=[] + curinlinetaginTarget = [] + inlinetagstarget = [] + Inlinetextype="" + inlinetextLIst=[] + Validtaglist=[] + miniinline="" + fullinlinewithid="" + highlight=False + completeInlineText="" + full="" + InlinetagMode="full" + targetMini ="" + targetFullId ="" + targetFull ="" + tagstartingPoint=defaultdict(dict) + tagendPoint=defaultdict(dict) + tagID=defaultdict(dict) commentsFromFile="" previousacceptedHeaderDic="" previousacceptedComments="" Modified: branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-06-21 11:34:39 UTC (rev 1330) @@ -51,7 +51,7 @@ <x>0</x> <y>0</y> <width>1000</width> - <height>25</height> + <height>23</height> </rect> </property> <widget class="QMenu" name="menuEdit"> @@ -85,11 +85,23 @@ <property name="title"> <string>&View</string> </property> + <widget class="QMenu" name="menuInline_Tags"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="title"> + <string>Inline Tags</string> + </property> + <addaction name="actionFull_tagid"/> + <addaction name="actionFull"/> + <addaction name="actionMinimal"/> + </widget> <addaction name="actionFilterUntranslated"/> <addaction name="actionFilterFuzzy"/> <addaction name="actionFilterTranslated"/> <addaction name="actionFilterSourceEqualTarget"/> <addaction name="actionShow_Nonprinting_Char"/> + <addaction name="menuInline_Tags"/> </widget> <widget class="QMenu" name="menuGo"> <property name="title"> @@ -1713,6 +1725,30 @@ <bool>true</bool> </property> </action> + <action name="actionFull_tagid"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Full+tagid</string> + </property> + </action> + <action name="actionFull"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Full</string> + </property> + </action> + <action name="actionMinimal"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Minimal</string> + </property> + </action> <action name="actionNext_Untranslated"> <property name="enabled"> <bool>false</bool> @@ -1736,7 +1772,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next untranslated string in the table.</p></body></html></string> </property> <property name="shortcut"> - <string>Ctrl+4</string> + <string>Ctrl+1</string> </property> </action> <action name="actionNext_Fuzzy"> @@ -1762,7 +1798,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next fuzzy string in the table.</p></body></html></string> </property> <property name="shortcut"> - <string>Ctrl+5</string> + <string>Ctrl+2</string> </property> </action> </widget> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/MainEditor.ui' +# Form implementation generated from reading ui file '/home/aditi/trunk_0.8/WordForge/Editor/ui/MainEditor.ui' # -# Created: Wed Apr 20 15:49:00 2011 +# Created: Sun Apr 24 00:11:06 2011 # by: PyQt4 UI code generator 4.7.3 # # WARNING! All changes made in this file will be lost! @@ -31,13 +31,16 @@ self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 25)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 23)) self.menubar.setObjectName("menubar") self.menuEdit = QtGui.QMenu(self.menubar) self.menuEdit.setObjectName("menuEdit") self.menuView = QtGui.QMenu(self.menubar) self.menuView.setEnabled(True) self.menuView.setObjectName("menuView") + self.menuInline_Tags = QtGui.QMenu(self.menuView) + self.menuInline_Tags.setEnabled(False) + self.menuInline_Tags.setObjectName("menuInline_Tags") self.menuGo = QtGui.QMenu(self.menubar) self.menuGo.setObjectName("menuGo") self.menuHelp = QtGui.QMenu(self.menubar) @@ -468,6 +471,15 @@ self.actionConfigureShortcuts.setIcon(icon40) self.actionConfigureShortcuts.setIconVisibleInMenu(True) self.actionConfigureShortcuts.setObjectName("actionConfigureShortcuts") + self.actionFull_tagid = QtGui.QAction(MainWindow) + self.actionFull_tagid.setCheckable(True) + self.actionFull_tagid.setObjectName("actionFull_tagid") + self.actionFull = QtGui.QAction(MainWindow) + self.actionFull.setCheckable(True) + self.actionFull.setObjectName("actionFull") + self.actionMinimal = QtGui.QAction(MainWindow) + self.actionMinimal.setCheckable(True) + self.actionMinimal.setObjectName("actionMinimal") self.actionNext_Untranslated = QtGui.QAction(MainWindow) self.actionNext_Untranslated.setEnabled(False) icon41 = QtGui.QIcon() @@ -499,11 +511,15 @@ self.menuEdit.addAction(self.actionEdit_Header) self.menuEdit.addAction(self.actionErasetarget) self.menuEdit.addAction(self.actionChangeFileLanguage) + self.menuInline_Tags.addAction(self.actionFull_tagid) + self.menuInline_Tags.addAction(self.actionFull) + self.menuInline_Tags.addAction(self.actionMinimal) self.menuView.addAction(self.actionFilterUntranslated) self.menuView.addAction(self.actionFilterFuzzy) self.menuView.addAction(self.actionFilterTranslated) self.menuView.addAction(self.actionFilterSourceEqualTarget) self.menuView.addAction(self.actionShow_Nonprinting_Char) + self.menuView.addAction(self.menuInline_Tags.menuAction()) self.menuGo.addAction(self.actionFirst) self.menuGo.addAction(self.actionPrevious) self.menuGo.addAction(self.actionNext) @@ -599,6 +615,7 @@ MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.menuEdit.setTitle(QtGui.QApplication.translate("MainWindow", "&Edit", None, QtGui.QApplication.UnicodeUTF8)) self.menuView.setTitle(QtGui.QApplication.translate("MainWindow", "&View", None, QtGui.QApplication.UnicodeUTF8)) + self.menuInline_Tags.setTitle(QtGui.QApplication.translate("MainWindow", "Inline Tags", None, QtGui.QApplication.UnicodeUTF8)) self.menuGo.setTitle(QtGui.QApplication.translate("MainWindow", "&Go", None, QtGui.QApplication.UnicodeUTF8)) self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "&Help", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Tool.setTitle(QtGui.QApplication.translate("MainWindow", "&Tools", None, QtGui.QApplication.UnicodeUTF8)) @@ -861,6 +878,9 @@ self.actionConfigureShortcuts.setText(QtGui.QApplication.translate("MainWindow", "Co&nfigure Shortcuts...", None, QtGui.QApplication.UnicodeUTF8)) self.actionConfigureShortcuts.setStatusTip(QtGui.QApplication.translate("MainWindow", "Open Configure Shortcuts Window...", None, QtGui.QApplication.UnicodeUTF8)) self.actionConfigureShortcuts.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Project Manager</h3>Use this to open Configure Shortcuts window.", None, QtGui.QApplication.UnicodeUTF8)) + self.actionFull_tagid.setText(QtGui.QApplication.translate("MainWindow", "Full+tagid", None, QtGui.QApplication.UnicodeUTF8)) + self.actionFull.setText(QtGui.QApplication.translate("MainWindow", "Full", None, QtGui.QApplication.UnicodeUTF8)) + self.actionMinimal.setText(QtGui.QApplication.translate("MainWindow", "Minimal", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Untranslated.setText(QtGui.QApplication.translate("MainWindow", "Next &Untranslated", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Untranslated.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next untranslated message", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Untranslated.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" @@ -869,7 +889,7 @@ "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Untranslated Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next untranslated string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+4", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+1", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setText(QtGui.QApplication.translate("MainWindow", "Next Fu&zzy", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next fuzzy message", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" @@ -878,7 +898,7 @@ "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Fuzzy Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next fuzzy string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+5", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+2", None, QtGui.QApplication.UnicodeUTF8)) import images_rc Modified: branches/wordforge0.8/WordForge/translate/storage/lisa.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -21,6 +21,7 @@ # # Developed by: # Md. Enayet Ullah(en...@an...) +# Aditi Barua(ad...@an...) """Parent class for LISA standards (TMX, TBX, XLIFF)""" @@ -37,9 +38,119 @@ string_xpath = etree.XPath("string()") -def getText(node): +def retrivecompleteText(node): + completeFull="" + inlinewithid=unicode(string_xpath(node)) + for i in range(node.__len__()): + if ("}") in node.getchildren()[i].tag: + lst=node.getchildren()[i].tag.split("}")[1] + else: + lst=node.getchildren()[i].tag.split("}")[0] + opentag="<" +lst + dic=node.getchildren()[i].attrib + for k, v in dic.iteritems(): + opentag = opentag+ " " + k + "=" + "\"" +v + "\"" + closetag = "</" + lst +">" + incompletag=opentag+"/>" + opentag =opentag + ">" + if node.getchildren()[i].text == None: + completeFull=completeFull +"....."+ incompletag + else: + middlePart = node.getchildren()[i].text + completeFull=completeFull +"....."+ opentag +middlePart +closetag + globalClass.completeInlineText= str(completeFull) + +def getText(node, textType): """joins together the text from all the text nodes in the nodelist and their children""" - return unicode(string_xpath(node)) # specific to lxml.etree + completetext="" + inlinewithid=unicode(string_xpath(node)) + incompleteFull="" + fullinlinewithid="" + tagNone=False + miniinline="" + textInsideText=[] + validtag=[] + firstPart= "" + nextPart="" + lst="" + if node.text != None: + firstPart = node.text + for i in range(node.__len__()): + if ("}") in node.getchildren()[i].tag: + lst=node.getchildren()[i].tag.split("}")[1] + else: + lst=node.getchildren()[i].tag.split("}")[0] + if node.getchildren()[i].text == None: + lenofText=0 + if node.getchildren()[i].tail != None: + nextPart = node.getchildren()[i].tail + miniinline=miniinline+firstPart +unicode("«") +node.getchildren()[i].get("id") + unicode("»") +nextPart + fullinlinewithid=fullinlinewithid+firstPart + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +node.getchildren()[i].get("id") +nextPart + incompleteFull=incompleteFull +firstPart + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +nextPart + nextPart="" + firstPart="" + textForHighlight=unicode("«") +node.getchildren()[i].get("id") + unicode("»") + textInsideText.append(textForHighlight + "....."+node.getchildren()[i].get("id")) + if lst!="g" and textForHighlight !=None: + validtag.append( textForHighlight + "....."+node.getchildren()[i].get("id")) + else: + lenofText=len(node.getchildren()[i].text) + indexOftext=inlinewithid.find(node.getchildren()[i].text) + miniinline=miniinline+inlinewithid[0:indexOftext] +unicode("«") +node.getchildren()[i].get("id") + unicode("»") + if lst=="g": + miniinline=miniinline+inlinewithid[0:indexOftext] + inlinewithid[indexOftext:indexOftext+lenofText] +unicode("«") +node.getchildren()[i].get("id") + unicode("»") + if lst!="g": + fullinlinewithid=fullinlinewithid+inlinewithid[0:indexOftext] + inlinewithid[indexOftext:indexOftext+lenofText] +node.getchildren()[i].get("id") + else: + fullinlinewithid= fullinlinewithid+inlinewithid[0:indexOftext] + unicode("«") +node.getchildren()[i].get("id") + unicode("»") +node.getchildren()[i].get("id")+inlinewithid[indexOftext:indexOftext+lenofText] +unicode("«") +node.getchildren()[i].get("id") + unicode("»") +node.getchildren()[i].get("id") + inlinewithid= inlinewithid[indexOftext+lenofText:len(inlinewithid)] + textInsideText.append(node.getchildren()[i].text + "....."+node.getchildren()[i].get("id")) + tagNone=True + if lst!="g" and node.getchildren()[i].text !=None and textType=="source": + validtag.append( node.getchildren()[i].text + "....."+node.getchildren()[i].get("id")) + if textType=="": + textInsideText=globalClass.inlinetextLIst + if tagNone: + miniinline = miniinline +inlinewithid + fullinlinewithid = fullinlinewithid +inlinewithid + if not (textType=="target" and validtag==[] and textInsideText==[]): + globalClass.Validtaglist= validtag + globalClass.inlinetextLIst =textInsideText + globalClass.Inlinetextype= textType + if textType=="target": + globalClass.curinlinetaginTarget=textInsideText + retrivecompleteText(node) + globalClass.targetMini = miniinline + globalClass.targetFullId =fullinlinewithid + globalClass.targetFull =unicode(string_xpath(node)) + if textType=="source": + globalClass.miniinline=miniinline + globalClass.fullinlinewithid=fullinlinewithid + if incompleteFull: + globalClass.full=incompleteFull + else: + globalClass.full=unicode(string_xpath(node)) + if lst=="g": + globalClass.full=miniinline + if miniinline and globalClass.InlinetagMode=="minimal": + if textType: + globalClass.highlight=False + return miniinline + elif fullinlinewithid and globalClass.InlinetagMode=="fullTagid" : + if textType: + globalClass.highlight=True + return fullinlinewithid + else: + if not (textType=="target" and validtag==[]): + if textType: + globalClass.highlight=False + if incompleteFull: + return incompleteFull + elif lst=="g": + return miniinline + else: + return unicode(string_xpath(node)) + # specific to lxml.etree def _findAllMatches(text, re_obj): """generate match objects for all L{re_obj} matches in L{text}.""" @@ -102,8 +213,13 @@ languageNode = "" #The name of the innermost element of this unit type:(term, seg) textNode = "" - + insertdone=False namespace = None + inline="" + currentText="" + lastText="" + inlinetag =False + namespace = None def __init__(self, source, empty=False, **kwargs): """Constructs a unit containing the given source string""" @@ -120,8 +236,8 @@ if len(languageNodes) != len(otherlanguageNodes): return False for i in range(len(languageNodes)): - mytext = self.getNodeText(languageNodes[i]) - othertext = other.getNodeText(otherlanguageNodes[i]) + mytext = self.getNodeText(languageNodes[i], "") + othertext = other.getNodeText(otherlanguageNodes[i], "") if mytext != othertext: #TODO:^ maybe we want to take children and notes into account return False @@ -169,7 +285,7 @@ self.source_dom = self.createlanguageNode(sourcelang, text, "source") def getsource(self): - return self.getNodeText(self.source_dom) + return self.getNodeText(self.source_dom, "source") source = property(getsource, setsource) def set_target_dom(self, dom_node, append=False): @@ -222,6 +338,7 @@ rich_target = property(get_rich_target, set_rich_target) def settarget(self, text, lang='xx', append=False): + self.currentText=text #XXX: we really need the language - can't really be optional, and we # need to propagate it """Sets the "target" string (second language), or alternatively appends to the list""" @@ -229,6 +346,14 @@ #Firstly deal with reinitialising to None or setting to identical string if self.gettarget() == text: return + inlineText=[] + self.inline=text + target=unicode("") + if globalClass.CurrentinlinetextLIst: + for i in globalClass.CurrentinlinetextLIst: + inlineText=i.split(".....")[0] + if inlineText in text: + target=text.replace(inlineText, "") languageNode = self.get_target_dom(None) if not text is None: if languageNode is None: @@ -236,6 +361,11 @@ languageNode = self.createlanguageNode(globalClass.glossaryTargetlang, text, "target") else: languageNode = self.createlanguageNode(lang, text, "target") + if target: + languageNode.text = "" + self.inlinetag =True + else: + self.inlinetag =False self.set_target_dom(languageNode, append) else: if self.textNode: @@ -243,17 +373,21 @@ try: languageNode = terms.next() except StopIteration, e: - pass -# We need to clear the elementtree object before we write on it again. - languageNode.clear() - languageNode.text = text + pass + languageNode.clear() # We need to clear the elementtree object before we write on it again. + if target: + self.inlinetag =True + languageNode.text = "" + else: + self.inlinetag =False + languageNode.text = text else: self.set_target_dom(None, False) def gettarget(self, lang=None): """retrieves the "target" text (second entry), or the entry in the specified language, if it exists""" - return self.getNodeText(self.get_target_dom(lang)) + return self.getNodeText(self.get_target_dom(lang), "target") target = property(gettarget, settarget) def createlanguageNode(self, lang, text, purpose=None): @@ -293,12 +427,102 @@ def getlanguageNodes(self): """Returns a list of all nodes that contain per language information.""" return list(self.xmlelement.iterchildren(self.namespaced(self.languageNode))) - + + def insert_inline_tags_In_Target(self,tag, attribdict, text,targets ): + group = etree.SubElement(targets, self.namespaced(tag)) + for k, v in attribdict.iteritems(): + group.set(k, v) + if text: + group.text = text + + def inlinetagspositionCounting(self): + #inline tags position counting + position =[] + starthighlightlen=0 + previousIndex=0 + indexOftext=0 + originalText=self.inline + for i in globalClass.CurrentinlinetextLIst: + inlineText=i.split(".....")[0] + indexOftext=originalText.find(inlineText) + if indexOftext>=0: + position.append(indexOftext+previousIndex) + starthighlightlen= indexOftext+len(inlineText) +1 + originalText=originalText[starthighlightlen:len(originalText)+1] + previousIndex=previousIndex+starthighlightlen + return position + + def removingPreviousInlineTags(self, languageNodes, index): + # remove previous existing inline tags before inserting tags + for i in range(languageNodes[0].__len__()): + tag=languageNodes[0].getchildren()[i].tag.split("}")[1] + if ("source" not in languageNodes[index].tag) and self.insertdone: + if len(list(languageNodes[index].iterdescendants(self.namespaced(tag))))>0: + inlines = languageNodes[index].iterdescendants(self.namespaced(tag)) + for inline in inlines: + languageNodes[index].remove(inline) + def getlanguageNode(self, lang=None, index=None): """Retrieves a languageNode either by language or by index""" if lang is None and index is None: - raise KeyError("No criterea for languageNode given") - languageNodes = self.getlanguageNodes() + raise KeyError("No criterea for languageNode given") + strip=0 + currentText=self.currentText + position =self.inlinetagspositionCounting() + positionLen=len(position) + languageNodes = self.getlanguageNodes() + if globalClass.currentUnitId and self.inlinetag: + indexbegin=0 + self.removingPreviousInlineTags(languageNodes, index) + for i in range(languageNodes[0].__len__()): + tag=languageNodes[0].getchildren()[i].tag.split("}")[1] + extratest=unicode("«") +languageNodes[0].getchildren()[i].get("id") + unicode("»") +languageNodes[0].getchildren()[i].get("id") + attribdict=languageNodes[0].getchildren()[i].attrib + text=languageNodes[0].getchildren()[i].text + if len(languageNodes)>=index+1: + if extratest in self.inline and text!=None: + strip=8 + elif extratest in self.inline and text==None: + strip=4 + else: + strip=1 + if text==None: + Nonetext="" + else: + Nonetext=text + if ("source" not in languageNodes[index].tag): + if unicode(Nonetext) in unicode(currentText): + self.insert_inline_tags_In_Target(tag, attribdict, Nonetext, languageNodes[index]) + if position: + if i==0 and position[i]>0: + languageNodes[index].text="" + if extratest in self.inline[indexbegin:position[i]]: + languageNodes[index].text=self.inline[indexbegin:position[i]-4] + else: + languageNodes[index].text=self.inline[indexbegin:position[i]] + for j in range(languageNodes[index].__len__()): + if ("}") in languageNodes[index].getchildren()[j].tag: + lst=languageNodes[index].getchildren()[j].tag.split("}")[1] + else: + lst=languageNodes[index].getchildren()[j].tag.split("}")[0] + if tag == lst: + if positionLen ==1: + if languageNodes[index].getchildren()[j].tail==None and (indexbegin+position[i]+len(Nonetext)+strip<len(self.inline)): + text=self.inline[indexbegin+position[i]+len(Nonetext)+strip:len(self.inline)] + languageNodes[index].getchildren()[j].tail="" + languageNodes[index].getchildren()[j].tail=text + break + if positionLen >1: + if languageNodes[index].getchildren()[j].tail==None and (indexbegin+position[i]+len(Nonetext)+strip<position[i+1]): + text=self.inline[indexbegin+position[i]+len(Nonetext)+strip:position[i+1]] + languageNodes[index].getchildren()[j].tail="" + languageNodes[index].getchildren()[j].tail=text + positionLen=positionLen-1 + self.insertdone=True + +# if len(languageNodes)>1: +# print "wind", languageNodes[1] +# getText(languageNodes[1], "") if lang: for set in languageNodes: if getXMLlang(set) == lang: @@ -310,7 +534,7 @@ return languageNodes[index] return None - def getNodeText(self, languageNode): + def getNodeText(self, languageNode, textype): """Retrieves the term from the given languageNode""" if languageNode is None: return None @@ -319,9 +543,9 @@ if terms is None: return None else: - return getText(terms.next()) + return getText(terms.next(), textype) else: - return getText(languageNode) + return getText(languageNode, textype) def __str__(self): return etree.tostring(self.xmlelement, pretty_print=True, encoding='utf-8') Modified: branches/wordforge0.8/WordForge/translate/storage/xliff.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/xliff.py 2011-06-16 04:56:43 UTC (rev 1329) +++ branches/wordforge0.8/WordForge/translate/storage/xliff.py 2011-06-21 11:34:39 UTC (rev 1330) @@ -151,13 +151,13 @@ # the source tag is optional sourcenode = node.iterdescendants(self.namespaced("source")) try: - newunit.source = lisa.getText(sourcenode.next()) + newunit.source = lisa.getText(sourcenode.next(), "") except StopIteration: pass # must have one or more targets targetnode = node.iterdescendants(self.namespaced("target")) - newunit.target = lisa.getText(targetnode.next()) + newunit.target = lisa.getText(targetnode.next(), "") newunit.alttranstype = node.get("alttranstype", "") #TODO: support multiple targets better #TODO: support notes in alt-trans @@ -180,13 +180,13 @@ # the source tag is optional sourcenode = node.iterdescendants(self.namespaced("source")) try: - newunit.source = lisa.getText(sourcenode.next()) + newunit.source = lisa.getText(sourcenode.next(), "") except StopIteration: pass # must have one or more targets targetnode = node.iterdescendants(self.namespaced("target")) - newunit.target = lisa.getText(targetnode.next()) + newunit.target = lisa.getText(targetnode.next(), "") newunit.matchquality = node.get("match-quality") #TODO: support multiple targets better @@ -238,7 +238,7 @@ # TODO: consider using xpath to construct initial_list directly # or to simply get the correct text from the outset (just remember to # check for duplication. - initial_list = [lisa.getText(note) for note in notenodes if self.correctorigin(note, origin)] + initial_list = [lisa.getText(note, "") for note in notenodes if self.correctorigin(note, origin)] # Remove duplicate entries from list: dictset = {} @@ -458,13 +458,13 @@ contexts = group.iterdescendants(self.namespaced("context")) pairs = [] for context in contexts: - pairs.append((context.get("context-type"), lisa.getText(context))) + pairs.append((context.get("context-type"), lisa.getText(context, ""))) groups.append(pairs) #not extend if group.get("purpose") == name: contexts = group.iterdescendants(self.namespaced("context")) pairs = [] for context in contexts: - pairs.append((context.get("context-type"), lisa.getText(context))) + pairs.append((context.get("context-type"), lisa.getText(context, ""))) groups.append(pairs) #not extend return groups @@ -477,7 +477,7 @@ pairs = [] for context in contexts: if context.get("context-type")==name: - pairs.append((context.get("context-type"), lisa.getText(context))) + pairs.append((context.get("context-type"), lisa.getText(context, ""))) groups.append(pairs) #not extend return groups This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-06-16 04:56:49
|
Revision: 1329 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1329&view=rev Author: enayet05 Date: 2011-06-16 04:56:43 +0000 (Thu, 16 Jun 2011) Log Message: ----------- Commited by Enayet to fixed Ticket #30 (new defect):Show non printing chars: Multiple issues when activated . Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/Overview.py branches/wordforge0.8/WordForge/Editor/modules/TUview.py Modified: branches/wordforge0.8/WordForge/Editor/modules/Overview.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Overview.py 2011-05-31 09:57:19 UTC (rev 1328) +++ branches/wordforge0.8/WordForge/Editor/modules/Overview.py 2011-06-16 04:56:43 UTC (rev 1329) @@ -485,8 +485,8 @@ for unit in self.units: textsource=unicode(unit.source) texttarget=unicode(unit.target) -# if row==self.ui.tableOverview.currentRow(): -# texttarget=currtarget + if row==self.ui.tableOverview.currentRow(): + texttarget=unicode((self.ui.tableOverview.item(self.ui.tableOverview.currentRow(), 2)).text()) self.sourcewithnonprint="" self.targetwithnonprint="" orgchar=unicode(" ") @@ -538,8 +538,15 @@ self.targetwithnonprint=self.targetwithnonprint+char else: #bool else - if unicodeno in World.dict_nonprintable.keys(): - orgchar=unichr(unicodeno) + if char in World.lst_invisibleSpecial: + for k, v in World.dict_invisibleSpecial.iteritems(): + if char==v: + name=k + for k, v in World.dict_nonprintable.iteritems(): + if name==v: + decimal=k + orgchar=unichr(decimal) + break self.targetwithnonprint=self.targetwithnonprint+orgchar else: self.targetwithnonprint=self.targetwithnonprint+char Modified: branches/wordforge0.8/WordForge/Editor/modules/TUview.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-05-31 09:57:19 UTC (rev 1328) +++ branches/wordforge0.8/WordForge/Editor/modules/TUview.py 2011-06-16 04:56:43 UTC (rev 1329) @@ -1004,7 +1004,8 @@ if World.WF_debug: print "Entering source2target in class TUview" if self.isSingle: - text = self.ui.txtSource.toPlainText() + unit = self.parent.operator.getCurrentUnit() + text = unit.source self.setTargetText(text) else: currentTab = self.ui.tabWidgetTarget.currentIndex() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tan...@us...> - 2011-05-31 09:57:25
|
Revision: 1328 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1328&view=rev Author: tanzim3911 Date: 2011-05-31 09:57:19 +0000 (Tue, 31 May 2011) Log Message: ----------- All type of XliffMerge Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py Modified: branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-05-31 09:23:04 UTC (rev 1327) +++ branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-05-31 09:57:19 UTC (rev 1328) @@ -14,6 +14,7 @@ # Aditi Barua(ad...@an...) # Asheq Hamid(as...@an...) # Md. Rezwan Shahid(re...@an...) +# Tahmid Tanzim (ta...@an...) from PyQt4.QtCore import * from PyQt4.QtXml import * @@ -50,13 +51,13 @@ self.containers=["source", "seg-source","target","g","bpt","ept","ph","it","mrk"] #immediate containers allowing markup if ( self.OldFileType and self.TemplateFileType) == "plaintext" : - print "sdf2xliff" + #print "sdf2xliff" self.quicksort_ID(self.oldNodeList , 0 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) self.quicksort_ID(self.templateNodeList, 0,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) self.mergeSDF2XLIFF( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) elif ( self.OldFileType and self.TemplateFileType) == "po" : - print "po2xliff" + #print "po2xliff" self.quicksort_Source(self.oldNodeList , 1 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) self.quicksort_Source(self.templateNodeList, 1,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) self.mergePO2XLIFF( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) @@ -333,7 +334,7 @@ OldCounter = 0 NewCounter = 0 - XliffUpdate.main1(self.templateFile, self.oldFile, self.outFile) + """ PO Header Merge -> Keep Old context-group """ if OldNode[OldCounter].toElement().attribute('restype') =="x-gettext-domain-header" and OldNode[OldCounter].toElement().attribute('id') == "1" : oldUnit = OldNode[OldCounter].toElement() @@ -380,7 +381,7 @@ O_subTrans = O_subTrans.nextSiblingElement( "trans-unit" ) print "next trans-unit" T_subTrans = T_subTrans.nextSiblingElement( "trans-unit" ) - + XliffUpdate.main1(self.templateFile, self.oldFile, self.outFile) # """ Single Unit Merge """ # while OldCounter <= lenOldNodeList and NewCounter <= lenNewNodeList: # if OldCounter < lenOldNodeList and NewCounter < lenNewNodeList and OldNode[OldCounter].firstChildElement("source").text() == NewNode[NewCounter].firstChildElement("source").text() : # 100% Sources match Modified: branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py 2011-05-31 09:23:04 UTC (rev 1327) +++ branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py 2011-05-31 09:57:19 UTC (rev 1328) @@ -16,6 +16,7 @@ # San Titvirak (tit...@kh...) # Seth Chanratha (set...@kh...) # Keo Sophon (keo...@kh...) +# Tahmid Tanzim (ta...@an...) # # This module is working on updating the xliff file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tan...@us...> - 2011-05-31 09:23:11
|
Revision: 1327 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1327&view=rev Author: tanzim3911 Date: 2011-05-31 09:23:04 +0000 (Tue, 31 May 2011) Log Message: ----------- All type of XliffMerge and Modified XliffUpdate Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py Added Paths: ----------- branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py Modified: branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-05-10 11:40:21 UTC (rev 1326) +++ branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-05-31 09:23:04 UTC (rev 1327) @@ -1,7 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # script revision: 992813 - # 'xliffmerge.py' is part of Lokalize # (c) 2007-2009 Nick Shaforostoff # Revision 992813 @@ -19,54 +18,101 @@ from PyQt4.QtCore import * from PyQt4.QtXml import * from WordForge.translate.search import lshtein +from WordForge.translate.storage import xliff +from WordForge.Editor.modules import XliffUpdate +from PyQt4 import QtCore, QtGui +from optparse import OptionParser import itertools import math - -import sys +import sys, os sys.setrecursionlimit(10000) -from optparse import OptionParser - class XliffMerge: - def __init__(self, oldFile, outFile, templateFIle): - self.templateFile = templateFIle - self.oldFile = oldFile - self.stickyIds = False - self.outFile = outFile - self.oldNodeList=[] - self.templateNodeList=[] - (self.templateDoc, self.templateNodeList)=self.getDocUnitsList(self.templateFile) - (self.oldDoc, self.oldNodeList)=self.getDocUnitsList(self.oldFile) - self.quicksort_ID(self.oldNodeList , 0 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) - self.quicksort_ID(self.templateNodeList, 0,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) + def __init__(self, oldFile, outFile, templateFile): + self.templateFile = templateFile #New Untranslated File + self.oldFile = oldFile #Old Translated File + self.outFile = outFile #Out Merged File + self.stickyIds = False + self.oldNodeList=[] #Old Translated QDomNodeList() + self.templateNodeList=[] #New Untranslated QDomNodeList() + self.oldPluralGroups=[] + self.templatePluralGroups=[] + self.OldFileType= "" + self.TemplateFileType= "" + self.strings={} + (self.templateDoc, self.templateNodeList , self.TemplateFileType, self.templatePluralGroups)=self.getDocUnitsList(self.templateFile) #Get DocUnitsList from New Untranslated File + (self.oldDoc, self.oldNodeList , self.OldFileType, self.oldPluralGroups)=self.getDocUnitsList(self.oldFile) #Get DocUnitsList from Old Translated File self.INLINE_MARKUP_ELEMENTS=['g', 'x', 'bx', 'ex', 'bpt' , 'ept', 'ph', 'it'] #, 'mrk' -- doesn't have id attribute - + globals()['recentlyRemoved']=[] globals()['lastCommon']=-1 + self.containers=["source", "seg-source","target","g","bpt","ept","ph","it","mrk"] #immediate containers allowing markup - self.merge( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) - - self.containers=["source", "seg-source","target","g","bpt","ept","ph","it","mrk"] #immediate containers allowing markup + if ( self.OldFileType and self.TemplateFileType) == "plaintext" : + print "sdf2xliff" + self.quicksort_ID(self.oldNodeList , 0 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) + self.quicksort_ID(self.templateNodeList, 0,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) + self.mergeSDF2XLIFF( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) + + elif ( self.OldFileType and self.TemplateFileType) == "po" : + print "po2xliff" + self.quicksort_Source(self.oldNodeList , 1 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) + self.quicksort_Source(self.templateNodeList, 1,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) + self.mergePO2XLIFF( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) + else: + QtGui.QMessageBox.information(self,"Warning", "Error File Type! Program exit.", QtGui.QMessageBox.Ok) + for container in self.containers: self.fixWhiteSpaceInList(self.oldDoc.elementsByTagName(container)) - - #if __name__ == "__main__": - #print __name__ + file=QFile(self.outFile) file.open(QIODevice.WriteOnly) stream=QTextStream(file) self.oldDoc.save(stream,2) stream.flush() file.close() - #file.close() def saveElement(self, elem): contents=QString() stream=QTextStream(contents) elem.save(stream,0) return contents + + def partition_Source(self, list, start, end): + pivot = list[end].firstChildElement("source").text() # Partition around the last value + pivotNode = list[end] + bottom = start-1 # Start outside the area to be partitioned + top = end # Ditto + done = 0 + while not done: # Until all elements are partitioned... + while not done: # Until we find an out of place element... + bottom = bottom+1 # ... move the bottom up. + if bottom == top: # If we hit the top... + done = 1 # ... we are done. + break + if list[bottom].firstChildElement("source").text() > pivot: # Is the bottom out of place? + list[top] = list[bottom] # Then put it at the top... + break # ... and start searching from the top. + while not done: # Until we find an out of place element... + top = top-1 # ... move the top down. + if top == bottom: # If we hit the bottom... + done = 1 # ... we are done. + break + if list[top].firstChildElement("source").text() < pivot: # Is the top out of place? + list[bottom] = list[top] # Then put it at the bottom... + break # ...and start searching from the bottom. + list[top] = pivotNode # Put the pivot in its place. + return top # Return the split point + def quicksort_Source(self, list, start, end): #QuickSort + if start < end: # If there are two or more elements... + split = self.partition_Source(list, start, end) # ... partition the sublist... + self.quicksort_Source(list, start, split-1) # ... and sort both halves. + self.quicksort_Source(list, split+1, end) + else: + return + def partition_ID(self, list, start, end): pivot = list[end].toElement().attribute('id') # Partition around the last value pivotNode = list[end] @@ -81,7 +127,6 @@ break if list[bottom].toElement().attribute('id') > pivot: # Is the bottom out of place? list[top] = list[bottom] # Then put it at the top... - #list.insert(top, list[bottom]) # Then put it at the top... break # ... and start searching from the top. while not done: # Until we find an out of place element... top = top-1 # ... move the top down. @@ -90,10 +135,8 @@ break if list[top].toElement().attribute('id') < pivot: # Is the top out of place? list[bottom] = list[top] # Then put it at the bottom... - #list.insert(bottom, list[top]) break # ...and start searching from the bottom. list[top] = pivotNode # Put the pivot in its place. - #list.insert(top, pivot) return top # Return the split point def quicksort_ID(self, list, start, end): #QuickSort @@ -104,41 +147,38 @@ else: return - def elementText(self, parent): - contents=QString() - n=parent.firstChild() - while not n.isNull(): - if n.isCharacterData(): - contents+=n.toCharacterData().data() - elif n.isElement(): - contents+=self.elementText(n) - n=n.nextSibling() - return contents - def getDocUnitsList(self, path): doc=QDomDocument() file=QFile(path) file.open(QIODevice.ReadOnly) reader=QXmlSimpleReader() - #reader.setFeature('http://qtsoftware.com/xml/features/report-whitespace-only-CharData',True) reader.setFeature('http://trolltech.com/xml/features/report-whitespace-only-CharData',True) reader.setFeature('http://xml.org/sax/features/namespaces',False) source=QXmlInputSource(file) doc.setContent(source,reader) file.close() - units=doc.elementsByTagName("trans-unit") + FileType = doc.elementsByTagName("file").at(0).toElement().attribute('datatype') NodeList=[] - for i in range(units.count()): - NodeList.append(units.at(i)) - return (doc, NodeList) + PluralGroups = [] + tempGroupTrans = [] + if FileType == "plaintext": + units = doc.elementsByTagName("trans-unit") + for i in range(units.count()): + unit = units.at(i) + print "unit:", unit + NodeList.append( unit ) - def inlineTags(self, parent): - result=[] - elem=parent.firstChildElement() - while not elem.isNull(): - result.append(elem.tagName()) - elem=elem.nextSiblingElement() - return result + if FileType == "po": + body = doc.elementsByTagName("body") + AllGroup = body.item(0).firstChild() + while not AllGroup.isNull(): + if AllGroup.toElement().hasAttributes() : + if not (AllGroup.toElement().attribute("restype") == "x-gettext-plurals"): + NodeList.append( AllGroup ) + else: + PluralGroups.append( AllGroup ) + AllGroup = AllGroup.nextSibling() + return (doc , NodeList , FileType, PluralGroups ) def getIdsMap(self, parent): result={} @@ -152,10 +192,12 @@ for attrNode in [elem.attributes().item(i) for i in range(elem.attributes().size())]: elem.removeChild(attrNode) - def cloneToAltTrans(self, unitAltToBe, newUnit,match): + def cloneToAltTrans(self, unitAltToBe, newUnit, match): + """cloneToAltTrans methods deals with creating a new Alt-Trans Tag""" altUnit=unitAltToBe.cloneNode().toElement() altUnit.setTagName('alt-trans') - altUnit.setAttribute('match-quality',match) + if match: + altUnit.setAttribute('match-quality',match) altUnit.setAttribute('origin','XLIFFUpgrade') altUnit.setAttribute('alttranstype','proposal') altUnit.removeAttribute('id') @@ -173,33 +215,30 @@ for subAltUnit in subAltUnits: altUnit.removeChild(subAltUnit) return altUnit - - def merge(self, OldNode , NewNode , lenOldNodeList, lenNewNodeList): + + def mergeSDF2XLIFF(self, OldNode , NewNode , lenOldNodeList, lenNewNodeList): + """mergeSDF2XLIFF methods deals with Merging XLIFF File which is converted from SDF File""" OldCounter = 0 NewCounter = 0 - while OldCounter <= lenOldNodeList and NewCounter <= lenNewNodeList: - AltTrans_FLAG = False + while OldCounter <= lenOldNodeList and NewCounter <= lenNewNodeList: #Iterate both old and new file + AltTrans_FLAG = False #Check Alt-Trans Flag if OldCounter < lenOldNodeList and NewCounter < lenNewNodeList and OldNode[OldCounter].toElement().attribute('id') == NewNode[NewCounter].toElement().attribute('id') : #ID Equal globals()['lastCommon'] = OldCounter templateUnit = NewNode[NewCounter].toElement() templateSource = templateUnit.firstChildElement("source") commonUnit = OldNode[OldCounter].toElement() - commonTarget=commonUnit.firstChildElement("target") - commonSource=commonUnit.firstChildElement("source") - targetIdsMap=self.getIdsMap(commonTarget) + commonTarget = commonUnit.firstChildElement("target") + commonSource = commonUnit.firstChildElement("source") + targetIdsMap = self.getIdsMap(commonTarget) equalIds=False completelyEqual=self.saveElement(commonSource)==self.saveElement(templateSource) if not completelyEqual: #Source is Not Equal AltTrans_FLAG = True levenshtein = lshtein.LevenshteinComparer() - #print "old:", commonSource.text(),"**new:", templateSource.text(),"**dist:", levenshtein.similarity(commonSource.text(), templateSource.text()) match_percent = levenshtein.SimilarityPercent(commonSource.text(), templateSource.text()) if match_percent >= 70.0: altUnit=self.cloneToAltTrans(commonUnit,commonUnit, match_percent) commonTarget.setAttribute('state','needs-review-adaptation') - #commonUnit.setAttribute('phase-name',self.phaseName) - #commonTarget.setAttribute('phase-name',self.phaseName) - for markupElement in self.INLINE_MARKUP_ELEMENTS: templateElem=templateSource.firstChildElement(markupElement) commonSourceElem=commonSource.firstChildElement(markupElement) @@ -210,9 +249,7 @@ self.removeAttributes(commonTargetElem) for attrNode in [templateElem.attributes().item(OldCounter).toAttr() for OldCounter in range(templateElem.attributes().size())]: commonTargetElem.setAttribute(attrNode.name(), attrNode.value()) - del targetIdsMap[commonSourceElem.attribute('id')] - templateElem=templateElem.nextSiblingElement(markupElement) commonSourceElem=commonSourceElem.nextSiblingElement(markupElement) @@ -233,6 +270,7 @@ if AltTrans_FLAG: commonUnit.insertAfter(self.oldDoc.importNode(templateUnit.firstChildElement("target").cloneNode(),True), commonTarget) commonUnit.removeChild(commonTarget) + commonUnit.removeAttribute('approved') #now go over context items and see if they are different commonContextGroup=commonUnit.firstChildElement("context-group") templateContextGroup=templateUnit.firstChildElement("context-group") @@ -248,7 +286,6 @@ contextsDiffer=contextsDiffer or not commonContext.isNull() or not templateContext.isNull() templateContextGroup=templateContextGroup.nextSiblingElement("context-group") commonContextGroup=commonContextGroup.nextSiblingElement("context-group") - # check of the number os items in the lists are different contextsDiffer=contextsDiffer or not commonContextGroup.isNull() or not templateContextGroup.isNull() if contextsDiffer: @@ -258,7 +295,6 @@ while not commonContextGroup.isNull(): commonUnit.removeChild(commonContextGroup) commonContextGroup=commonContextGroup.nextSiblingElement("context-group") - templateContextGroup=templateUnit.firstChildElement("context-group") while not templateContextGroup.isNull(): newContextGroup=insertMarker.ownerDocument().importNode(templateContextGroup, True).toElement() @@ -268,87 +304,262 @@ #ids equalIds=equalIds and commonUnit.attribute('id')==templateUnit.attribute('id') if not equalIds and self.stickyIds: - commonUnit.removeAttribute('approved') - #if not commonTarget.attribute('state').contains('review'): commonTarget.setAttribute('state','needs-review-l10n') if not commonTarget.hasChildNodes(): commonTarget.parentNode().removeChild(commonTarget) - #if equalIds and completelyEqual: - #commonTarget.setAttribute('state-qualifier','id-match') commonUnit.setAttribute('id',templateUnit.attribute('id')) OldCounter +=1 NewCounter +=1 - elif NewCounter < lenNewNodeList and (OldCounter == lenOldNodeList or OldNode[OldCounter].toElement().attribute('id') > NewNode[NewCounter].toElement().attribute('id') ): #Old ID greater then New ID - #print "2nd OldCounter:", OldCounter, "NewCounter:", NewCounter,"Source:", NewNode[NewCounter].toElement().firstChildElement("source").text() + elif NewCounter < lenNewNodeList and ( OldCounter == lenOldNodeList or OldNode[ OldCounter ].toElement().attribute('id') > NewNode[ NewCounter ].toElement().attribute('id') ): #Old ID greater then New ID templateUnit=NewNode[NewCounter] - Flag = True - length=len(self.oldNodeList) - for i in range(length): - try: - if self.oldNodeList[i].toElement().attribute('id') == templateUnit.toElement().attribute('id') and self.oldNodeList[i].firstChildElement("source").text() == templateUnit.firstChildElement("source").text(): - Flag = False - #print "I:", i,"#", self.outNodeList[i].toElement().attribute('id'), "**", self.outNodeList[i+1].firstChildElement("source").text() - except: - pass - #print "3rd templateUnit Source:", templateUnit.firstChildElement("source").text(), "##TARGET:", templateUnit.firstChildElement("target").text() - - if Flag: - newUnit=self.oldDoc.importNode(templateUnit, True).toElement() - #newUnit.setAttribute('phase-name',self.phaseName) - - if globals()['lastCommon'] == -1: - #refNode=self.freezedOldUnits[0] - refNode=self.oldNodeList[0] - refNode.parentNode().insertBefore(newUnit, refNode) - else: - #refNode=self.freezedOldUnits[ globals()['lastCommon'] ] - refNode=self.oldNodeList[globals()['lastCommon']] - refNode.parentNode().insertAfter(newUnit, refNode) - globals()['lastCommon']=OldCounter-1 #to preserve order - NewCounter +=1 + newUnit=self.oldDoc.importNode(templateUnit, True).toElement() + + if globals()['lastCommon'] == -1: + refNode=self.oldNodeList[ 0 ] + refNode.parentNode().insertBefore( newUnit , refNode ) + else: + refNode=self.oldNodeList[ globals()['lastCommon'] ] + refNode.parentNode().insertAfter(newUnit, refNode) + globals()['lastCommon'] = OldCounter-1 #to preserve order + NewCounter += 1 + elif OldCounter < lenOldNodeList and (NewCounter == lenNewNodeList or OldNode[OldCounter].toElement().attribute('id') < NewNode[NewCounter].toElement().attribute('id') ) : #Old ID less then New ID - #print "3rd OldCounter:",OldCounter, "NewCounter:", NewCounter,"Source:", OldNode[OldCounter].toElement().firstChildElement("source").text() OldNode[OldCounter].parentNode().removeChild(OldNode[OldCounter]) - OldCounter +=1 + OldCounter += 1 else: break - - def addPhase(self): - VERSION='0.1' - file=self.oldDoc.elementsByTagName("file").at(0).toElement() - header=file.firstChildElement("header") - phasegroup=header.firstChildElement("phase-group") - if phasegroup.isNull(): - phasegroup=self.oldDoc.createElement("phase-group") - #order following XLIFF spec - skl=header.firstChildElement("skl") - if not skl.isNull(): header.insertAfter(phasegroup, skl) - else: header.insertBefore(phasegroup, header.firstChildElement()) - phaseNames={} - phaseElem=phasegroup.firstChildElement("phase") - while not phaseElem.isNull(): - phaseNames[phaseElem.attribute("phase-name")]=True - phaseElem=phaseElem.nextSiblingElement("phase") - i=1 - while 'update-from-template-%d' % i in phaseNames: - i+=1 + + def mergePO2XLIFF(self , OldNode , NewNode , lenOldNodeList , lenNewNodeList ): + + OldCounter = 0 + NewCounter = 0 + XliffUpdate.main1(self.templateFile, self.oldFile, self.outFile) + """ PO Header Merge -> Keep Old context-group """ + if OldNode[OldCounter].toElement().attribute('restype') =="x-gettext-domain-header" and OldNode[OldCounter].toElement().attribute('id') == "1" : + oldUnit = OldNode[OldCounter].toElement() + temUnit = NewNode[NewCounter].toElement() + oldSource = oldUnit.firstChildElement( "source" ) + temSource = temUnit.firstChildElement( "source" ) + oldTarget = oldUnit.firstChildElement( "target" ) + temTarget = temUnit.firstChildElement( "target" ) + oldNote = oldUnit.firstChildElement( "note" ) + temNote = temUnit.firstChildElement( "note" ) + oldSource.parentNode().insertBefore(self.oldDoc.importNode(temSource , True).toElement(), oldSource) + oldSource.parentNode().removeChild(oldSource) + oldTarget.parentNode().insertBefore(self.oldDoc.importNode(temTarget , True).toElement(), oldTarget) + oldTarget.parentNode().removeChild(oldTarget) + oldNote.parentNode().insertBefore(self.oldDoc.importNode(temNote , True).toElement(), oldNote) + oldNote.parentNode().removeChild(oldNote) + OldCounter += 1 + NewCounter += 1 + + """ Plural Unit Merge """ + if self.templatePluralGroups: + oldLength = len( self.oldPluralGroups ) + discardOldGroup = [ ] + addNewGroup = [ ] + for I in range( oldLength ): + discardOldGroup.insert( I , False ) #Doesnot match Old and New group + for T_Index in range( len( self.templatePluralGroups ) ): #traverse each group unit + T_Group = self.templatePluralGroups[ T_Index ] + T_subTrans = T_Group.toElement().firstChildElement( "trans-unit" ) + while not T_subTrans.isNull() : #traverse each sub-transunit + for O_Index in range( oldLength ): + O_Group = self.oldPluralGroups[ O_Index ] + O_subTrans = O_Group.toElement().firstChildElement("trans-unit" ) + while not O_subTrans.isNull( ): + if T_subTrans.toElement( ).firstChildElement( "source" ).text( ) == O_subTrans.toElement( ).firstChildElement( "source" ).text( ): + #print O_Index,"**",T_Index,"**similar source:",T_subTrans.toElement( ).firstChildElement( "source" ).text( ) + O_subTrans.toElement().insertAfter(self.oldDoc.importNode(T_subTrans.toElement().firstChildElement("source").cloneNode(),True), O_subTrans.toElement().firstChildElement("source")) + O_subTrans.toElement().removeChild(O_subTrans.toElement().firstChildElement("source")) + O_subTrans.toElement().insertBefore(self.oldDoc.importNode(T_subTrans.toElement().firstChildElement("source") , True).toElement(), O_subTrans.toElement().firstChildElement("source")) + O_subTrans.toElement().firstChildElement("source").parentNode().removeChild(O_subTrans.toElement().firstChildElement("source")) + else: + print O_Index,"**",T_Index,"**not similar" + + O_subTrans = O_subTrans.nextSiblingElement( "trans-unit" ) + print "next trans-unit" + T_subTrans = T_subTrans.nextSiblingElement( "trans-unit" ) + +# """ Single Unit Merge """ +# while OldCounter <= lenOldNodeList and NewCounter <= lenNewNodeList: +# if OldCounter < lenOldNodeList and NewCounter < lenNewNodeList and OldNode[OldCounter].firstChildElement("source").text() == NewNode[NewCounter].firstChildElement("source").text() : # 100% Sources match +# #print "1st OldSource:", OldNode[OldCounter].toElement().firstChildElement("source").text(),"**newSource:", NewNode[NewCounter].toElement().firstChildElement("source").text() +# globals()['lastCommon'] = OldCounter +# templateUnit = NewNode[NewCounter].toElement() +# templateSource = templateUnit.firstChildElement("source") +# commonUnit = OldNode[OldCounter].toElement() +# commonTarget=commonUnit.firstChildElement("target") +# commonSource=commonUnit.firstChildElement("source") +# print "1st old:", commonSource.text(), "**new:", templateSource.text() +# targetIdsMap=self.getIdsMap(commonTarget) +# equalIds=False +# for markupElement in self.INLINE_MARKUP_ELEMENTS: +# templateElem=templateSource.firstChildElement(markupElement) +# commonSourceElem=commonSource.firstChildElement(markupElement) +# while not templateElem.isNull() and not commonSourceElem.isNull(): +# equalIds=equalIds and commonSourceElem.attribute('id')==templateElem.attribute('id') +# if targetIdsMap.has_key(commonSourceElem.attribute('id')): +# commonTargetElem=targetIdsMap[commonSourceElem.attribute('id')] +# self.removeAttributes(commonTargetElem) +# for attrNode in [templateElem.attributes().item(OldCounter).toAttr() for OldCounter in range(templateElem.attributes().size())]: +# commonTargetElem.setAttribute(attrNode.name(), attrNode.value()) +# del targetIdsMap[commonSourceElem.attribute('id')] +# templateElem=templateElem.nextSiblingElement(markupElement) +# commonSourceElem=commonSourceElem.nextSiblingElement(markupElement) +# # remove inline markup in target which doesn't have corresponding markup in source +# for orphan in targetIdsMap.itervalues(): +# if orphan.tagName()=='mrk': continue +# self.removeAttributes(orphan) +# child=orphan.firstChild() +# while not child.isNull(): +# newChild=child.cloneNode() +# orphan.parentNode().insertAfter(newChild,orphan.previousSibling()) +# child=child.nextSibling() +# orphan.parentNode().removeChild(orphan) +# #copy templates source entirely +# commonUnit.insertAfter(self.oldDoc.importNode(templateSource.cloneNode(),True), commonSource) +# commonUnit.removeChild(commonSource) +# #now go over context items and see if they are different +# commonContextGroup=commonUnit.firstChildElement("context-group") +# templateContextGroup=templateUnit.firstChildElement("context-group") +# contextsDiffer=False +# while not commonContextGroup.isNull() and not templateContextGroup.isNull() and not contextsDiffer: +# commonContext=commonContextGroup.firstChildElement("context") +# templateContext=templateContextGroup.firstChildElement("context") +# while not commonContext.isNull() and not templateContext.isNull() and not contextsDiffer: +# contextsDiffer=(self.saveElement(templateContext)!=self.saveElement(commonContext) ) +# templateContext=templateContext.nextSiblingElement("context") +# commonContext=commonContext.nextSiblingElement("context") +# # check of the number os items in the lists are different +# contextsDiffer=contextsDiffer or not commonContext.isNull() or not templateContext.isNull() +# templateContextGroup=templateContextGroup.nextSiblingElement("context-group") +# commonContextGroup=commonContextGroup.nextSiblingElement("context-group") +# +# # check of the number os items in the lists are different +# contextsDiffer=contextsDiffer or not commonContextGroup.isNull() or not templateContextGroup.isNull() +# if contextsDiffer: +# #print "**contextsDiffer-1**" +# altUnit=self.cloneToAltTrans(commonUnit , commonUnit, 100) +# commonTarget.setAttribute('state','needs-review-adaptation') +# commonUnit.insertAfter(self.oldDoc.importNode(templateUnit.firstChildElement("target").cloneNode(),True), commonTarget) +# commonUnit.removeChild(commonTarget) +# commonUnit.removeAttribute('approved') +# +# commonContextGroup=commonUnit.firstChildElement("context-group") +# insertMarker=commonContextGroup.previousSibling() +# #newUnit=oldDoc.importNode(templateUnit, True).toElement() +# while not commonContextGroup.isNull(): +# #if not (commonContextGroup.attribute('purpose') == "location" and commonContextGroup.attribute('name') == "po-reference"): +# commonUnit.removeChild(commonContextGroup) +# commonContextGroup=commonContextGroup.nextSiblingElement("context-group") +# +# templateContextGroup=templateUnit.firstChildElement("context-group") +# while not templateContextGroup.isNull(): +# newContextGroup=insertMarker.ownerDocument().importNode(templateContextGroup, True).toElement() +# insertMarker=commonUnit.insertAfter(newContextGroup, insertMarker) +# templateContextGroup=templateContextGroup.nextSiblingElement("context-group") +# +# #delete po-reference context-group +# altContextGroup=altUnit.firstChildElement("context-group") +# deleteMarker=altContextGroup.previousSibling() +# while not altContextGroup.isNull(): +# if (altContextGroup.attribute('purpose') == "location" and altContextGroup.attribute('name') == "po-reference"): +# temContextGroup = altContextGroup +# #print "if:", temContextGroup.firstChildElement("context").text() +# altContextGroup = altContextGroup.nextSiblingElement("context-group") +# temContextGroup.parentNode().removeChild(temContextGroup) +# else: +# #print "else:", altContextGroup.firstChildElement("context").text() +# altContextGroup = altContextGroup.nextSiblingElement("context-group") +# #ids +# equalIds=equalIds and commonUnit.attribute('id')==templateUnit.attribute('id') +# if not equalIds and self.stickyIds: +# #commonUnit.removeAttribute('approved') +# #if not commonTarget.attribute('state').contains('review'): +# commonTarget.setAttribute('state','needs-review-l10n') +# if not commonTarget.hasChildNodes(): +# commonTarget.parentNode().removeChild(commonTarget) +# #if equalIds and completelyEqual: +# #commonTarget.setAttribute('state-qualifier','id-match') +# commonUnit.setAttribute('id',templateUnit.attribute('id')) +# OldCounter += 1 +# NewCounter += 1 +# elif NewCounter < lenNewNodeList and (OldCounter == lenOldNodeList or OldNode[OldCounter].firstChildElement("source").text() > NewNode[NewCounter].firstChildElement("source").text() ): # Not 100% Sources match +# print "2nd old:", OldNode[OldCounter].firstChildElement("source").text(), "**new:", NewNode[NewCounter].firstChildElement("source").text() +# templateUnit=NewNode[NewCounter] +# newUnit=self.oldDoc.importNode(templateUnit, True).toElement() +# if globals()['lastCommon'] == -1: +# refNode=self.oldNodeList[1] +# refNode.parentNode().insertBefore(newUnit, refNode) +# else: +# refNode=self.oldNodeList[globals()['lastCommon']] +# refNode.parentNode().insertAfter(newUnit, refNode) +# globals()['lastCommon']=OldCounter-1 #to preserve order +# NewCounter += 1 +# elif OldCounter < lenOldNodeList and (NewCounter == lenNewNodeList or OldNode[OldCounter].firstChildElement("source").text() < NewNode[NewCounter].firstChildElement("source").text() ) : # Not 100% Sources match +# try: +# templateUnit = NewNode[NewCounter].toElement() +# templateSource = templateUnit.firstChildElement("source") +# commonUnit = OldNode[OldCounter].toElement() +# commonTarget=commonUnit.firstChildElement("target") +# commonSource=commonUnit.firstChildElement("source") +# print "3rd old:", commonSource.text(), "**new:", templateSource.text() +# +# #now go over context items and see if they are different +# commonContextGroup=commonUnit.firstChildElement("context-group") +# templateContextGroup=templateUnit.firstChildElement("context-group") +# contextsDiffer=False +# while not commonContextGroup.isNull() and not templateContextGroup.isNull() and not contextsDiffer: +# commonContext=commonContextGroup.firstChildElement("context") +# templateContext=templateContextGroup.firstChildElement("context") +# while not commonContext.isNull() and not templateContext.isNull() and not contextsDiffer: +# contextsDiffer=(self.saveElement(templateContext)!=self.saveElement(commonContext) ) +# templateContext=templateContext.nextSiblingElement("context") +# commonContext=commonContext.nextSiblingElement("context") +# # check of the number os items in the lists are different +# contextsDiffer=contextsDiffer or not commonContext.isNull() or not templateContext.isNull() +# templateContextGroup=templateContextGroup.nextSiblingElement("context-group") +# commonContextGroup=commonContextGroup.nextSiblingElement("context-group") +# +# # check of the number os items in the lists are different +# contextsDiffer=contextsDiffer or not commonContextGroup.isNull() or not templateContextGroup.isNull() +# if contextsDiffer: +# #print "**contextsDiffer-3**" +# OldNode[OldCounter].parentNode().removeChild(OldNode[OldCounter]) +## commonContextGroup=commonUnit.firstChildElement("context-group") +## insertMarker=commonContextGroup.previousSibling() +## #newUnit=oldDoc.importNode(templateUnit, True).toElement() +## while not commonContextGroup.isNull(): +## commonUnit.removeChild(commonContextGroup) +## commonContextGroup=commonContextGroup.nextSiblingElement("context-group") +## templateContextGroup=templateUnit.firstChildElement("context-group") +## while not templateContextGroup.isNull(): +## newContextGroup=insertMarker.ownerDocument().importNode(templateContextGroup, True).toElement() +## insertMarker=commonUnit.insertAfter(newContextGroup, insertMarker) +## templateContextGroup=templateContextGroup.nextSiblingElement("context-group") +# else: +# #print "**contexts NOT Differ-3**" +# altUnit=self.cloneToAltTrans( commonUnit , commonUnit , 300) +# +# commonUnit.insertAfter(self.oldDoc.importNode(templateSource.cloneNode(),True), commonSource) +# commonUnit.removeChild(commonSource) +# commonUnit.removeAttribute('id') +# commonUnit.setAttribute('id',templateUnit.attribute('id')) +# +# commonUnit.insertAfter(self.oldDoc.importNode(templateUnit.firstChildElement("target").cloneNode(),True), commonTarget) +# commonUnit.removeChild(commonTarget) +# commonUnit.removeAttribute('approved') +# NewCounter += 1 +# +# except: +# OldNode[OldCounter].parentNode().removeChild(OldNode[OldCounter]) +# pass +# OldCounter += 1 +# else: +# #print "4th else" +# break - phaseElem=phasegroup.appendChild(self.oldDoc.createElement("phase")).toElement() - phaseElem.setAttribute("phase-name",'update-from-template-%d' % i) - - phaseElem.setAttribute("process-name", 'update-from-template') - phaseElem.setAttribute("tool-id", 'xliffmerge-%s' % VERSION) - phaseElem.setAttribute("date", QDate.currentDate().toString(Qt.ISODate)) - toolElem=header.firstChildElement("tool") - while not toolElem.isNull() and toolElem.attribute("tool-id")!='xliffmerge-%s' % VERSION: - toolElem=toolElem.nextSiblingElement("tool") - if toolElem.isNull(): - toolElem=header.appendChild(self.oldDoc.createElement("tool")).toElement() - toolElem.setAttribute("tool-id",'xliffmerge-%s' % VERSION) - toolElem.setAttribute("tool-name","xliffmerge.py") - toolElem.setAttribute("tool-version",VERSION) - return 'update-from-template-%d' % i - def fixWhiteSpace(self, elem): first=elem.firstChildElement() if not first.previousSibling().isCharacterData(): Added: branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py (rev 0) +++ branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py 2011-05-31 09:23:04 UTC (rev 1327) @@ -0,0 +1,218 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2007 by KhmerOS +# www.khmeros.info +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# See the LICENSE file for more details. +# +# Developed by: +# Hok Kakada (hok...@kh...) +# San Titvirak (tit...@kh...) +# Seth Chanratha (set...@kh...) +# Keo Sophon (keo...@kh...) +# +# This module is working on updating the xliff file. + +"""update XLIFF localization file""" + +import sys, os +from PyQt4 import QtCore, QtGui +class xliffupdate: + def __init__(self): + self.strVersion = "xliffupdate 0.1" + self.usage = """%prog [-i INPUT -t TRANSLATED] [-o OUTPUT]\n +A tool for updating Xliff (.xlf) file, create new file or directory by merging +the old one which is translated with the new one.""" + self.verbos = True + self.fileCount = 0 + self.unitCount = 0 + self.updatedCount = 0 + self.excludeFuzzy = False + self.includeInfo = "" + self.cleanAll = "cleanall" + self.clean = "clean" + + def autoUpdate(self, iFileName, tFileName, oFileName = None): + """ + Update a file or directory. + @param iFileName: untranslated file or directory. + @param tFileName: translated file or directory. + @param oFileName: file or directory. If not specified, it will generate + a name automaticaly. + """ + if (os.path.isfile(iFileName)): + if (not oFileName): + oFileName = self.getAutoName(iFileName, "-merged") + self.updateFile(iFileName, tFileName, oFileName) + elif (os.path.isdir(iFileName)): + if (not oFileName): + oFileName = self.getAutoName(iFileName, "-merged") + + for root, dirs, files in os.walk(iFileName): + translatedRoot = tFileName + outputRoot = oFileName + # file + for file in files: + iFileName = os.path.join(root + os.path.sep + file) + tFileName = os.path.join(translatedRoot + os.path.sep + file) + oFileName = os.path.join(outputRoot + os.path.sep + file) + self.autoUpdate(iFileName, tFileName, oFileName) + # folder + for folder in dirs: + iFileName = os.path.join(root + os.path.sep + folder) + tFileName = os.path.join(translatedRoot + os.path.sep + folder) + oFileName = os.path.join(outputRoot + os.path.sep + folder) + self.autoUpdate(iFileName, tFileName, oFileName) + break + + def updateFile(self, iFileName, tFileName, oFileName): + """ + Update .xlf file, the output file's content will be copied from template + file and translated when exact strings are found in translatedFile. + """ + from WordForge.translate.storage import factory + try: + istore = factory.getobject(iFileName) + tstore = factory.getobject(tFileName) + except Exception, e: + print str(e) + return + + for unit in tstore.units: + if (unit.isfuzzy() and self.excludefuzzy): + continue + self.updateUnit(istore, unit) + + self.fileCount += 1 + self.unitCount += len(istore.units) + # header unit is not count + if (istore.units[0].isheader()): + self.unitCount -= 1 + if (tstore.units[0].isheader()) and (tstore.units[0].target): + self.updatedCount -= 1 + + # create directory if not exists. + self.createDir(oFileName) + + outputFile = open(oFileName, "w") + outputFile.write(str(istore)) + outputFile.close() + return True + + def updateUnit(self, istore, translatedUnit, filename="NoName"): + """ Update unit to newXlf. """ + source = translatedUnit.source + target = translatedUnit.target + unit = istore.findunit(source) + if (unit): + unit.target = target + self.updatedCount += 1 + + if (self.includeInfo == self.cleanAll) or ((self.includeInfo == self.clean) and translatedUnit.istranslated()): + return + + id = translatedUnit.getid() + unit.markapproved(translatedUnit.isapproved()) + if (id == unit.getid()): + unit.addnote(unicode(translatedUnit.getnotes("translator"))) + + translist = translatedUnit.getalttrans() + from WordForge.translate.storage import lisa + if (translist): + for list in translist: + targetTag = list.xmlelement[0] + xmlLang = lisa.getXMLlang(targetTag) + if (xmlLang): + unit.addalttrans(list.target, None, xmlLang) + else: + unit.addalttrans(list.target, "TM Search", None) + return + + def getAutoName(self, inputFile, suffix): + """ Get a filename from input file by changing/adding extention. """ + indexDot = inputFile.rfind(".") + indexSep = inputFile.rfind(os.path.sep) + if (indexDot >= 0) and (indexDot > indexSep): + outputFile = inputFile[:indexDot].rstrip(os.path.sep) + suffix + inputFile[indexDot:] + else: + outputFile = inputFile.rstrip(os.path.sep) + suffix + return outputFile + + def createDir(self, path): + """ Create directory if not exists. """ + path = os.path.dirname(os.path.abspath(path)) + if (not os.path.exists(path)): + i = path.find(os.path.sep) + while (i >= 0): + dirName = path[:i] + if (dirName) and (not os.path.exists(dirName)): + os.mkdir(dirName) + i = path.find(os.path.sep, i + 1) + os.mkdir(path) + +def main1(inputFile, tranlatedFile, outputFile): + from optparse import OptionParser + import sys, os + tool = xliffupdate() + + if (sys.argv[0].endswith("py")): + py = "python " + else: + py = "" + + parser = OptionParser(usage = py + tool.usage, version = tool.strVersion) + parser.add_option("-q", action="store_true", dest="quiet", default=False, + help="do not print updated files and total strings count.") + parser.add_option("-t", dest="tranlatedFile", action="store", type="string", + help="translated .xlf file name or directory.", metavar="TRANSLATED/TEMPLATE", default=None) + parser.add_option("-i", dest="inputFile", action="store", type="string", + help="new .xlf file name or directory.", metavar="INPUT", default=None) + parser.add_option("-o", dest="outputFile", action="store", type="string", + help="write to OUTPUT (file or directory). If not specified, it will create the name base on INPUT by adding suffix -merged.", metavar="OUTPUT", default=None) + + parser.add_option("", "--nofuzzy", dest="excludefuzzy", action="store_true", default=False, help="exclude units marked fuzzy") + + parser.add_option("", "--includeinfo", dest="includeinfo", default="all", type="choice", + choices=["all", "clean", "cleanall"], + help="TYPE: all (copy information from WordForge.translated, fuzzy or untranslated units), clean (copy information from fuzzy or untranslated units), cleanall (information from all kinds of units is not copied)", metavar="TYPE") + + options, args = parser.parse_args() + + if (options.excludefuzzy): + tool.excludefuzzy = True + + tool.includeInfo = options.includeinfo + #print "options.inputFile:",options.inputFile," ** options.tranlatedFile:", options.tranlatedFile + if (options.inputFile and options.tranlatedFile): + if (not os.path.exists(options.inputFile)): + #print "Input file or directory is not existed! Program exit." + QtGui.QMessageBox.information(self,"Warning", "Input file or directory is not existed! Program exit.", QtGui.QMessageBox.Ok) + return + elif (not os.path.exists(options.tranlatedFile)): + #print "Translated file or directory is not existed! Program exit." + QtGui.QMessageBox.information(self,"Warning", "Translated file or directory is not existed! Program exit.", QtGui.QMessageBox.Ok) + return + tool.autoUpdate(inputFile, tranlatedFile, outputFile) + #tool.autoUpdate(options.inputFile, options.tranlatedFile, options.outputFile) + + if (options.quiet): + tool.verbos = False + else: + tool.verbos = True + #print "Start update..." + + if (tool.verbos): + print "" + #print "Summary:" + #print " %d file%s processed." % (tool.fileCount, ((tool.fileCount > 1) and "s") or "") + #print " %d of %d string%s updated." % (tool.updatedCount, tool.unitCount, ((tool.unitCount > 1) and "s") or "") + +if __name__ == '__main__': + main1(inputFile, tranlatedFile, outputFile) + Property changes on: branches/wordforge0.8/WordForge/Editor/modules/XliffUpdate.py ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-05-10 11:40:27
|
Revision: 1326 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1326&view=rev Author: enayet05 Date: 2011-05-10 11:40:21 +0000 (Tue, 10 May 2011) Log Message: ----------- Edited by Enayet for Ticket #38 (new defect): TBX import/export Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/GL2tbx.py branches/wordforge0.8/WordForge/Editor/modules/globalClass.py branches/wordforge0.8/WordForge/translate/search/match.py branches/wordforge0.8/WordForge/translate/storage/lisa.py branches/wordforge0.8/WordForge/translate/storage/tbx.py Modified: branches/wordforge0.8/WordForge/Editor/modules/GL2tbx.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/GL2tbx.py 2011-05-10 09:56:31 UTC (rev 1325) +++ branches/wordforge0.8/WordForge/Editor/modules/GL2tbx.py 2011-05-10 11:40:21 UTC (rev 1326) @@ -19,12 +19,15 @@ # along with translate; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# Developed by: +# Md. Enayet Ullah(en...@an...) """convert from internal glossary to a TBX file""" from WordForge.translate.storage import tbx from WordForge.translate.storage import lisa +from WordForge.Editor.modules.globalClass import globalClass from lxml import etree import os @@ -32,7 +35,10 @@ def convertGL2tbx(aMatcher, targetFile, sourcelanguage="en-US", targetlanguage = "xx" ): """converts internal Glossary (a matcher) to a TBX file""" myTBX = tbx.tbxfile() - + if globalClass.tbxstores: + header = globalClass.tbxstores.addNewheader() + myTBX.addheaderpart(header) + for inunit in aMatcher.candidates.units: source = inunit.source target = inunit.target Modified: branches/wordforge0.8/WordForge/Editor/modules/globalClass.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/globalClass.py 2011-05-10 09:56:31 UTC (rev 1325) +++ branches/wordforge0.8/WordForge/Editor/modules/globalClass.py 2011-05-10 11:40:21 UTC (rev 1326) @@ -13,6 +13,7 @@ glossaryTargetlang = '' glossaryTBXlang = 'en-US' unitContext = '' + tbxstores = None #Enayet end closeFile=False glsDict = defaultdict(dict) Modified: branches/wordforge0.8/WordForge/translate/search/match.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/match.py 2011-05-10 09:56:31 UTC (rev 1325) +++ branches/wordforge0.8/WordForge/translate/search/match.py 2011-05-10 11:40:21 UTC (rev 1326) @@ -18,6 +18,8 @@ # along with translate; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# Developed by: +# Md. Enayet Ullah(en...@an...) """Class to perform translation memory matching from a store of translation units""" @@ -100,7 +102,10 @@ speedup.""" self.existingunits = {} self.candidates = base.TranslationStore() -# print "can", self.candidates + globalClass.tbxstores = None + if isinstance(stores, tbx.tbxfile): + if stores.rootNode == "martif": + globalClass.tbxstores = stores if not isinstance(stores, list): stores = [stores] for store in stores: Modified: branches/wordforge0.8/WordForge/translate/storage/lisa.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-05-10 09:56:31 UTC (rev 1325) +++ branches/wordforge0.8/WordForge/translate/storage/lisa.py 2011-05-10 11:40:21 UTC (rev 1326) @@ -19,6 +19,8 @@ # along with translate; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# Developed by: +# Md. Enayet Ullah(en...@an...) """Parent class for LISA standards (TMX, TBX, XLIFF)""" @@ -394,6 +396,12 @@ newunit = self.UnitClass(source) self.addunit(newunit) return newunit + + def addheaderpart(self, header): + for eachtag in self.document.iter(): + if eachtag.tag == 'martifHeader': + eachtag.remove(eachtag[0]) + eachtag.append(header[0]) def addunit(self, unit, new=True, targetlanguage = None, tmxID = None): unit.namespace = self.namespace Modified: branches/wordforge0.8/WordForge/translate/storage/tbx.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-05-10 09:56:31 UTC (rev 1325) +++ branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-05-10 11:40:21 UTC (rev 1326) @@ -19,6 +19,8 @@ # along with translate; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# Developed by: +# Md. Enayet Ullah(en...@an...) """module for handling TBX glossary files""" @@ -252,8 +254,16 @@ def addheader(self): """Initialise headers with TBX specific things.""" - lisa.setXMLlang(self.document.getroot(), self.sourcelanguage) - + lisa.setXMLlang(self.document.getroot(), self.sourcelanguage)\ + + def addNewheader(self): + """Update headers with TBX specific things.""" + header = None + for eachtag in self.document.iter(): + if eachtag.tag == 'martifHeader': + header = eachtag + return header + def parsestring(cls, storestring): """Parses the string to return the correct file object""" tbx = super(tbxfile, cls).parsestring(storestring) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-05-10 09:56:38
|
Revision: 1325 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1325&view=rev Author: enayet05 Date: 2011-05-10 09:56:31 +0000 (Tue, 10 May 2011) Log Message: ----------- Edited by Enayet for Ticket #33 : TM suggestions window: Bad visualization when there are too many matches Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/ui/Preference.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py Modified: branches/wordforge0.8/WordForge/Editor/ui/Preference.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-05-02 09:46:02 UTC (rev 1324) +++ branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-05-10 09:56:31 UTC (rev 1325) @@ -109,7 +109,7 @@ <number>1</number> </property> <property name="currentIndex"> - <number>4</number> + <number>2</number> </property> <widget class="QWidget" name="personal"> <property name="sizePolicy"> @@ -925,43 +925,50 @@ </property> </widget> </item> + <item row="2" column="0"> + <layout class="QGridLayout" name="gridLayout_7"> + <item row="0" column="0"> + <widget class="QLabel" name="label_16"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Maximum number of suggestions for each message</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="spnMaxSuggestions"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="value"> + <number>10</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>128</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> <item row="3" column="0"> - <widget class="QGroupBox" name="chkInstant"> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="toolTip"> - <string>Instant Message TM looks up suggestions for a given message in real time, when that message is selected for translation. As this takes a few seconds, it sometimes gives the impression that the program is slow.</string> - </property> - <property name="title"> - <string>Enable Instant Message TM</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QGridLayout"/> - </widget> - </item> - <item row="4" column="0"> - <spacer> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>10</height> - </size> - </property> - </spacer> - </item> - <item row="2" column="0"> <widget class="QGroupBox" name="groupBox"> <property name="font"> <font> @@ -981,8 +988,21 @@ <string>File TM</string> </property> <layout class="QGridLayout" name="gridLayout_13"> - <item row="0" column="0" colspan="2"> + <item row="0" column="0" colspan="3"> <layout class="QGridLayout"> + <item row="0" column="0"> + <widget class="QCheckBox" name="chkTargetInclusion"> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="text"> + <string>Include suggestions directly in the translation if match is equal or over</string> + </property> + </widget> + </item> <item row="0" column="1"> <widget class="QSpinBox" name="spnTarget"> <property name="font"> @@ -1015,27 +1035,36 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>10</width> + <width>13</width> <height>21</height> </size> </property> </spacer> </item> - <item row="0" column="0"> - <widget class="QCheckBox" name="chkTargetInclusion"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="text"> - <string>Include suggestions directly in the translation if match is equal or over</string> - </property> - </widget> - </item> </layout> </item> + <item row="1" column="1" colspan="2"> + <widget class="QCheckBox" name="chbMarkStringAsFuzzy"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="text"> + <string>Mark messages as fuzzy if 100% match</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> <item row="2" column="0" colspan="3"> <widget class="QGroupBox" name="chkAddSuggestions"> <property name="enabled"> @@ -1121,46 +1150,7 @@ </property> </spacer> </item> - <item row="1" column="0" colspan="3"> - <widget class="QLabel" name="label_16"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="text"> - <string>Maximum number of suggestions for each message</string> - </property> - </widget> - </item> - <item row="1" column="3"> - <widget class="QSpinBox" name="spnMaxSuggestions"> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="value"> - <number>10</number> - </property> - </widget> - </item> - <item row="1" column="4"> - <spacer> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="2" column="0" colspan="5"> + <item row="1" column="0" colspan="5"> <widget class="QCheckBox" name="chkEliminateIdentical"> <property name="font"> <font> @@ -1176,7 +1166,7 @@ </property> </widget> </item> - <item row="3" column="0" colspan="5"> + <item row="2" column="0" colspan="5"> <widget class="QCheckBox" name="chkGLb4TM"> <property name="text"> <string>If a message is a single glossary entry, translate from glossary and not from TM.</string> @@ -1186,7 +1176,7 @@ </property> </widget> </item> - <item row="4" column="1" colspan="4"> + <item row="3" column="1" colspan="4"> <widget class="QCheckBox" name="FuzzyGLb4TM"> <property name="text"> <string>Mark as fuzzy if the message matches with the glossary entry by 100%</string> @@ -1274,45 +1264,60 @@ </property> </widget> </item> - <item row="1" column="1"> - <widget class="QCheckBox" name="chbMarkStringAsFuzzy"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="text"> - <string>Mark messages as fuzzy if 100% match</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="2"> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> </layout> + <zorder>chkAddSuggestions</zorder> + <zorder>chkIncludeFuzzy</zorder> + <zorder>chbMarkStringAsFuzzy</zorder> + <zorder></zorder> + <zorder></zorder> </widget> </item> + <item row="4" column="0"> + <layout class="QGridLayout" name="gridLayout_8"> + <item row="0" column="0"> + <widget class="QGroupBox" name="chkInstant"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="toolTip"> + <string>Instant Message TM looks up suggestions for a given message in real time, when that message is selected for translation. As this takes a few seconds, it sometimes gives the impression that the program is slow.</string> + </property> + <property name="title"> + <string>Enable Instant Message TM</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <layout class="QGridLayout"/> + </widget> + </item> + <item row="1" column="0"> + <spacer> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>17</width> + <height>13</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> + <zorder>label_5</zorder> + <zorder>line_3</zorder> + <zorder>groupBox</zorder> + <zorder></zorder> + <zorder></zorder> </widget> <widget class="QWidget" name="page_2"> <property name="toolTip"> @@ -2076,7 +2081,7 @@ <rect> <x>0</x> <y>0</y> - <width>171</width> + <width>180</width> <height>84</height> </rect> </property> @@ -2157,8 +2162,8 @@ <rect> <x>0</x> <y>0</y> - <width>290</width> - <height>252</height> + <width>321</width> + <height>270</height> </rect> </property> <attribute name="label"> @@ -2248,8 +2253,8 @@ <rect> <x>0</x> <y>0</y> - <width>239</width> - <height>160</height> + <width>262</width> + <height>178</height> </rect> </property> <attribute name="label"> @@ -2351,8 +2356,8 @@ <rect> <x>0</x> <y>0</y> - <width>159</width> - <height>247</height> + <width>174</width> + <height>277</height> </rect> </property> <attribute name="label"> @@ -2484,8 +2489,8 @@ <rect> <x>0</x> <y>0</y> - <width>271</width> - <height>122</height> + <width>306</width> + <height>130</height> </rect> </property> <attribute name="label"> @@ -2540,8 +2545,8 @@ <rect> <x>0</x> <y>0</y> - <width>291</width> - <height>200</height> + <width>311</width> + <height>214</height> </rect> </property> <attribute name="label"> @@ -2623,8 +2628,8 @@ <rect> <x>0</x> <y>0</y> - <width>184</width> - <height>136</height> + <width>208</width> + <height>140</height> </rect> </property> <attribute name="label"> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-05-02 09:46:02 UTC (rev 1324) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-05-10 09:56:31 UTC (rev 1325) @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/ankur/work/fixfind/wordforge0.8/WordForge/Editor/ui/Preference.ui' +# Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/Preference.ui' # -# Created: Mon May 2 14:09:04 2011 -# by: PyQt4 UI code generator 4.7.4 +# Created: Tue May 10 15:48:35 2011 +# by: PyQt4 UI code generator 4.7.3 # # WARNING! All changes made in this file will be lost! @@ -413,19 +413,26 @@ self.line_3.setFrameShadow(QtGui.QFrame.Sunken) self.line_3.setObjectName("line_3") self.gridLayout_14.addWidget(self.line_3, 1, 0, 1, 1) - self.chkInstant = QtGui.QGroupBox(self.TM_Glossary ) + self.gridLayout_7 = QtGui.QGridLayout() + self.gridLayout_7.setObjectName("gridLayout_7") + self.label_16 = QtGui.QLabel(self.TM_Glossary ) font = QtGui.QFont() font.setWeight(75) font.setBold(True) - self.chkInstant.setFont(font) - self.chkInstant.setCheckable(True) - self.chkInstant.setChecked(False) - self.chkInstant.setObjectName("chkInstant") - self.gridlayout1 = QtGui.QGridLayout(self.chkInstant) - self.gridlayout1.setObjectName("gridlayout1") - self.gridLayout_14.addWidget(self.chkInstant, 3, 0, 1, 1) - spacerItem5 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_14.addItem(spacerItem5, 4, 0, 1, 1) + self.label_16.setFont(font) + self.label_16.setObjectName("label_16") + self.gridLayout_7.addWidget(self.label_16, 0, 0, 1, 1) + self.spnMaxSuggestions = QtGui.QSpinBox(self.TM_Glossary ) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.spnMaxSuggestions.setFont(font) + self.spnMaxSuggestions.setProperty("value", 10) + self.spnMaxSuggestions.setObjectName("spnMaxSuggestions") + self.gridLayout_7.addWidget(self.spnMaxSuggestions, 0, 1, 1, 1) + spacerItem5 = QtGui.QSpacerItem(128, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout_7.addItem(spacerItem5, 0, 2, 1, 1) + self.gridLayout_14.addLayout(self.gridLayout_7, 2, 0, 1, 1) self.groupBox = QtGui.QGroupBox(self.TM_Glossary ) font = QtGui.QFont() font.setWeight(75) @@ -434,8 +441,15 @@ self.groupBox.setObjectName("groupBox") self.gridLayout_13 = QtGui.QGridLayout(self.groupBox) self.gridLayout_13.setObjectName("gridLayout_13") - self.gridlayout2 = QtGui.QGridLayout() - self.gridlayout2.setObjectName("gridlayout2") + self.gridlayout1 = QtGui.QGridLayout() + self.gridlayout1.setObjectName("gridlayout1") + self.chkTargetInclusion = QtGui.QCheckBox(self.groupBox) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.chkTargetInclusion.setFont(font) + self.chkTargetInclusion.setObjectName("chkTargetInclusion") + self.gridlayout1.addWidget(self.chkTargetInclusion, 0, 0, 1, 1) self.spnTarget = QtGui.QSpinBox(self.groupBox) font = QtGui.QFont() font.setWeight(50) @@ -445,17 +459,23 @@ self.spnTarget.setMaximum(100) self.spnTarget.setProperty("value", 100) self.spnTarget.setObjectName("spnTarget") - self.gridlayout2.addWidget(self.spnTarget, 0, 1, 1, 1) - spacerItem6 = QtGui.QSpacerItem(10, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridlayout2.addItem(spacerItem6, 0, 2, 1, 1) - self.chkTargetInclusion = QtGui.QCheckBox(self.groupBox) + self.gridlayout1.addWidget(self.spnTarget, 0, 1, 1, 1) + spacerItem6 = QtGui.QSpacerItem(13, 21, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridlayout1.addItem(spacerItem6, 0, 2, 1, 1) + self.gridLayout_13.addLayout(self.gridlayout1, 0, 0, 1, 3) + self.chbMarkStringAsFuzzy = QtGui.QCheckBox(self.groupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.chbMarkStringAsFuzzy.sizePolicy().hasHeightForWidth()) + self.chbMarkStringAsFuzzy.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setWeight(50) font.setBold(False) - self.chkTargetInclusion.setFont(font) - self.chkTargetInclusion.setObjectName("chkTargetInclusion") - self.gridlayout2.addWidget(self.chkTargetInclusion, 0, 0, 1, 1) - self.gridLayout_13.addLayout(self.gridlayout2, 0, 0, 1, 2) + self.chbMarkStringAsFuzzy.setFont(font) + self.chbMarkStringAsFuzzy.setChecked(True) + self.chbMarkStringAsFuzzy.setObjectName("chbMarkStringAsFuzzy") + self.gridLayout_13.addWidget(self.chbMarkStringAsFuzzy, 1, 1, 1, 2) self.chkAddSuggestions = QtGui.QGroupBox(self.groupBox) self.chkAddSuggestions.setEnabled(True) font = QtGui.QFont() @@ -495,23 +515,6 @@ self.gridLayout_12.addWidget(self.lblMax, 0, 2, 1, 2) spacerItem7 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout_12.addItem(spacerItem7, 0, 4, 1, 1) - self.label_16 = QtGui.QLabel(self.chkAddSuggestions) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.label_16.setFont(font) - self.label_16.setObjectName("label_16") - self.gridLayout_12.addWidget(self.label_16, 1, 0, 1, 3) - self.spnMaxSuggestions = QtGui.QSpinBox(self.chkAddSuggestions) - font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.spnMaxSuggestions.setFont(font) - self.spnMaxSuggestions.setProperty("value", 10) - self.spnMaxSuggestions.setObjectName("spnMaxSuggestions") - self.gridLayout_12.addWidget(self.spnMaxSuggestions, 1, 3, 1, 1) - spacerItem8 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_12.addItem(spacerItem8, 1, 4, 1, 1) self.chkEliminateIdentical = QtGui.QCheckBox(self.chkAddSuggestions) font = QtGui.QFont() font.setWeight(50) @@ -519,24 +522,24 @@ self.chkEliminateIdentical.setFont(font) self.chkEliminateIdentical.setChecked(True) self.chkEliminateIdentical.setObjectName("chkEliminateIdentical") - self.gridLayout_12.addWidget(self.chkEliminateIdentical, 2, 0, 1, 5) + self.gridLayout_12.addWidget(self.chkEliminateIdentical, 1, 0, 1, 5) self.chkGLb4TM = QtGui.QCheckBox(self.chkAddSuggestions) self.chkGLb4TM.setChecked(True) self.chkGLb4TM.setObjectName("chkGLb4TM") - self.gridLayout_12.addWidget(self.chkGLb4TM, 3, 0, 1, 5) + self.gridLayout_12.addWidget(self.chkGLb4TM, 2, 0, 1, 5) self.FuzzyGLb4TM = QtGui.QCheckBox(self.chkAddSuggestions) self.FuzzyGLb4TM.setObjectName("FuzzyGLb4TM") - self.gridLayout_12.addWidget(self.FuzzyGLb4TM, 4, 1, 1, 4) + self.gridLayout_12.addWidget(self.FuzzyGLb4TM, 3, 1, 1, 4) self.gridLayout_13.addWidget(self.chkAddSuggestions, 2, 0, 1, 3) - self.gridlayout3 = QtGui.QGridLayout() - self.gridlayout3.setObjectName("gridlayout3") + self.gridlayout2 = QtGui.QGridLayout() + self.gridlayout2.setObjectName("gridlayout2") self.label_10 = QtGui.QLabel(self.groupBox) font = QtGui.QFont() font.setWeight(50) font.setBold(False) self.label_10.setFont(font) self.label_10.setObjectName("label_10") - self.gridlayout3.addWidget(self.label_10, 0, 2, 1, 1) + self.gridlayout2.addWidget(self.label_10, 0, 2, 1, 1) self.spnMaxLen = QtGui.QSpinBox(self.groupBox) font = QtGui.QFont() font.setWeight(50) @@ -545,17 +548,17 @@ self.spnMaxLen.setMaximum(999) self.spnMaxLen.setProperty("value", 70) self.spnMaxLen.setObjectName("spnMaxLen") - self.gridlayout3.addWidget(self.spnMaxLen, 0, 1, 1, 1) + self.gridlayout2.addWidget(self.spnMaxLen, 0, 1, 1, 1) self.label_17 = QtGui.QLabel(self.groupBox) font = QtGui.QFont() font.setWeight(50) font.setBold(False) self.label_17.setFont(font) self.label_17.setObjectName("label_17") - self.gridlayout3.addWidget(self.label_17, 0, 0, 1, 1) - spacerItem9 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridlayout3.addItem(spacerItem9, 0, 3, 1, 1) - self.gridLayout_13.addLayout(self.gridlayout3, 3, 0, 1, 3) + self.gridlayout2.addWidget(self.label_17, 0, 0, 1, 1) + spacerItem8 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridlayout2.addItem(spacerItem8, 0, 3, 1, 1) + self.gridLayout_13.addLayout(self.gridlayout2, 3, 0, 1, 3) self.chkIncludeFuzzy = QtGui.QCheckBox(self.groupBox) font = QtGui.QFont() font.setWeight(50) @@ -563,22 +566,23 @@ self.chkIncludeFuzzy.setFont(font) self.chkIncludeFuzzy.setObjectName("chkIncludeFuzzy") self.gridLayout_13.addWidget(self.chkIncludeFuzzy, 4, 0, 1, 3) - self.chbMarkStringAsFuzzy = QtGui.QCheckBox(self.groupBox) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.chbMarkStringAsFuzzy.sizePolicy().hasHeightForWidth()) - self.chbMarkStringAsFuzzy.setSizePolicy(sizePolicy) + self.gridLayout_14.addWidget(self.groupBox, 3, 0, 1, 1) + self.gridLayout_8 = QtGui.QGridLayout() + self.gridLayout_8.setObjectName("gridLayout_8") + self.chkInstant = QtGui.QGroupBox(self.TM_Glossary ) font = QtGui.QFont() - font.setWeight(50) - font.setBold(False) - self.chbMarkStringAsFuzzy.setFont(font) - self.chbMarkStringAsFuzzy.setChecked(True) - self.chbMarkStringAsFuzzy.setObjectName("chbMarkStringAsFuzzy") - self.gridLayout_13.addWidget(self.chbMarkStringAsFuzzy, 1, 1, 1, 1) - spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_13.addItem(spacerItem10, 1, 2, 1, 1) - self.gridLayout_14.addWidget(self.groupBox, 2, 0, 1, 1) + font.setWeight(75) + font.setBold(True) + self.chkInstant.setFont(font) + self.chkInstant.setCheckable(True) + self.chkInstant.setChecked(False) + self.chkInstant.setObjectName("chkInstant") + self.gridlayout3 = QtGui.QGridLayout(self.chkInstant) + self.gridlayout3.setObjectName("gridlayout3") + self.gridLayout_8.addWidget(self.chkInstant, 0, 0, 1, 1) + spacerItem9 = QtGui.QSpacerItem(17, 13, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_8.addItem(spacerItem9, 1, 0, 1, 1) + self.gridLayout_14.addLayout(self.gridLayout_8, 4, 0, 1, 1) self.stackedWidget.addWidget(self.TM_Glossary ) self.page_2 = QtGui.QWidget() self.page_2.setObjectName("page_2") @@ -604,8 +608,8 @@ self.chbAutoIdentTerm.setSizePolicy(sizePolicy) self.chbAutoIdentTerm.setObjectName("chbAutoIdentTerm") self.gridlayout4.addWidget(self.chbAutoIdentTerm, 2, 0, 1, 3) - spacerItem11 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridlayout4.addItem(spacerItem11, 3, 1, 1, 1) + spacerItem10 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridlayout4.addItem(spacerItem10, 3, 1, 1, 1) self.stackedWidget.addWidget(self.page_2) self.save = QtGui.QWidget() self.save.setObjectName("save") @@ -655,8 +659,8 @@ self.label_9.setObjectName("label_9") self.gridlayout5.addWidget(self.label_9, 0, 2, 1, 1) self.verticalLayout_2.addWidget(self.frame_6) - spacerItem12 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem12) + spacerItem11 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem11) self.stackedWidget.addWidget(self.save) self.editor = QtGui.QWidget() self.editor.setObjectName("editor") @@ -766,8 +770,8 @@ self.chkshowwanring.setObjectName("chkshowwanring") self.gridLayout_9.addWidget(self.chkshowwanring, 0, 0, 1, 1) self.gridLayout_11.addWidget(self.frame_3, 8, 0, 1, 2) - spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_11.addItem(spacerItem13, 9, 1, 1, 1) + spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_11.addItem(spacerItem12, 9, 1, 1, 1) self.stackedWidget.addWidget(self.editor) self.page_3 = QtGui.QWidget() self.page_3.setObjectName("page_3") @@ -809,14 +813,14 @@ self.btnSetActive = QtGui.QPushButton(self.page_3) self.btnSetActive.setObjectName("btnSetActive") self.gridlayout6.addWidget(self.btnSetActive, 5, 1, 1, 1) - spacerItem14 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridlayout6.addItem(spacerItem14, 6, 1, 1, 1) + spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridlayout6.addItem(spacerItem13, 6, 1, 1, 1) self.chkSpellIgnoreSource = QtGui.QCheckBox(self.page_3) self.chkSpellIgnoreSource.setChecked(True) self.chkSpellIgnoreSource.setObjectName("chkSpellIgnoreSource") self.gridlayout6.addWidget(self.chkSpellIgnoreSource, 7, 0, 1, 1) - spacerItem15 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.gridlayout6.addItem(spacerItem15, 9, 0, 1, 2) + spacerItem14 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.gridlayout6.addItem(spacerItem14, 9, 0, 1, 2) self.tableSpellCheck = QtGui.QTableWidget(self.page_3) self.tableSpellCheck.setTabKeyNavigation(True) self.tableSpellCheck.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) @@ -921,7 +925,7 @@ self.toolBox = QtGui.QToolBox(self.page) self.toolBox.setObjectName("toolBox") self.page_7 = QtGui.QWidget() - self.page_7.setGeometry(QtCore.QRect(0, 0, 171, 84)) + self.page_7.setGeometry(QtCore.QRect(0, 0, 180, 84)) self.page_7.setObjectName("page_7") self.gridLayout_16 = QtGui.QGridLayout(self.page_7) self.gridLayout_16.setObjectName("gridLayout_16") @@ -949,13 +953,13 @@ self.cbxCountry.setEditable(False) self.cbxCountry.setObjectName("cbxCountry") self.gridLayout_16.addWidget(self.cbxCountry, 1, 1, 1, 1) - spacerItem16 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_16.addItem(spacerItem16, 0, 2, 1, 1) - spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_16.addItem(spacerItem17, 2, 1, 1, 1) + spacerItem15 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout_16.addItem(spacerItem15, 0, 2, 1, 1) + spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_16.addItem(spacerItem16, 2, 1, 1, 1) self.toolBox.addItem(self.page_7, "") self.page_4 = QtGui.QWidget() - self.page_4.setGeometry(QtCore.QRect(0, 0, 290, 252)) + self.page_4.setGeometry(QtCore.QRect(0, 0, 321, 270)) self.page_4.setObjectName("page_4") self.verticalLayout_5 = QtGui.QVBoxLayout(self.page_4) self.verticalLayout_5.setObjectName("verticalLayout_5") @@ -986,11 +990,11 @@ self.chkTab = QtGui.QCheckBox(self.page_4) self.chkTab.setObjectName("chkTab") self.verticalLayout_5.addWidget(self.chkTab) - spacerItem18 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.verticalLayout_5.addItem(spacerItem18) + spacerItem17 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout_5.addItem(spacerItem17) self.toolBox.addItem(self.page_4, "") self.page_6 = QtGui.QWidget() - self.page_6.setGeometry(QtCore.QRect(0, 0, 239, 160)) + self.page_6.setGeometry(QtCore.QRect(0, 0, 262, 178)) self.page_6.setObjectName("page_6") self.gridLayout_3 = QtGui.QGridLayout(self.page_6) self.gridLayout_3.setObjectName("gridLayout_3") @@ -1033,11 +1037,11 @@ self.label_44 = QtGui.QLabel(self.page_6) self.label_44.setObjectName("label_44") self.gridLayout_3.addWidget(self.label_44, 4, 2, 1, 1) - spacerItem19 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_3.addItem(spacerItem19, 5, 1, 1, 1) + spacerItem18 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_3.addItem(spacerItem18, 5, 1, 1, 1) self.toolBox.addItem(self.page_6, "") self.page_5 = QtGui.QWidget() - self.page_5.setGeometry(QtCore.QRect(0, 0, 159, 247)) + self.page_5.setGeometry(QtCore.QRect(0, 0, 174, 277)) self.page_5.setObjectName("page_5") self.gridLayout = QtGui.QGridLayout(self.page_5) self.gridLayout.setObjectName("gridLayout") @@ -1093,11 +1097,11 @@ self.leComma.setText("") self.leComma.setObjectName("leComma") self.gridLayout.addWidget(self.leComma, 7, 1, 1, 1) - spacerItem20 = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout.addItem(spacerItem20, 8, 1, 1, 1) + spacerItem19 = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem19, 8, 1, 1, 1) self.toolBox.addItem(self.page_5, "") self.page_15 = QtGui.QWidget() - self.page_15.setGeometry(QtCore.QRect(0, 0, 271, 122)) + self.page_15.setGeometry(QtCore.QRect(0, 0, 306, 130)) self.page_15.setObjectName("page_15") self.verticalLayout_3 = QtGui.QVBoxLayout(self.page_15) self.verticalLayout_3.setObjectName("verticalLayout_3") @@ -1113,11 +1117,11 @@ self.chkPuncSpace = QtGui.QCheckBox(self.page_15) self.chkPuncSpace.setObjectName("chkPuncSpace") self.verticalLayout_3.addWidget(self.chkPuncSpace) - spacerItem21 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.verticalLayout_3.addItem(spacerItem21) + spacerItem20 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem20) self.toolBox.addItem(self.page_15, "") self.page_16 = QtGui.QWidget() - self.page_16.setGeometry(QtCore.QRect(0, 0, 291, 200)) + self.page_16.setGeometry(QtCore.QRect(0, 0, 311, 214)) self.page_16.setObjectName("page_16") self.verticalLayout_4 = QtGui.QVBoxLayout(self.page_16) self.verticalLayout_4.setObjectName("verticalLayout_4") @@ -1144,11 +1148,11 @@ self.chkXmlTag = QtGui.QCheckBox(self.page_16) self.chkXmlTag.setObjectName("chkXmlTag") self.verticalLayout_4.addWidget(self.chkXmlTag) - spacerItem22 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.verticalLayout_4.addItem(spacerItem22) + spacerItem21 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout_4.addItem(spacerItem21) self.toolBox.addItem(self.page_16, "") self.page_17 = QtGui.QWidget() - self.page_17.setGeometry(QtCore.QRect(0, 0, 184, 136)) + self.page_17.setGeometry(QtCore.QRect(0, 0, 208, 140)) self.page_17.setObjectName("page_17") self.gridLayout_2 = QtGui.QGridLayout(self.page_17) self.gridLayout_2.setObjectName("gridLayout_2") @@ -1170,8 +1174,8 @@ self.leAccelerator.setReadOnly(False) self.leAccelerator.setObjectName("leAccelerator") self.gridLayout_2.addWidget(self.leAccelerator, 3, 1, 1, 1) - spacerItem23 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_2.addItem(spacerItem23, 4, 1, 1, 1) + spacerItem22 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem22, 4, 1, 1, 1) self.toolBox.addItem(self.page_17, "") self.verticalLayout_6.addWidget(self.toolBox) self.line_17 = QtGui.QFrame(self.page) @@ -1199,8 +1203,8 @@ self.helpButton = QtGui.QPushButton(self.groupBox_3) self.helpButton.setObjectName("helpButton") self.gridLayout_5.addWidget(self.helpButton, 1, 3, 1, 1) - spacerItem24 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout_5.addItem(spacerItem24, 1, 2, 1, 1) + spacerItem23 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout_5.addItem(spacerItem23, 1, 2, 1, 1) self.chkStore = QtGui.QCheckBox(self.groupBox_3) self.chkStore.setChecked(True) self.chkStore.setObjectName("chkStore") @@ -1210,7 +1214,7 @@ self.gridLayout_4.addWidget(self.stackedWidget, 0, 1, 1, 1) self.retranslateUi(frmPreference) - self.stackedWidget.setCurrentIndex(4) + self.stackedWidget.setCurrentIndex(2) self.toolBox.setCurrentIndex(2) QtCore.QMetaObject.connectSlotsByName(frmPreference) frmPreference.setTabOrder(self.okButton, self.cancelButton) @@ -1325,8 +1329,7 @@ "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:600; font-style:normal;\">\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'DejaVu Sans\';\">Options for Applying Translation Memory (TM)</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.chkInstant.setToolTip(QtGui.QApplication.translate("frmPreference", "Instant Message TM looks up suggestions for a given message in real time, when that message is selected for translation. As this takes a few seconds, it sometimes gives the impression that the program is slow.", None, QtGui.QApplication.UnicodeUTF8)) - self.chkInstant.setTitle(QtGui.QApplication.translate("frmPreference", "Enable Instant Message TM", None, QtGui.QApplication.UnicodeUTF8)) + self.label_16.setText(QtGui.QApplication.translate("frmPreference", "Maximum number of suggestions for each message", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox.setToolTip(QtGui.QApplication.translate("frmPreference", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" @@ -1334,14 +1337,14 @@ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:400;\">File TM looks at all the possible suggestions for all untranslated messages in the current file at once (and also for fuzzy messages if you select the appropriate check box below), and stores the information in the XLIFF file (or the PO file, but less information can be stored). </span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:400;\">This information can then be used by the WordForge editor without having to consult TM every time.</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox.setTitle(QtGui.QApplication.translate("frmPreference", "File TM", None, QtGui.QApplication.UnicodeUTF8)) + self.chkTargetInclusion.setText(QtGui.QApplication.translate("frmPreference", "Include suggestions directly in the translation if match is equal or over", None, QtGui.QApplication.UnicodeUTF8)) self.spnTarget.setToolTip(QtGui.QApplication.translate("frmPreference", "100% = identical source", None, QtGui.QApplication.UnicodeUTF8)) self.spnTarget.setSuffix(QtGui.QApplication.translate("frmPreference", "%", None, QtGui.QApplication.UnicodeUTF8)) - self.chkTargetInclusion.setText(QtGui.QApplication.translate("frmPreference", "Include suggestions directly in the translation if match is equal or over", None, QtGui.QApplication.UnicodeUTF8)) + self.chbMarkStringAsFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Mark messages as fuzzy if 100% match", None, QtGui.QApplication.UnicodeUTF8)) self.chkAddSuggestions.setTitle(QtGui.QApplication.translate("frmPreference", "Add suggestions of alternative translations to XLIFF files", None, QtGui.QApplication.UnicodeUTF8)) self.label_20.setText(QtGui.QApplication.translate("frmPreference", "Add suggestion if match is between ", None, QtGui.QApplication.UnicodeUTF8)) self.spnMin.setSuffix(QtGui.QApplication.translate("frmPreference", "%", None, QtGui.QApplication.UnicodeUTF8)) self.lblMax.setText(QtGui.QApplication.translate("frmPreference", "and 100%", None, QtGui.QApplication.UnicodeUTF8)) - self.label_16.setText(QtGui.QApplication.translate("frmPreference", "Maximum number of suggestions for each message", None, QtGui.QApplication.UnicodeUTF8)) self.chkEliminateIdentical.setText(QtGui.QApplication.translate("frmPreference", "Eliminate identical suggestions (do not show me the same suggestions twice)", None, QtGui.QApplication.UnicodeUTF8)) self.chkGLb4TM.setText(QtGui.QApplication.translate("frmPreference", "If a message is a single glossary entry, translate from glossary and not from TM.", None, QtGui.QApplication.UnicodeUTF8)) self.FuzzyGLb4TM.setText(QtGui.QApplication.translate("frmPreference", "Mark as fuzzy if the message matches with the glossary entry by 100%", None, QtGui.QApplication.UnicodeUTF8)) @@ -1350,7 +1353,8 @@ self.label_17.setText(QtGui.QApplication.translate("frmPreference", "When calculating the percentage match of a message, only the first ", None, QtGui.QApplication.UnicodeUTF8)) self.chkIncludeFuzzy.setWhatsThis(QtGui.QApplication.translate("frmPreference", "<h3>Ignore Fuzzy Strings</h3> If this option is checked, the fuzzy string will not be searching for from the Translation Memory.", None, QtGui.QApplication.UnicodeUTF8)) self.chkIncludeFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Propose suggestions for fuzzy messages (in addition to suggestion for untranslated messages)", None, QtGui.QApplication.UnicodeUTF8)) - self.chbMarkStringAsFuzzy.setText(QtGui.QApplication.translate("frmPreference", "Mark messages as fuzzy if 100% match", None, QtGui.QApplication.UnicodeUTF8)) + self.chkInstant.setToolTip(QtGui.QApplication.translate("frmPreference", "Instant Message TM looks up suggestions for a given message in real time, when that message is selected for translation. As this takes a few seconds, it sometimes gives the impression that the program is slow.", None, QtGui.QApplication.UnicodeUTF8)) + self.chkInstant.setTitle(QtGui.QApplication.translate("frmPreference", "Enable Instant Message TM", None, QtGui.QApplication.UnicodeUTF8)) self.page_2.setToolTip(QtGui.QApplication.translate("frmPreference", "When the use of glossaries is enabled - and a glossary is present - \n" "WordForge will search the source messages for terms that are in its lists of glossary terms. \n" "The glossary terms found in the source messages will be highlighted, and the translations \n" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2011-05-02 09:46:08
|
Revision: 1324 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1324&view=rev Author: rakibm Date: 2011-05-02 09:46:02 +0000 (Mon, 02 May 2011) Log Message: ----------- Remove Update header on Save option from Preference->Save Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/Preference.py branches/wordforge0.8/WordForge/Editor/ui/Preference.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py Modified: branches/wordforge0.8/WordForge/Editor/modules/Preference.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Preference.py 2011-04-27 12:03:14 UTC (rev 1323) +++ branches/wordforge0.8/WordForge/Editor/modules/Preference.py 2011-05-02 09:46:02 UTC (rev 1324) @@ -121,8 +121,6 @@ self.ui.checkBox.setChecked(autoSave) self.ui.QSpinBoxAutoSave.setEnabled(autoSave) - - self.setState(self.ui.chkHeaderAuto, "headerAuto") self.setState(self.ui.chkCursorHome, "AcceleratorList") # Read TM configuration from WordForge.ini if TM Settings have been stored @@ -669,7 +667,6 @@ txt = doc.createTextNode(nodevalue) doublequot.appendChild( txt ) std.appendChild(doublequot) - def add_test(self): #code for adding value in the xml file @@ -796,7 +793,6 @@ World.settings.setValue("TM_Instant", QtCore.QVariant(self.ui.chkInstant.isChecked())) World.settings.setValue("equation", QtCore.QVariant(self.ui.lineEqaution.text())) - World.settings.setValue("headerAuto", QtCore.QVariant(self.ui.chkHeaderAuto.checkState() == QtCore.Qt.Checked)) World.settings.setValue("cursorHome", QtCore.QVariant(self.ui.chkCursorHome.checkState() == QtCore.Qt.Checked)) World.settings.setValue("GlossaryPreference", QtCore.QVariant(self.setGlossaryOptions())) @@ -1180,7 +1176,6 @@ self.connect(self.ui.checkBox, QtCore.SIGNAL("clicked()"), self.setIntervalTimer) # connect signals - self.connect(self.ui.chkHeaderAuto, QtCore.SIGNAL("stateChanged(int)"), self.ui.chkHeaderAuto.checkState) self.connect(self.ui.chkCursorHome, QtCore.SIGNAL("stateChanged(int)"), self.ui.chkCursorHome.checkState) self.connect(self.ui.bntFontOverview, QtCore.SIGNAL("clicked()"), self.fontOverview) self.connect(self.ui.bntFontOverviewHeader, QtCore.SIGNAL("clicked()"), self.fontOverviewHeader) Modified: branches/wordforge0.8/WordForge/Editor/ui/Preference.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-04-27 12:03:14 UTC (rev 1323) +++ branches/wordforge0.8/WordForge/Editor/ui/Preference.ui 2011-05-02 09:46:02 UTC (rev 1324) @@ -109,7 +109,7 @@ <number>1</number> </property> <property name="currentIndex"> - <number>2</number> + <number>4</number> </property> <widget class="QWidget" name="personal"> <property name="sizePolicy"> @@ -1446,25 +1446,6 @@ </property> </widget> </item> - <item row="1" column="0" colspan="3"> - <widget class="QCheckBox" name="chkHeaderAuto"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="whatsThis"> - <string><h3>Update header on save</h3>Check this opton to automatically have your header updated while saving. The information will be querried from Personalize tab. </string> - </property> - <property name="text"> - <string>Update header on save</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> </layout> </widget> </item> @@ -2095,7 +2076,7 @@ <rect> <x>0</x> <y>0</y> - <width>180</width> + <width>171</width> <height>84</height> </rect> </property> @@ -2176,8 +2157,8 @@ <rect> <x>0</x> <y>0</y> - <width>321</width> - <height>270</height> + <width>290</width> + <height>252</height> </rect> </property> <attribute name="label"> @@ -2267,8 +2248,8 @@ <rect> <x>0</x> <y>0</y> - <width>262</width> - <height>178</height> + <width>239</width> + <height>160</height> </rect> </property> <attribute name="label"> @@ -2370,8 +2351,8 @@ <rect> <x>0</x> <y>0</y> - <width>174</width> - <height>277</height> + <width>159</width> + <height>247</height> </rect> </property> <attribute name="label"> @@ -2503,8 +2484,8 @@ <rect> <x>0</x> <y>0</y> - <width>306</width> - <height>130</height> + <width>271</width> + <height>122</height> </rect> </property> <attribute name="label"> @@ -2559,8 +2540,8 @@ <rect> <x>0</x> <y>0</y> - <width>311</width> - <height>214</height> + <width>291</width> + <height>200</height> </rect> </property> <attribute name="label"> @@ -2642,8 +2623,8 @@ <rect> <x>0</x> <y>0</y> - <width>208</width> - <height>140</height> + <width>184</width> + <height>136</height> </rect> </property> <attribute name="label"> @@ -2802,7 +2783,6 @@ <tabstop>chbAutoIdentTerm</tabstop> <tabstop>checkBox</tabstop> <tabstop>QSpinBoxAutoSave</tabstop> - <tabstop>chkHeaderAuto</tabstop> <tabstop>tableSpellCheck</tabstop> <tabstop>btnAdd</tabstop> </tabstops> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-04-27 12:03:14 UTC (rev 1323) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_Preference.py 2011-05-02 09:46:02 UTC (rev 1324) @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/Preference.ui' +# Form implementation generated from reading ui file '/home/ankur/work/fixfind/wordforge0.8/WordForge/Editor/ui/Preference.ui' # -# Created: Sun Apr 3 16:53:30 2011 -# by: PyQt4 UI code generator 4.7.3 +# Created: Mon May 2 14:09:04 2011 +# by: PyQt4 UI code generator 4.7.4 # # WARNING! All changes made in this file will be lost! @@ -654,15 +654,6 @@ self.label_9.setSizePolicy(sizePolicy) self.label_9.setObjectName("label_9") self.gridlayout5.addWidget(self.label_9, 0, 2, 1, 1) - self.chkHeaderAuto = QtGui.QCheckBox(self.frame_6) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.chkHeaderAuto.sizePolicy().hasHeightForWidth()) - self.chkHeaderAuto.setSizePolicy(sizePolicy) - self.chkHeaderAuto.setChecked(True) - self.chkHeaderAuto.setObjectName("chkHeaderAuto") - self.gridlayout5.addWidget(self.chkHeaderAuto, 1, 0, 1, 3) self.verticalLayout_2.addWidget(self.frame_6) spacerItem12 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_2.addItem(spacerItem12) @@ -930,7 +921,7 @@ self.toolBox = QtGui.QToolBox(self.page) self.toolBox.setObjectName("toolBox") self.page_7 = QtGui.QWidget() - self.page_7.setGeometry(QtCore.QRect(0, 0, 180, 84)) + self.page_7.setGeometry(QtCore.QRect(0, 0, 171, 84)) self.page_7.setObjectName("page_7") self.gridLayout_16 = QtGui.QGridLayout(self.page_7) self.gridLayout_16.setObjectName("gridLayout_16") @@ -964,7 +955,7 @@ self.gridLayout_16.addItem(spacerItem17, 2, 1, 1, 1) self.toolBox.addItem(self.page_7, "") self.page_4 = QtGui.QWidget() - self.page_4.setGeometry(QtCore.QRect(0, 0, 321, 270)) + self.page_4.setGeometry(QtCore.QRect(0, 0, 290, 252)) self.page_4.setObjectName("page_4") self.verticalLayout_5 = QtGui.QVBoxLayout(self.page_4) self.verticalLayout_5.setObjectName("verticalLayout_5") @@ -999,7 +990,7 @@ self.verticalLayout_5.addItem(spacerItem18) self.toolBox.addItem(self.page_4, "") self.page_6 = QtGui.QWidget() - self.page_6.setGeometry(QtCore.QRect(0, 0, 262, 178)) + self.page_6.setGeometry(QtCore.QRect(0, 0, 239, 160)) self.page_6.setObjectName("page_6") self.gridLayout_3 = QtGui.QGridLayout(self.page_6) self.gridLayout_3.setObjectName("gridLayout_3") @@ -1046,7 +1037,7 @@ self.gridLayout_3.addItem(spacerItem19, 5, 1, 1, 1) self.toolBox.addItem(self.page_6, "") self.page_5 = QtGui.QWidget() - self.page_5.setGeometry(QtCore.QRect(0, 0, 174, 277)) + self.page_5.setGeometry(QtCore.QRect(0, 0, 159, 247)) self.page_5.setObjectName("page_5") self.gridLayout = QtGui.QGridLayout(self.page_5) self.gridLayout.setObjectName("gridLayout") @@ -1106,7 +1097,7 @@ self.gridLayout.addItem(spacerItem20, 8, 1, 1, 1) self.toolBox.addItem(self.page_5, "") self.page_15 = QtGui.QWidget() - self.page_15.setGeometry(QtCore.QRect(0, 0, 306, 130)) + self.page_15.setGeometry(QtCore.QRect(0, 0, 271, 122)) self.page_15.setObjectName("page_15") self.verticalLayout_3 = QtGui.QVBoxLayout(self.page_15) self.verticalLayout_3.setObjectName("verticalLayout_3") @@ -1126,7 +1117,7 @@ self.verticalLayout_3.addItem(spacerItem21) self.toolBox.addItem(self.page_15, "") self.page_16 = QtGui.QWidget() - self.page_16.setGeometry(QtCore.QRect(0, 0, 311, 214)) + self.page_16.setGeometry(QtCore.QRect(0, 0, 291, 200)) self.page_16.setObjectName("page_16") self.verticalLayout_4 = QtGui.QVBoxLayout(self.page_16) self.verticalLayout_4.setObjectName("verticalLayout_4") @@ -1157,7 +1148,7 @@ self.verticalLayout_4.addItem(spacerItem22) self.toolBox.addItem(self.page_16, "") self.page_17 = QtGui.QWidget() - self.page_17.setGeometry(QtCore.QRect(0, 0, 208, 140)) + self.page_17.setGeometry(QtCore.QRect(0, 0, 184, 136)) self.page_17.setObjectName("page_17") self.gridLayout_2 = QtGui.QGridLayout(self.page_17) self.gridLayout_2.setObjectName("gridLayout_2") @@ -1219,7 +1210,7 @@ self.gridLayout_4.addWidget(self.stackedWidget, 0, 1, 1, 1) self.retranslateUi(frmPreference) - self.stackedWidget.setCurrentIndex(2) + self.stackedWidget.setCurrentIndex(4) self.toolBox.setCurrentIndex(2) QtCore.QMetaObject.connectSlotsByName(frmPreference) frmPreference.setTabOrder(self.okButton, self.cancelButton) @@ -1249,8 +1240,7 @@ frmPreference.setTabOrder(self.chkEliminateIdentical, self.chbAutoIdentTerm) frmPreference.setTabOrder(self.chbAutoIdentTerm, self.checkBox) frmPreference.setTabOrder(self.checkBox, self.QSpinBoxAutoSave) - frmPreference.setTabOrder(self.QSpinBoxAutoSave, self.chkHeaderAuto) - frmPreference.setTabOrder(self.chkHeaderAuto, self.tableSpellCheck) + frmPreference.setTabOrder(self.QSpinBoxAutoSave, self.tableSpellCheck) frmPreference.setTabOrder(self.tableSpellCheck, self.btnAdd) def retranslateUi(self, frmPreference): @@ -1374,8 +1364,6 @@ self.label_7.setText(QtGui.QApplication.translate("frmPreference", "Options for Saving File", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox.setText(QtGui.QApplication.translate("frmPreference", "Enable Autosave in", None, QtGui.QApplication.UnicodeUTF8)) self.label_9.setText(QtGui.QApplication.translate("frmPreference", "minutes", None, QtGui.QApplication.UnicodeUTF8)) - self.chkHeaderAuto.setWhatsThis(QtGui.QApplication.translate("frmPreference", "<h3>Update header on save</h3>Check this opton to automatically have your header updated while saving. The information will be querried from Personalize tab. ", None, QtGui.QApplication.UnicodeUTF8)) - self.chkHeaderAuto.setText(QtGui.QApplication.translate("frmPreference", "Update header on save", None, QtGui.QApplication.UnicodeUTF8)) self.label_8.setText(QtGui.QApplication.translate("frmPreference", "Options for Editor", None, QtGui.QApplication.UnicodeUTF8)) self.chkCursorHome.setWhatsThis(QtGui.QApplication.translate("frmPreference", "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2011-04-27 12:03:26
|
Revision: 1323 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1323&view=rev Author: rakibm Date: 2011-04-27 12:03:14 +0000 (Wed, 27 Apr 2011) Log Message: ----------- Make Find Next/ Find Previous disable, if Find is not used Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/Find.py branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py Modified: branches/wordforge0.8/WordForge/Editor/modules/Find.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Find.py 2011-04-27 09:19:43 UTC (rev 1322) +++ branches/wordforge0.8/WordForge/Editor/modules/Find.py 2011-04-27 12:03:14 UTC (rev 1323) @@ -56,6 +56,7 @@ self.connect(self.ui.matchcase, QtCore.SIGNAL("stateChanged(int)"), self.changeInitSearch) self.connect(self.ui.lineEdit, QtCore.SIGNAL("returnPressed()"), self.findNext) self.defaultBase = False + self.parent = parent self.searchString = u'' self.initSearchNeeded = True @@ -126,6 +127,9 @@ self.ui.lineEdit.setText(self.clipboard.text(0)) self.ui.lineEdit.selectAll() self.show() + ''' Find {Next,Previous} should only be enabled when Find is in action ''' + self.parent.ui.actionFindPrevious.setEnabled(1) + self.parent.ui.actionFindNext.setEnabled(1) def showReplace(self): if not ((self.isHidden() or self.ui.lineEdit_2.isHidden())): @@ -146,6 +150,9 @@ self.ui.lineEdit.setText(self.clipboard.text(0)) self.ui.lineEdit.selectAll() self.show() + ''' Find {Next,Previous} should only be enabled when Replace is in action ''' + self.parent.ui.actionFindPrevious.setEnabled(1) + self.parent.ui.actionFindNext.setEnabled(1) def _hideReplace(self, hidden): """ hide or show the replace UI elements Modified: branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-27 09:19:43 UTC (rev 1322) +++ branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-27 12:03:14 UTC (rev 1323) @@ -1283,7 +1283,11 @@ self.fileaction.setFileProperty(filename) self.setStatusForFile(filename) self.prependOpenRecent(filename) - + + ''' We don't want Find Next/Previous to be enabled without Find used ever ''' + self.ui.actionFindPrevious.setEnabled(0) + self.ui.actionFindNext.setEnabled(0) + self.show() units=self.dockOverview.units self.unitnum=len(units) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-27 09:19:54
|
Revision: 1322 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1322&view=rev Author: enayet05 Date: 2011-04-27 09:19:43 +0000 (Wed, 27 Apr 2011) Log Message: ----------- Edited by Enayet for Ticket #39 (new defect) Search for Translations Errors always offers to save the file Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py Modified: branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-26 11:32:22 UTC (rev 1321) +++ branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-27 09:19:43 UTC (rev 1322) @@ -784,7 +784,7 @@ globalClass.postTestList=[] storingEnable=World.settings.value("enableStore", QtCore.QVariant(True)).toBool() globalClass.hasErrors=2 - if storingEnable: + if storingEnable and self.operator.isXliff: self.ui.actionSave.setEnabled(True) self.fileaction.isSaved=False self.operator.modified=True This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-26 11:32:28
|
Revision: 1321 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1321&view=rev Author: enayet05 Date: 2011-04-26 11:32:22 +0000 (Tue, 26 Apr 2011) Log Message: ----------- Edited by Enayet to support multiple sources/targets inside a langset by breaking them into different units Modified Paths: -------------- branches/wordforge0.8/WordForge/translate/search/match.py branches/wordforge0.8/WordForge/translate/storage/tbx.py Modified: branches/wordforge0.8/WordForge/translate/search/match.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-26 11:29:26 UTC (rev 1320) +++ branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-26 11:32:22 UTC (rev 1321) @@ -20,7 +20,7 @@ # """Class to perform translation memory matching from a store of translation units""" - + import re from WordForge.translate.search import lshtein from WordForge.translate.search import terminology Modified: branches/wordforge0.8/WordForge/translate/storage/tbx.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-26 11:29:26 UTC (rev 1320) +++ branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-26 11:32:22 UTC (rev 1321) @@ -21,7 +21,7 @@ # """module for handling TBX glossary files""" - + from WordForge.translate.storage import lisa from WordForge.Editor.modules.globalClass import globalClass from lxml import etree This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-26 11:29:32
|
Revision: 1320 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1320&view=rev Author: enayet05 Date: 2011-04-26 11:29:26 +0000 (Tue, 26 Apr 2011) Log Message: ----------- Edited by Enayet to support multiple sources/targets inside a langset by Modified Paths: -------------- branches/wordforge0.8/WordForge/translate/search/match.py branches/wordforge0.8/WordForge/translate/storage/tbx.py Modified: branches/wordforge0.8/WordForge/translate/search/match.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-24 10:36:53 UTC (rev 1319) +++ branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-26 11:29:26 UTC (rev 1320) @@ -149,20 +149,21 @@ for candidate in candidates: if isinstance(candidate, tbx.tbxunit): # If there are multiple targets agains a source then add them as different unit. This is applicable for tbx glossary files. - for index in range(len(candidate.targets)): - simpleunit = base.TranslationUnit("") - simpleunit.context = '' - simpleunit.source = candidate.source - simpleunit.target = candidate.targets[index] -# Add tbx specific info. - simpleunit.entryDefinition = candidate.entryDefinition - simpleunit.subjectField = candidate.subjectField - simpleunit.context = candidate.context - simpleunit.targetPOSDict = candidate.targetPOSDict - simpleunit.languageDependentDefinition = candidate.languageDependentDefinition - simpleunit.addnote(candidate.getnotes(origin="translator")) - simpleunit.fuzzy = candidate.isfuzzy() - self.candidates.units.append(simpleunit) + for indexs in range(len(candidate.sources)): + for indext in range(len(candidate.targets)): + simpleunit = base.TranslationUnit("") + simpleunit.context = '' + simpleunit.source = candidate.sources[indexs] + simpleunit.target = candidate.targets[indext] + # Add tbx specific info. + simpleunit.entryDefinition = candidate.entryDefinition + simpleunit.subjectField = candidate.subjectField + simpleunit.context = candidate.context + simpleunit.targetPOSDict = candidate.targetPOSDict + simpleunit.languageDependentDefinition = candidate.languageDependentDefinition + simpleunit.addnote(candidate.getnotes(origin="translator")) + simpleunit.fuzzy = candidate.isfuzzy() + self.candidates.units.append(simpleunit) else: simpleunit = base.TranslationUnit("") simpleunit.context = '' Modified: branches/wordforge0.8/WordForge/translate/storage/tbx.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-24 10:36:53 UTC (rev 1319) +++ branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-26 11:29:26 UTC (rev 1320) @@ -55,6 +55,8 @@ self.subjectField = [] # Holds langSet level definition.This dictionary contains lists inside. self.languageDependentDefinition = {} +# Holds the source terms + self.sources = [] # Holds the target terms self.targets = [] # Holds the POS of target terms. @@ -90,7 +92,10 @@ # Find all the tig tagged elements. tigList = langSetList[i].findall('tig') # If this is the source term them, read the source context - if i==0 and tigList: + if i==0 and len(tigList)>0: + for eachTig in tigList: + termText = eachTig.find('term').text + self.sources.append(termText) descripList = tigList[0].findall('descrip') for each in descripList: if each.get('type')=='context': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-24 10:37:01
|
Revision: 1319 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1319&view=rev Author: enayet05 Date: 2011-04-24 10:36:53 +0000 (Sun, 24 Apr 2011) Log Message: ----------- Edited by Enayet to fixed tbx import and TM case sencitive problem Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py branches/wordforge0.8/WordForge/translate/search/lshtein.py branches/wordforge0.8/WordForge/translate/search/match.py branches/wordforge0.8/WordForge/translate/storage/tbx.py Modified: branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py 2011-04-24 10:28:55 UTC (rev 1318) +++ branches/wordforge0.8/WordForge/Editor/modules/TMSetting.py 2011-04-24 10:36:53 UTC (rev 1319) @@ -384,6 +384,10 @@ # self.iterNumber = 1 self.dumpMatcher() self.emitMatcher() + if (self.section == World.settingModeTM): + QtGui.QMessageBox.information(self, "TM Settings", "File could not be opened because of bad filename or malformed file or unsupported format") + else: + QtGui.QMessageBox.information(self, "Glossary Settings", "File could not be opened because of bad filename or malformed file or unsupported format") self.close() return @@ -412,6 +416,8 @@ QtGui.QMessageBox.information(self, "TM Settings", "File "+afile+" could not be opened") else: QtGui.QMessageBox.information(self, "Glossary Settings", "File "+afile+" could not be opened") + self.close() + return perc = int((float(iterNumber) / len(self.filenames)) * 100) self.ui.progressBar.setValue(perc) Modified: branches/wordforge0.8/WordForge/translate/search/lshtein.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/lshtein.py 2011-04-24 10:28:55 UTC (rev 1318) +++ branches/wordforge0.8/WordForge/translate/search/lshtein.py 2011-04-24 10:36:53 UTC (rev 1319) @@ -14,7 +14,6 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # -# Md. Enayet Ullah(en...@an...) # You should have received a copy of the GNU General Public License # along with translate; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -33,7 +32,6 @@ def python_distance(a, b, stopvalue=-1): """Calculates the distance for use in similarity calculation. Python version.""" - print "python_distance" l1 = len(a) l2 = len(b) if stopvalue == -1: @@ -63,9 +61,8 @@ Note that this does not support arbitrary sequence types, but only string types.""" - print "native_distance" - a = (a.lower()).strip() - b = (b.lower()).strip() +# a = (a.lower()).strip() +# b = (b.lower()).strip() return Levenshtein.distance(a, b) try: @@ -84,7 +81,6 @@ self.MAX_LEN = max_len def similarity(self, a, b, stoppercentage=40): - print "\n\nsimilarity" similarity = self.similarity_real(a, b, stoppercentage) measurements = 1 @@ -102,7 +98,6 @@ # if len(wrd_a) + len(wrd_b) > 2: # similarity += self.similarity_real(wrd_a, wrd_b, 0) # measurements += 1 - print "\n\n" return similarity / measurements def similarity_real(self, a, b, stoppercentage=40): @@ -122,7 +117,6 @@ - Implementation uses memory O(min(len(a), len(b)) - Excecution time is O(len(a)*len(b)) """ - print "similarity_real" l1, l2 = len(a), len(b) if l1 == 0 or l2 == 0: return 0 Modified: branches/wordforge0.8/WordForge/translate/search/match.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-24 10:28:55 UTC (rev 1318) +++ branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-24 10:36:53 UTC (rev 1319) @@ -65,7 +65,10 @@ """Returns whether this translation unit is usable for TM""" #TODO: We might want to consider more attributes, such as approved, reviewed, etc. if isinstance(unit, tbx.tbxunit): - context = unit.context[0] + if unit.context: + context = unit.context[0] + else: + context = '' if isinstance(unit, xliff.xliffunit): groups = unit.getcontextgroupsmsg("x-gettext-msgctxt") @@ -255,7 +258,7 @@ lowestscore = 0 # for candidate in self.candidates.units[startindex:]: - text=(text.lower()).strip() +# text=(text.lower()).strip() for candidate in self.candidates.units: cmpstring = candidate.source # if len(cmpstring) > stoplength: Modified: branches/wordforge0.8/WordForge/translate/storage/tbx.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-24 10:28:55 UTC (rev 1318) +++ branches/wordforge0.8/WordForge/translate/storage/tbx.py 2011-04-24 10:36:53 UTC (rev 1319) @@ -81,8 +81,9 @@ if eachDescrip.get('type') == 'definition': langLevelDefinition.append(eachDescrip.text) langName = eachLangSet.get("{%s}lang" % XML_NS) - if langLevelDefinition[0] == "target-definition": - langName = globalClass.TMGLStargetLanguageCode + if len(eachLangSet)>0: + if langSetList[1] == eachLangSet: + langName = globalClass.TMGLStargetLanguageCode self.languageDependentDefinition[langName] = langLevelDefinition for i in range (0, len(langSetList)): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tan...@us...> - 2011-04-24 10:29:01
|
Revision: 1318 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1318&view=rev Author: tanzim3911 Date: 2011-04-24 10:28:55 +0000 (Sun, 24 Apr 2011) Log Message: ----------- XLIFF Merge with Levenshtein Similarity Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py branches/wordforge0.8/WordForge/translate/search/lshtein.py Modified: branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-04-21 11:53:18 UTC (rev 1317) +++ branches/wordforge0.8/WordForge/Editor/modules/XliffMerge.py 2011-04-24 10:28:55 UTC (rev 1318) @@ -18,6 +18,7 @@ from PyQt4.QtCore import * from PyQt4.QtXml import * +from WordForge.translate.search import lshtein import itertools import math @@ -29,64 +30,80 @@ class XliffMerge: def __init__(self, oldFile, outFile, templateFIle): - self.templateFile = templateFIle self.oldFile = oldFile self.stickyIds = False self.outFile = outFile - - self.strings={} + self.oldNodeList=[] + self.templateNodeList=[] + (self.templateDoc, self.templateNodeList)=self.getDocUnitsList(self.templateFile) + (self.oldDoc, self.oldNodeList)=self.getDocUnitsList(self.oldFile) + self.quicksort_ID(self.oldNodeList , 0 , len(self.oldNodeList) - 1) # Sort the entire self.oldUnitsList of arguments --> quicksort(self.oldNodeList , START , END) + self.quicksort_ID(self.templateNodeList, 0,len(self.templateNodeList) - 1) # Sort the entire self.templetUnitsList of arguments --> quicksort(self.templetNodeList , START , END) - (self.templateDoc, self.templateUnits, self.templateUnitsList)=self.getDocUnitsList(self.templateFile) - (self.oldDoc, self.oldUnits, self.oldUnitsList)=self.getDocUnitsList(self.oldFile) - - self.freezedOldUnits=[] - for i in range(self.oldUnits.size()): - self.freezedOldUnits.append(self.oldUnits.at(i)) - - self.removedUnits=[] - self.INLINE_MARKUP_ELEMENTS=['g', 'x', 'bx', 'ex', 'bpt' , 'ept', 'ph', 'it'] #, 'mrk' -- doesn't have id attribute - globals()['recentlyRemoved']=[] globals()['lastCommon']=-1 - self.phaseName=self.addPhase() + self.merge( self.oldNodeList, self.templateNodeList, len(self.oldNodeList), len(self.templateNodeList)) - self.C = self.LCS(self.oldUnitsList, self.templateUnitsList) - - for eachlist in self.C: - eachlist.reverse() - self.C.reverse() - self.recordRemoved(self.C, self.oldUnitsList, self.templateUnitsList, len(self.oldUnitsList), len(self.templateUnitsList)) - self.merge(self.C, self.oldUnitsList, self.templateUnitsList, len(self.oldUnitsList), len(self.templateUnitsList)) - - for remNode in [self.freezedOldUnits[x] for x in self.removedUnits]: - remNode.parentNode().removeChild(remNode) - - self.containers=["source", "seg-source","target","g","bpt","ept","ph","it","mrk"] #immediate containers allowing markup for container in self.containers: self.fixWhiteSpaceInList(self.oldDoc.elementsByTagName(container)) - #if __name__ == "__main__": + #if __name__ == "__main__": #print __name__ file=QFile(self.outFile) - file.open(QIODevice.WriteOnly) + file.open(QIODevice.WriteOnly) stream=QTextStream(file) self.oldDoc.save(stream,2) stream.flush() file.close() - file.close() + #file.close() - - def saveElement(self, elem): contents=QString() stream=QTextStream(contents) elem.save(stream,0) return contents + def partition_ID(self, list, start, end): + pivot = list[end].toElement().attribute('id') # Partition around the last value + pivotNode = list[end] + bottom = start-1 # Start outside the area to be partitioned + top = end # Ditto + done = 0 + while not done: # Until all elements are partitioned... + while not done: # Until we find an out of place element... + bottom = bottom+1 # ... move the bottom up. + if bottom == top: # If we hit the top... + done = 1 # ... we are done. + break + if list[bottom].toElement().attribute('id') > pivot: # Is the bottom out of place? + list[top] = list[bottom] # Then put it at the top... + #list.insert(top, list[bottom]) # Then put it at the top... + break # ... and start searching from the top. + while not done: # Until we find an out of place element... + top = top-1 # ... move the top down. + if top == bottom: # If we hit the bottom... + done = 1 # ... we are done. + break + if list[top].toElement().attribute('id') < pivot: # Is the top out of place? + list[bottom] = list[top] # Then put it at the bottom... + #list.insert(bottom, list[top]) + break # ...and start searching from the bottom. + list[top] = pivotNode # Put the pivot in its place. + #list.insert(top, pivot) + return top # Return the split point + + def quicksort_ID(self, list, start, end): #QuickSort + if start < end: # If there are two or more elements... + split = self.partition_ID(list, start, end) # ... partition the sublist... + self.quicksort_ID(list, start, split-1) # ... and sort both halves. + self.quicksort_ID(list, split+1, end) + else: + return + def elementText(self, parent): contents=QString() n=parent.firstChild() @@ -98,8 +115,6 @@ n=n.nextSibling() return contents - - def getDocUnitsList(self, path): doc=QDomDocument() file=QFile(path) @@ -111,66 +126,12 @@ source=QXmlInputSource(file) doc.setContent(source,reader) file.close() - units=doc.elementsByTagName("trans-unit") - - unitsList=[] + NodeList=[] for i in range(units.count()): - unit=units.at(i) - if unit.firstChildElement("source").text() not in self.strings: - self.strings[unit.firstChildElement("source").text()]=len(self.strings) - unitsList.append(self.strings[unit.firstChildElement("source").text()]) + NodeList.append(units.at(i)) + return (doc, NodeList) - return (doc, units, unitsList) - - - - def lcs_length(self, xs, ys): - ny = len(ys) - curr = list(itertools.repeat(0, 1 + ny)) - for x in xs: - prev = list(curr) - for i, y in enumerate(ys): - if x == y: - curr[i+1] = prev[i] + 1 - else: - curr[i+1] = max(curr[i], prev[i+1]) - return curr[ny] - - - def LCS(self, X, Y): - m = len(X) - n = len(Y) - # An (m+1) times (n+1) matrix - self.C = [[0] * (n+1) for i in range(m+1)] - for i in range(1, m+1): - for j in range(1, n+1): - if X[i-1] == Y[j-1]: - self.C[i][j] = self.C[i-1][j-1] + 1 - else: - self.C[i][j] = max(self.C[i][j-1], self.C[i-1][j]) - return self.C - - - def recordRemoved(self, C, X, Y, lenX, lenY): - i = 0 - j = 0 - while i <= lenX and j<= lenY: - if i < lenX and j < lenY and X[i] == Y[j]: - i += 1 - j += 1 - else: - if i < lenX and (j == lenY or C[i][j+1] <= C[i+1][j]): - self.removedUnits.append(i) - i += 1 - - elif j < lenY and (i == lenX or C[i][j+1] > C[i+1][j]): - j += 1 - - else: - break - - def inlineTags(self, parent): result=[] elem=parent.firstChildElement() @@ -191,18 +152,17 @@ for attrNode in [elem.attributes().item(i) for i in range(elem.attributes().size())]: elem.removeChild(attrNode) - def cloneToAltTrans(self, unitAltToBe, newUnit): + def cloneToAltTrans(self, unitAltToBe, newUnit,match): altUnit=unitAltToBe.cloneNode().toElement() altUnit.setTagName('alt-trans') + altUnit.setAttribute('match-quality',match) + altUnit.setAttribute('origin','XLIFFUpgrade') altUnit.setAttribute('alttranstype','proposal') - altUnit.setAttribute('phase-name',self.phaseName) altUnit.removeAttribute('id') altUnit.removeAttribute('approved') refNode=newUnit.firstChildElement('alt-trans') if refNode.isNull(): altUnit=newUnit.appendChild(altUnit) else: altUnit=newUnit.insertBefore(altUnit,refNode) - - subAltUnits=[] subAltUnit=altUnit.firstChildElement('alt-trans') refNode=altUnit @@ -210,46 +170,37 @@ refNode=altUnit.parentNode().insertAfter(subAltUnit.cloneNode(),refNode) subAltUnits.append(subAltUnit) subAltUnit=subAltUnit.nextSiblingElement('alt-trans') - for subAltUnit in subAltUnits: altUnit.removeChild(subAltUnit) - return altUnit - - - def merge(self, C, X, Y, lenX, lenY): - - i = 0 - j = 0 - - while i <= lenX and j<= lenY: - if i < lenX and j < lenY and X[i] == Y[j]: - - globals()['recentlyRemoved']=[] - globals()['lastCommon']=i - templateUnit=self.templateUnits.at(j).toElement() - templateSource=templateUnit.firstChildElement("source") - commonUnit=self.freezedOldUnits[i].toElement() + + def merge(self, OldNode , NewNode , lenOldNodeList, lenNewNodeList): + OldCounter = 0 + NewCounter = 0 + while OldCounter <= lenOldNodeList and NewCounter <= lenNewNodeList: + AltTrans_FLAG = False + if OldCounter < lenOldNodeList and NewCounter < lenNewNodeList and OldNode[OldCounter].toElement().attribute('id') == NewNode[NewCounter].toElement().attribute('id') : #ID Equal + globals()['lastCommon'] = OldCounter + templateUnit = NewNode[NewCounter].toElement() + templateSource = templateUnit.firstChildElement("source") + commonUnit = OldNode[OldCounter].toElement() commonTarget=commonUnit.firstChildElement("target") commonSource=commonUnit.firstChildElement("source") targetIdsMap=self.getIdsMap(commonTarget) - equalIds=False - -# print "commonTarget: ", commonTarget.text() -# print "commonSource: ", commonSource.text() - - # [only] inline markup differs? + equalIds=False completelyEqual=self.saveElement(commonSource)==self.saveElement(templateSource) - if not completelyEqual: - altUnit=self.cloneToAltTrans(commonUnit,commonUnit) - commonTarget.setAttribute('state','needs-review-adaptation') - commonUnit.setAttribute('phase-name',self.phaseName) - commonTarget.setAttribute('phase-name',self.phaseName) - - #print ' '+templateSource.text() - # update inline markup attributes in target + if not completelyEqual: #Source is Not Equal + AltTrans_FLAG = True + levenshtein = lshtein.LevenshteinComparer() + #print "old:", commonSource.text(),"**new:", templateSource.text(),"**dist:", levenshtein.similarity(commonSource.text(), templateSource.text()) + match_percent = levenshtein.SimilarityPercent(commonSource.text(), templateSource.text()) + if match_percent >= 70.0: + altUnit=self.cloneToAltTrans(commonUnit,commonUnit, match_percent) + commonTarget.setAttribute('state','needs-review-adaptation') + #commonUnit.setAttribute('phase-name',self.phaseName) + #commonTarget.setAttribute('phase-name',self.phaseName) + for markupElement in self.INLINE_MARKUP_ELEMENTS: - templateElem=templateSource.firstChildElement(markupElement) commonSourceElem=commonSource.firstChildElement(markupElement) while not templateElem.isNull() and not commonSourceElem.isNull(): @@ -257,7 +208,7 @@ if targetIdsMap.has_key(commonSourceElem.attribute('id')): commonTargetElem=targetIdsMap[commonSourceElem.attribute('id')] self.removeAttributes(commonTargetElem) - for attrNode in [templateElem.attributes().item(i).toAttr() for i in range(templateElem.attributes().size())]: + for attrNode in [templateElem.attributes().item(OldCounter).toAttr() for OldCounter in range(templateElem.attributes().size())]: commonTargetElem.setAttribute(attrNode.name(), attrNode.value()) del targetIdsMap[commonSourceElem.attribute('id')] @@ -277,13 +228,15 @@ orphan.parentNode().removeChild(orphan) #copy templates source entirely - commonUnit.insertAfter(self.oldDoc.importNode(templateSource.cloneNode(),True), commonSource) + commonUnit.insertAfter(self.oldDoc.importNode(templateSource.cloneNode(),True), commonSource) commonUnit.removeChild(commonSource) - + if AltTrans_FLAG: + commonUnit.insertAfter(self.oldDoc.importNode(templateUnit.firstChildElement("target").cloneNode(),True), commonTarget) + commonUnit.removeChild(commonTarget) #now go over context items and see if they are different commonContextGroup=commonUnit.firstChildElement("context-group") templateContextGroup=templateUnit.firstChildElement("context-group") - contextsDiffer=False + contextsDiffer=False while not commonContextGroup.isNull() and not templateContextGroup.isNull() and not contextsDiffer: commonContext=commonContextGroup.firstChildElement("context") templateContext=templateContextGroup.firstChildElement("context") @@ -295,6 +248,7 @@ contextsDiffer=contextsDiffer or not commonContext.isNull() or not templateContext.isNull() templateContextGroup=templateContextGroup.nextSiblingElement("context-group") commonContextGroup=commonContextGroup.nextSiblingElement("context-group") + # check of the number os items in the lists are different contextsDiffer=contextsDiffer or not commonContextGroup.isNull() or not templateContextGroup.isNull() if contextsDiffer: @@ -315,92 +269,52 @@ equalIds=equalIds and commonUnit.attribute('id')==templateUnit.attribute('id') if not equalIds and self.stickyIds: commonUnit.removeAttribute('approved') - #if not commonTarget.attribute('state').contains('review'): commonTarget.setAttribute('state','needs-review-l10n') - if not commonTarget.hasChildNodes(): commonTarget.parentNode().removeChild(commonTarget) + if not commonTarget.hasChildNodes(): + commonTarget.parentNode().removeChild(commonTarget) #if equalIds and completelyEqual: #commonTarget.setAttribute('state-qualifier','id-match') commonUnit.setAttribute('id',templateUnit.attribute('id')) - - i += 1 - j += 1 - - else: - - if i < lenX and (j == lenY or C[i][j+1] <= C[i+1][j]): - globals()['recentlyRemoved'].append(i) - i += 1 - - elif j < lenY and (i == lenX or C[i][j+1] > C[i+1][j]): - templateUnit=self.templateUnits.at(j) + OldCounter +=1 + NewCounter +=1 + elif NewCounter < lenNewNodeList and (OldCounter == lenOldNodeList or OldNode[OldCounter].toElement().attribute('id') > NewNode[NewCounter].toElement().attribute('id') ): #Old ID greater then New ID + #print "2nd OldCounter:", OldCounter, "NewCounter:", NewCounter,"Source:", NewNode[NewCounter].toElement().firstChildElement("source").text() + templateUnit=NewNode[NewCounter] + Flag = True + length=len(self.oldNodeList) + for i in range(length): + try: + if self.oldNodeList[i].toElement().attribute('id') == templateUnit.toElement().attribute('id') and self.oldNodeList[i].firstChildElement("source").text() == templateUnit.firstChildElement("source").text(): + Flag = False + #print "I:", i,"#", self.outNodeList[i].toElement().attribute('id'), "**", self.outNodeList[i+1].firstChildElement("source").text() + except: + pass + #print "3rd templateUnit Source:", templateUnit.firstChildElement("source").text(), "##TARGET:", templateUnit.firstChildElement("target").text() + if Flag: newUnit=self.oldDoc.importNode(templateUnit, True).toElement() - newUnit.setAttribute('phase-name',self.phaseName) + #newUnit.setAttribute('phase-name',self.phaseName) - if globals()['lastCommon']==-1: - refNode=self.freezedOldUnits[0] + if globals()['lastCommon'] == -1: + #refNode=self.freezedOldUnits[0] + refNode=self.oldNodeList[0] refNode.parentNode().insertBefore(newUnit, refNode) else: - refNode=self.freezedOldUnits[ globals()['lastCommon'] ] + #refNode=self.freezedOldUnits[ globals()['lastCommon'] ] + refNode=self.oldNodeList[globals()['lastCommon']] refNode.parentNode().insertAfter(newUnit, refNode) - globals()['lastCommon']=i-1 #to preserve order -# print 'global: ', globals()['lastCommon'], i, j - - #look for alternate translations, neighbourhood first - - #nonRecentlyRemoved=[x for x in self.removedUnits if x not in globals()['recentlyRemoved']] - maxUnits=[] - newUnitText=newUnit.firstChildElement("source").text() - newUnitWords=newUnitText.split(' ') - - maxScore=0 - scores={} - for x in self.removedUnits: - remNode=self.freezedOldUnits[x] - remNodeText=remNode.firstChildElement("source").text() - commonWordLen=self.lcs_length(newUnitWords,remNodeText.split(' ')) - if (commonWordLen+1)<0.5*len(newUnitWords): - scores[x]=0 - continue - commonLen=self.lcs_length(newUnitText,remNodeText) - remLen=newUnitText.size()-commonLen - addLen=remNodeText.size()-commonLen - - if commonLen==0: score=0 - else: score=99*math.exp(0.2*math.log(1.0*commonLen/newUnitText.size())) / (math.exp(0.015*addLen)*math.exp(0.01*remLen)) - scores[x]=score - if maxScore<score:maxScore=score - if maxScore<80: - j+=1 - continue - - for x in self.removedUnits: - if scores[x]==maxScore: - remNode=self.freezedOldUnits[x] - maxUnits.append((score+1*(x in globals()['recentlyRemoved']), remNode)) - - def count_compare_inverted(x, y): return int(y[0]-x[0]) - maxUnits.sort(count_compare_inverted) - - for maxUnit in maxUnits: - #print maxUnit[0], - #print newUnitText, - #print '------------', - #print maxUnit[1].firstChildElement("source").text() - self.cloneToAltTrans(maxUnit[1],newUnit) - - j += 1 - - - else: - break - - - + globals()['lastCommon']=OldCounter-1 #to preserve order + NewCounter +=1 + elif OldCounter < lenOldNodeList and (NewCounter == lenNewNodeList or OldNode[OldCounter].toElement().attribute('id') < NewNode[NewCounter].toElement().attribute('id') ) : #Old ID less then New ID + #print "3rd OldCounter:",OldCounter, "NewCounter:", NewCounter,"Source:", OldNode[OldCounter].toElement().firstChildElement("source").text() + OldNode[OldCounter].parentNode().removeChild(OldNode[OldCounter]) + OldCounter +=1 + else: + break + def addPhase(self): VERSION='0.1' - file=self.oldDoc.elementsByTagName("file").at(0).toElement() header=file.firstChildElement("header") phasegroup=header.firstChildElement("phase-group") @@ -425,22 +339,16 @@ phaseElem.setAttribute("process-name", 'update-from-template') phaseElem.setAttribute("tool-id", 'xliffmerge-%s' % VERSION) phaseElem.setAttribute("date", QDate.currentDate().toString(Qt.ISODate)) - - toolElem=header.firstChildElement("tool") while not toolElem.isNull() and toolElem.attribute("tool-id")!='xliffmerge-%s' % VERSION: toolElem=toolElem.nextSiblingElement("tool") - if toolElem.isNull(): toolElem=header.appendChild(self.oldDoc.createElement("tool")).toElement() toolElem.setAttribute("tool-id",'xliffmerge-%s' % VERSION) toolElem.setAttribute("tool-name","xliffmerge.py") toolElem.setAttribute("tool-version",VERSION) - return 'update-from-template-%d' % i - - def fixWhiteSpace(self, elem): first=elem.firstChildElement() if not first.previousSibling().isCharacterData(): @@ -451,7 +359,6 @@ elem.insertAfter(self.oldDoc.createTextNode(''),n) n=n.nextSiblingElement() - def fixWhiteSpaceInList(self, nodeList): for node in [nodeList.at(x) for x in range(nodeList.size())]: self.fixWhiteSpace(node) Modified: branches/wordforge0.8/WordForge/translate/search/lshtein.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/lshtein.py 2011-04-21 11:53:18 UTC (rev 1317) +++ branches/wordforge0.8/WordForge/translate/search/lshtein.py 2011-04-24 10:28:55 UTC (rev 1318) @@ -33,6 +33,7 @@ def python_distance(a, b, stopvalue=-1): """Calculates the distance for use in similarity calculation. Python version.""" + print "python_distance" l1 = len(a) l2 = len(b) if stopvalue == -1: @@ -62,6 +63,7 @@ Note that this does not support arbitrary sequence types, but only string types.""" + print "native_distance" a = (a.lower()).strip() b = (b.lower()).strip() return Levenshtein.distance(a, b) @@ -82,6 +84,7 @@ self.MAX_LEN = max_len def similarity(self, a, b, stoppercentage=40): + print "\n\nsimilarity" similarity = self.similarity_real(a, b, stoppercentage) measurements = 1 @@ -99,6 +102,7 @@ # if len(wrd_a) + len(wrd_b) > 2: # similarity += self.similarity_real(wrd_a, wrd_b, 0) # measurements += 1 + print "\n\n" return similarity / measurements def similarity_real(self, a, b, stoppercentage=40): @@ -118,6 +122,7 @@ - Implementation uses memory O(min(len(a), len(b)) - Excecution time is O(len(a)*len(b)) """ + print "similarity_real" l1, l2 = len(a), len(b) if l1 == 0 or l2 == 0: return 0 @@ -155,7 +160,47 @@ penalty = 0 return 100 - (dist*1.0/l2)*100 - penalty + def SimilarityPercent(self, a, b, stoppercentage=40): + """Python_Distance""" + similarity = self.Real_Similarity(a, b, stoppercentage) + measurements = 1 + return similarity / measurements + def Real_Similarity(self, a, b, stoppercentage=40): + """Python_Distance""" + l1, l2 = len(a), len(b) + if l1 == 0 or l2 == 0: + return 0 + #Let's make l1 the smallest + if l1 > l2: + l1, l2 = l2, l1 + a, b = b, a + #maxsimilarity is the maximum similarity that can be attained as constrained + #by the difference in string length + maxsimilarity = 100 - 100.0*abs(l1 - l2)/l2 + if maxsimilarity < stoppercentage: + return maxsimilarity * 1.0 + #Let's penalise the score in cases where we shorten strings + penalty = 0 + if l2 > self.MAX_LEN: + b = b[:self.MAX_LEN] + l2 = self.MAX_LEN + penalty += 7 + if l1 > self.MAX_LEN: + a = a[:self.MAX_LEN] + l1 = self.MAX_LEN + penalty += 7 + #The actual value in the array that would represent a giveup situation: + stopvalue = math.ceil((100.0 - stoppercentage)/100 * l2) + dist = python_distance(a, b, stopvalue) + if dist > stopvalue: + return stoppercentage - 1.0 + #If MAX_LEN came into play, we consider the calculated distance to be + #representative of the distance between the whole, untrimmed strings + if dist == 0: + penalty = 0 + return 100 - (dist*1.0/l2)*100 - penalty + if __name__ == "__main__": from sys import argv comparer = LevenshteinComparer() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-21 11:53:24
|
Revision: 1317 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1317&view=rev Author: enayet05 Date: 2011-04-21 11:53:18 +0000 (Thu, 21 Apr 2011) Log Message: ----------- Edited by Enayet to fixed Escapes issue in PO files Modified Paths: -------------- branches/wordforge0.8/WordForge/translate/storage/poparser.py Modified: branches/wordforge0.8/WordForge/translate/storage/poparser.py =================================================================== --- branches/wordforge0.8/WordForge/translate/storage/poparser.py 2011-04-20 09:58:44 UTC (rev 1316) +++ branches/wordforge0.8/WordForge/translate/storage/poparser.py 2011-04-21 11:53:18 UTC (rev 1317) @@ -169,10 +169,10 @@ left = find(line, '"', start_pos) if left == start_pos or isspace(line[start_pos:left]): right = rfind(line, '"') - if left != right and line[right - 1] != '\\': # If we found a terminating quote - return parse_state.read_line()[left:right+1] - else: # If there is no terminating quote - return parse_state.read_line()[left:] + '"' +# if left != right and line[right - 1] != '\\': # If we found a terminating quote +# return parse_state.read_line()[left:right+1] +# else: # If there is no terminating quote + return parse_state.read_line()[left:right+1] #+ '"' return None def parse_msg_comment(parse_state, msg_comment_list, string): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ena...@us...> - 2011-04-20 09:58:51
|
Revision: 1316 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1316&view=rev Author: enayet05 Date: 2011-04-20 09:58:44 +0000 (Wed, 20 Apr 2011) Log Message: ----------- Edited by Enayet to fixed TMX tuid as numeric and placing all 100% matches to target Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py branches/wordforge0.8/WordForge/Editor/modules/Operator.py branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py branches/wordforge0.8/WordForge/translate/convert/WF_po2tmx.py branches/wordforge0.8/WordForge/translate/search/match.py Modified: branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py 2011-04-20 09:58:44 UTC (rev 1316) @@ -703,7 +703,7 @@ self.item_go_next_untrans.setText(0, "Next Untranslated") itemtext = self.gettext('Go', 'Next Untranslated') if itemtext == None: - self.item_go_next_untrans.setText(1, "CTRL+1") + self.item_go_next_untrans.setText(1, "CTRL+4") else: self.item_go_next_untrans.setText(1, itemtext) @@ -713,7 +713,7 @@ self.item_go_next_fuzzy.setText(0, "Next Fuzzy") itemtext = self.gettext('Go', 'Next Fuzzy') if itemtext == None: - self.item_go_next_fuzzy.setText(1, "CTRL+2") + self.item_go_next_fuzzy.setText(1, "CTRL+5") else: self.item_go_next_fuzzy.setText(1, itemtext) Modified: branches/wordforge0.8/WordForge/Editor/modules/Operator.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/Operator.py 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/Editor/modules/Operator.py 2011-04-20 09:58:44 UTC (rev 1316) @@ -1457,25 +1457,27 @@ if(terms <> 1): return False # searching for accelerators in the source - if self.AcceleratorMark in source: - source = source.split(self.AcceleratorMark) - source = ''.join(source) - self.accFlag = True + if self.AcceleratorMark: + if self.AcceleratorMark in source: + source = source.split(self.AcceleratorMark) + source = ''.join(source) + self.accFlag = True # making sure that there are no punctuations in the middle of the source - for each in globalClass.preferencePuncList: - if each in source[1:-1]: - return False + if len(source)>1: + for each in globalClass.preferencePuncList: + if each in source[1:-1]: + return False + + # searching punctuations at the start and end of the source + for each in globalClass.preferencePuncList: + if source[0] == each: + source = source[1:] + self.startPunc = each + + if source[-1] == each: + source = source[:-1] + self.endPunc = each -# searching punctuations at the start and end of the source - for each in globalClass.preferencePuncList: - if source[0] == each: - source = source[1:] - self.startPunc = each - - if source[-1] == each: - source = source[:-1] - self.endPunc = each - # sending the source for matching and returning the first glossary match glossaryMatch = self.lookupTerm(source) if glossaryMatch: Modified: branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-20 09:58:44 UTC (rev 1316) @@ -51,7 +51,7 @@ <x>0</x> <y>0</y> <width>1000</width> - <height>23</height> + <height>25</height> </rect> </property> <widget class="QMenu" name="menuEdit"> @@ -1736,7 +1736,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next untranslated string in the table.</p></body></html></string> </property> <property name="shortcut"> - <string>Ctrl+1</string> + <string>Ctrl+4</string> </property> </action> <action name="actionNext_Fuzzy"> @@ -1762,7 +1762,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next fuzzy string in the table.</p></body></html></string> </property> <property name="shortcut"> - <string>Ctrl+2</string> + <string>Ctrl+5</string> </property> </action> </widget> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-20 09:58:44 UTC (rev 1316) @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/ankur/work/margecopy/wordforge0.8/WordForge/Editor/ui/MainEditor.ui' +# Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/MainEditor.ui' # -# Created: Tue Apr 19 15:17:56 2011 -# by: PyQt4 UI code generator 4.7.4 +# Created: Wed Apr 20 15:49:00 2011 +# by: PyQt4 UI code generator 4.7.3 # # WARNING! All changes made in this file will be lost! @@ -31,7 +31,7 @@ self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 23)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 25)) self.menubar.setObjectName("menubar") self.menuEdit = QtGui.QMenu(self.menubar) self.menuEdit.setObjectName("menuEdit") @@ -454,14 +454,14 @@ self.actionBatch_Process = QtGui.QAction(MainWindow) self.actionBatch_Process.setEnabled(False) self.actionBatch_Process.setObjectName("actionBatch_Process") - self.actionUndoall = QtGui.QAction(MainWindow) - self.actionUndoall.setEnabled(False) - self.actionUndoall.setIcon(icon5) - self.actionUndoall.setShortcutContext(QtCore.Qt.ApplicationShortcut) - self.actionUndoall.setAutoRepeat(False) - self.actionUndoall.setVisible(False) - self.actionUndoall.setIconVisibleInMenu(False) - self.actionUndoall.setObjectName("actionUndoall") + self.actionUndoAll = QtGui.QAction(MainWindow) + self.actionUndoAll.setEnabled(False) + self.actionUndoAll.setIcon(icon5) + self.actionUndoAll.setShortcutContext(QtCore.Qt.ApplicationShortcut) + self.actionUndoAll.setAutoRepeat(False) + self.actionUndoAll.setVisible(False) + self.actionUndoAll.setIconVisibleInMenu(False) + self.actionUndoAll.setObjectName("actionUndoAll") self.actionConfigureShortcuts = QtGui.QAction(MainWindow) icon40 = QtGui.QIcon() icon40.addPixmap(QtGui.QPixmap(":/CustomizeShortcuts.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -482,7 +482,7 @@ self.actionNext_Fuzzy.setObjectName("actionNext_Fuzzy") self.menuEdit.addAction(self.actionUndo) self.menuEdit.addAction(self.actionRedo) - self.menuEdit.addAction(self.actionUndoall) + self.menuEdit.addAction(self.actionUndoAll) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionCut) self.menuEdit.addAction(self.actionCopy) @@ -564,7 +564,7 @@ self.menubar.addAction(self.menuHelp.menuAction()) self.toolFile.addAction(self.actionSave) self.toolFile.addAction(self.actionSaveas) - self.toolEdit.addAction(self.actionUndoall) + self.toolEdit.addAction(self.actionUndoAll) self.toolEdit.addAction(self.actionUndo) self.toolEdit.addAction(self.actionRedo) self.toolEdit.addAction(self.actionCut) @@ -855,9 +855,9 @@ self.actionChangeFileLanguage.setToolTip(QtGui.QApplication.translate("MainWindow", "Change the language code of the present file", None, QtGui.QApplication.UnicodeUTF8)) self.actionChangeFileLanguage.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+L", None, QtGui.QApplication.UnicodeUTF8)) self.actionBatch_Process.setText(QtGui.QApplication.translate("MainWindow", "Batch Change", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setToolTip(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Y", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setToolTip(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Y", None, QtGui.QApplication.UnicodeUTF8)) self.actionConfigureShortcuts.setText(QtGui.QApplication.translate("MainWindow", "Co&nfigure Shortcuts...", None, QtGui.QApplication.UnicodeUTF8)) self.actionConfigureShortcuts.setStatusTip(QtGui.QApplication.translate("MainWindow", "Open Configure Shortcuts Window...", None, QtGui.QApplication.UnicodeUTF8)) self.actionConfigureShortcuts.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Project Manager</h3>Use this to open Configure Shortcuts window.", None, QtGui.QApplication.UnicodeUTF8)) @@ -869,7 +869,7 @@ "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Untranslated Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next untranslated string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+1", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+4", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setText(QtGui.QApplication.translate("MainWindow", "Next Fu&zzy", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next fuzzy message", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" @@ -878,7 +878,7 @@ "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Fuzzy Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next fuzzy string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+2", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+5", None, QtGui.QApplication.UnicodeUTF8)) import images_rc Modified: branches/wordforge0.8/WordForge/translate/convert/WF_po2tmx.py =================================================================== --- branches/wordforge0.8/WordForge/translate/convert/WF_po2tmx.py 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/translate/convert/WF_po2tmx.py 2011-04-20 09:58:44 UTC (rev 1316) @@ -49,15 +49,18 @@ def convertfiles(self, inputfile, tmxfile, sourcelanguage='en-US', targetlanguage=None): """converts a .po file (possibly many) to TMX file""" inputstore = po.pofile(inputfile) + msgid = 1 for inunit in inputstore.units: if inunit.isheader() or inunit.isblank() or not inunit.istranslated() or inunit.isfuzzy(): continue source = inunit.source translation = inunit.target msgctxt = inunit.getcontext() + tuid = str(msgid) # TODO place source location in comments - tmxfile.addtranslation(source, sourcelanguage, translation, targetlanguage, msgctxt) - + tmxfile.addtranslation(source, sourcelanguage, translation, targetlanguage, msgctxt, tuid) + msgid +=1 + def convertpo(inputfile, outputfile, templatefile, sourcelanguage='en-US', targetlanguage=None): """reads in stdin using fromfileclass, converts using convertorclass, writes to stdout""" convertor = po2tmx() @@ -82,7 +85,7 @@ def openoutputfile(self, subfile): """returns a pseudo-file object for the given subfile""" def onclose(contents): - pass + pass outputfile = wStringIO.CatchStringOutput(onclose) outputfile.filename = subfile outputfile.tmxfile = self.tmxfile @@ -98,7 +101,7 @@ self.output = open(options.output, 'w') self.output.write(str(options.outputarchive.tmxfile)) self.output.close() - + def main(argv=None): formats = {"po": ("tmx", convertpo), ("po", "tmx"): ("tmx", convertpo)} archiveformats = {(None, "output"): tmxmultifile, (None, "template"): tmxmultifile} Modified: branches/wordforge0.8/WordForge/translate/search/match.py =================================================================== --- branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-19 10:18:44 UTC (rev 1315) +++ branches/wordforge0.8/WordForge/translate/search/match.py 2011-04-20 09:58:44 UTC (rev 1316) @@ -27,6 +27,7 @@ from WordForge.translate.storage import base from WordForge.translate.storage import po from WordForge.translate.storage import tbx +from WordForge.translate.storage import tmx from WordForge.translate.storage import xliff from WordForge.translate.misc.multistring import multistring from WordForge.Editor.modules.globalClass import globalClass @@ -60,10 +61,28 @@ self.inittm(store) self.addpercentage = True def usable(self, unit): + context = '' """Returns whether this translation unit is usable for TM""" #TODO: We might want to consider more attributes, such as approved, reviewed, etc. + if isinstance(unit, tbx.tbxunit): + context = unit.context[0] + + if isinstance(unit, xliff.xliffunit): + groups = unit.getcontextgroupsmsg("x-gettext-msgctxt") + if groups: + context = groups[0][0][1] + + if isinstance(unit, po.pounit): + context = unit.getcontext() + + if isinstance(unit, tmx.tmxunit): + context = unit.getcontext() + source = unit.source target = unit.target + if context: + source = source + context + # if source and target and (self.usefuzzy or not unit.isfuzzy()): if source and (self.usefuzzy or not unit.isfuzzy()): if source in self.existingunits and self.existingunits[source] == target: @@ -99,6 +118,7 @@ if not isinstance(units, list): units = [units] countUnits = len(units) + pomsgid = 1 self.countUnits += countUnits approvedunits=[] for unit in units: @@ -151,13 +171,16 @@ simpleunit.orig_target = candidate.target simpleunit.source = unicode(candidate.source) simpleunit.target = unicode(candidate.target) - simpleunit.id = candidate.getid() if isinstance(candidate, xliff.xliffunit): + simpleunit.id = candidate.getid() groups = candidate.getcontextgroupsmsg("x-gettext-msgctxt") if groups: simpleunit.context = groups[0][0][1] if isinstance(candidate, po.pounit): - simpleunit.context = candidate.getcontext() + poid = str(pomsgid) + simpleunit.id = poid + pomsgid +=1 + simpleunit.context = candidate.getcontext() else: simpleunit.source = candidate.source simpleunit.target = candidate.target This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2011-04-19 10:18:52
|
Revision: 1315 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1315&view=rev Author: rakibm Date: 2011-04-19 10:18:44 +0000 (Tue, 19 Apr 2011) Log Message: ----------- Undoing some unnecessary changes during 1310 to 1314 revision Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/images/images.qrc branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py branches/wordforge0.8/WordForge/Editor/ui/images_rc.py Modified: branches/wordforge0.8/WordForge/Editor/images/images.qrc =================================================================== --- branches/wordforge0.8/WordForge/Editor/images/images.qrc 2011-04-17 11:00:29 UTC (rev 1314) +++ branches/wordforge0.8/WordForge/Editor/images/images.qrc 2011-04-19 10:18:44 UTC (rev 1315) @@ -86,7 +86,6 @@ <file>wordforg.png</file> <file>upgrade_xliff.png</file> <file>thesaurus.png</file> -<file>revert.png</file> <file>CustomizeShortcuts.png</file> </qresource> </RCC> Modified: branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py 2011-04-17 11:00:29 UTC (rev 1314) +++ branches/wordforge0.8/WordForge/Editor/modules/ConfigureShortcuts.py 2011-04-19 10:18:44 UTC (rev 1315) @@ -306,7 +306,7 @@ self.item_undo.setText(0, "Undo") # set first items's text itemtext = self.gettext('Edit', 'Undo') if itemtext == None: - self.item_undo.setText(1, "CTRL+Y") # sets first items's shortcut + self.item_undo.setText(1, "CTRL+Z") # sets first items's shortcut else: self.item_undo.setText(1, itemtext) @@ -703,7 +703,7 @@ self.item_go_next_untrans.setText(0, "Next Untranslated") itemtext = self.gettext('Go', 'Next Untranslated') if itemtext == None: - self.item_go_next_untrans.setText(1, "CTRL+4") + self.item_go_next_untrans.setText(1, "CTRL+1") else: self.item_go_next_untrans.setText(1, itemtext) @@ -713,7 +713,7 @@ self.item_go_next_fuzzy.setText(0, "Next Fuzzy") itemtext = self.gettext('Go', 'Next Fuzzy') if itemtext == None: - self.item_go_next_fuzzy.setText(1, "CTRL+5") + self.item_go_next_fuzzy.setText(1, "CTRL+2") else: self.item_go_next_fuzzy.setText(1, itemtext) @@ -922,7 +922,7 @@ # The following handers are used for handling button events. def handle_erase_trans(self): if self.setshortcut == 0: - self.button_erase_trans.setText("New Accelarator") + self.button_erase_trans.setText("Type A New Shortcut") self.button_erase_trans.setDisabled(1) self.editbutton14 = 1 self.setshortcut = 1 @@ -931,7 +931,7 @@ def handle_header(self): if self.setshortcut == 0: - self.button_header.setText("New Accelarator") + self.button_header.setText("Type A New Shortcut") self.button_header.setDisabled(1) self.editbutton13 = 1 self.setshortcut = 1 @@ -940,7 +940,7 @@ def handle_change_fuzzy(self): if self.setshortcut == 0: - self.button_change_fuzzy.setText("New Accelarator") + self.button_change_fuzzy.setText("Type A New Shortcut") self.button_change_fuzzy.setDisabled(1) self.editbutton12 = 1 self.setshortcut = 1 @@ -949,7 +949,7 @@ def handle_toogle_fuzzy(self): if self.setshortcut == 0: - self.button_toogle_fuzzy.setText("New Accelarator") + self.button_toogle_fuzzy.setText("Type A New Shortcut") self.button_toogle_fuzzy.setDisabled(1) self.editbutton11 = 1 self.setshortcut = 1 @@ -958,7 +958,7 @@ def handle_src_to_tar(self): if self.setshortcut == 0: - self.button_src_to_tar.setText("New Accelarator") + self.button_src_to_tar.setText("Type A New Shortcut") self.button_src_to_tar.setDisabled(1) self.editbutton10 = 1 self.setshortcut = 1 @@ -967,7 +967,7 @@ def handle_bm_clear(self): if self.setshortcut == 0: - self.button_bm_clear.setText("New Accelarator") + self.button_bm_clear.setText("Type A New Shortcut") self.button_bm_clear.setDisabled(1) self.bmbutton4 = 1 self.setshortcut = 1 @@ -976,7 +976,7 @@ def handle_bm_prev(self): if self.setshortcut == 0: - self.button_bm_prev.setText("New Accelarator") + self.button_bm_prev.setText("Type A New Shortcut") self.button_bm_prev.setDisabled(1) self.bmbutton3 = 1 self.setshortcut = 1 @@ -985,7 +985,7 @@ def handle_bm_next(self): if self.setshortcut == 0: - self.button_bm_next.setText("New Accelarator") + self.button_bm_next.setText("Type A New Shortcut") self.button_bm_next.setDisabled(1) self.bmbutton2 = 1 self.setshortcut = 1 @@ -994,7 +994,7 @@ def handle_bm_toogle(self): if self.setshortcut == 0: - self.button_bm_toogle.setText("New Accelarator") + self.button_bm_toogle.setText("Type A New Shortcut") self.button_bm_toogle.setDisabled(1) self.bmbutton1 = 1 self.setshortcut = 1 @@ -1003,7 +1003,7 @@ def handle_go_next_untrans(self): if self.setshortcut == 0: - self.button_go_next_untrans.setText("New Accelarator") + self.button_go_next_untrans.setText("Type A New Shortcut") self.button_go_next_untrans.setDisabled(1) self.gobutton5 = 1 self.setshortcut = 1 @@ -1012,7 +1012,7 @@ def handle_go_str_num(self): if self.setshortcut == 0: - self.button_go_str_num.setText("New Accelarator") + self.button_go_str_num.setText("Type A New Shortcut") self.button_go_str_num.setDisabled(1) self.gobutton7 = 1 self.setshortcut = 1 @@ -1021,7 +1021,7 @@ def handle_go_next_fuzzy(self): if self.setshortcut == 0: - self.button_go_next_fuzzy.setText("New Accelarator") + self.button_go_next_fuzzy.setText("Type A New Shortcut") self.button_go_next_fuzzy.setDisabled(1) self.gobutton6 = 1 self.setshortcut = 1 @@ -1030,7 +1030,7 @@ def handle_go_last_msg(self): if self.setshortcut == 0: - self.button_go_last_msg.setText("New Accelarator") + self.button_go_last_msg.setText("Type A New Shortcut") self.button_go_last_msg.setDisabled(1) self.gobutton4 = 1 self.setshortcut = 1 @@ -1039,7 +1039,7 @@ def handle_go_next_msg(self): if self.setshortcut == 0: - self.button_go_next_msg.setText("New Accelarator") + self.button_go_next_msg.setText("Type A New Shortcut") self.button_go_next_msg.setDisabled(1) self.gobutton3 = 1 self.setshortcut = 1 @@ -1048,7 +1048,7 @@ def handle_go_prev_msg(self): if self.setshortcut == 0: - self.button_go_prev_msg.setText("New Accelarator") + self.button_go_prev_msg.setText("Type A New Shortcut") self.button_go_prev_msg.setDisabled(1) self.gobutton2 = 1 self.setshortcut = 1 @@ -1057,7 +1057,7 @@ def handle_go_fst_msg(self): if self.setshortcut == 0: - self.button_go_fst_msg.setText("New Accelarator") + self.button_go_fst_msg.setText("Type A New Shortcut") self.button_go_fst_msg.setDisabled(1) self.gobutton1 = 1 self.setshortcut = 1 @@ -1066,7 +1066,7 @@ def handle_src_equ_trans(self): if self.setshortcut == 0: - self.button_src_equ_trans.setText("New Accelarator") + self.button_src_equ_trans.setText("Type A New Shortcut") self.button_src_equ_trans.setDisabled(1) self.viewbutton4 = 1 self.setshortcut = 1 @@ -1075,7 +1075,7 @@ def handle_shw_trans_msg(self): if self.setshortcut == 0: - self.button_shw_trans_msg.setText("New Accelarator") + self.button_shw_trans_msg.setText("Type A New Shortcut") self.button_shw_trans_msg.setDisabled(1) self.view = 1 self.viewbutton3 = 1 @@ -1085,7 +1085,7 @@ def handle_shw_fuzzy_msg(self): if self.setshortcut == 0: - self.button_shw_fuzzy_msg.setText("New Accelarator") + self.button_shw_fuzzy_msg.setText("Type A New Shortcut") self.button_shw_fuzzy_msg.setDisabled(1) self.view = 1 self.viewbutton2 = 1 @@ -1095,7 +1095,7 @@ def handle_shw_untranslate_msg(self): if self.setshortcut == 0: - self.button_shw_untranslate_msg.setText("New Accelarator") + self.button_shw_untranslate_msg.setText("Type A New Shortcut") self.button_shw_untranslate_msg.setDisabled(1) self.view = 1 self.viewbutton1 = 1 @@ -1105,7 +1105,7 @@ def handlereplace(self): if self.setshortcut == 0: - self.button_replace.setText("New Accelarator") + self.button_replace.setText("Type A New Shortcut") self.button_replace.setDisabled(1) self.edit = 1 self.editbutton9 = 1 @@ -1115,7 +1115,7 @@ def handlefindnext(self): if self.setshortcut == 0: - self.button_find_next.setText("New Accelarator") + self.button_find_next.setText("Type A New Shortcut") self.button_find_next.setDisabled(1) self.edit = 1 self.editbutton8 = 1 @@ -1125,7 +1125,7 @@ def handlefindprev(self): if self.setshortcut == 0: - self.button_find_prev.setText("New Accelarator") + self.button_find_prev.setText("Type A New Shortcut") self.button_find_prev.setDisabled(1) self.edit = 1 self.editbutton7 = 1 @@ -1135,7 +1135,7 @@ def handlefind(self): if self.setshortcut == 0: - self.button_find.setText("New Accelarator") + self.button_find.setText("Type A New Shortcut") self.button_find.setDisabled(1) self.edit = 1 self.editbutton6 = 1 @@ -1145,7 +1145,7 @@ def handlepaste(self): if self.setshortcut == 0: - self.button_paste.setText("New Accelarator") + self.button_paste.setText("Type A New Shortcut") self.button_paste.setDisabled(1) self.edit = 1 self.editbutton5 = 1 @@ -1155,7 +1155,7 @@ def handlecut(self): if self.setshortcut == 0: - self.button_cut.setText("New Accelarator") + self.button_cut.setText("Type A New Shortcut") self.button_cut.setDisabled(1) self.edit = 1 self.editbutton4 = 1 @@ -1165,7 +1165,7 @@ def handlecopy(self): if self.setshortcut == 0: - self.button_copy.setText("New Accelarator") + self.button_copy.setText("Type A New Shortcut") self.button_copy.setDisabled(1) self.edit = 1 self.editbutton3 = 1 @@ -1175,7 +1175,7 @@ def handleredo(self): if self.setshortcut == 0: - self.button_redo.setText("New Accelarator") + self.button_redo.setText("Type A New Shortcut") self.button_redo.setDisabled(1) self.edit = 1 self.editbutton2 = 1 @@ -1185,7 +1185,7 @@ def handleundo(self): if self.setshortcut == 0: - self.button_undo.setText("New Accelarator") + self.button_undo.setText("Type A New Shortcut") self.button_undo.setDisabled(1) self.editbutton1 = 1 self.setshortcut = 1 @@ -1194,7 +1194,7 @@ def takinput6(self): if self.setshortcut == 0: - self.button_quit.setText("New Accelarator") + self.button_quit.setText("Type A New Shortcut") self.button_quit.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1207,7 +1207,7 @@ def takinput5(self): if self.setshortcut == 0: - self.button_save_as.setText("New Accelarator") + self.button_save_as.setText("Type A New Shortcut") self.button_save_as.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1220,7 +1220,7 @@ def takinput4(self): if self.setshortcut == 0: - self.button_save.setText("New Accelarator") + self.button_save.setText("Type A New Shortcut") self.button_save.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1233,7 +1233,7 @@ def takinput3(self): if self.setshortcut == 0: - self.button_close.setText("New Accelarator") + self.button_close.setText("Type A New Shortcut") self.button_close.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1246,7 +1246,7 @@ def takinput2(self): if self.setshortcut == 0: - self.button_open.setText("New Accelarator") + self.button_open.setText("Type A New Shortcut") self.button_open.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1258,7 +1258,7 @@ return def takinput(self): if self.setshortcut == 0: - self.button_new_window.setText("New Accelarator") + self.button_new_window.setText("Type A New Shortcut") self.button_new_window.setDisabled(1) self.filee = 1 if self.filee == 1: @@ -1453,7 +1453,7 @@ ret = mb.button_mod() if ret == True: mb.save_config() - self.parent.ui.actionUndoAll.setShortcut(QtGui.QApplication.translate("MainWindow", self.modifier, None, QtGui.QApplication.UnicodeUTF8)) + self.parent.ui.actionUndo.setShortcut(QtGui.QApplication.translate("MainWindow", self.modifier, None, QtGui.QApplication.UnicodeUTF8)) if self.editbutton2 == 1: mb = ModifyButton(self.button_redo, self.ui.treeWidget, self.modifier, 1, 1) Modified: branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-17 11:00:29 UTC (rev 1314) +++ branches/wordforge0.8/WordForge/Editor/modules/MainEditor.py 2011-04-19 10:18:44 UTC (rev 1315) @@ -594,7 +594,7 @@ continue ## EDIT ITEMS if 'undo' == option[x]: - self.ui.actionUndoAll.setShortcut(QtGui.QApplication.translate("MainWindow", res, None, QtGui.QApplication.UnicodeUTF8)) + self.ui.actionUndo.setShortcut(QtGui.QApplication.translate("MainWindow", res, None, QtGui.QApplication.UnicodeUTF8)) continue if 'redo' == option[x]: self.ui.actionRedo.setShortcut(QtGui.QApplication.translate("MainWindow", res, None, QtGui.QApplication.UnicodeUTF8)) @@ -857,7 +857,7 @@ self.ui.actionCut.setEnabled(bool) def enableUndo(self, bool): - self.ui.actionUndoAll.setEnabled(bool) + self.ui.actionUndo.setEnabled(bool) def enableRedo(self, bool): self.ui.actionRedo.setEnabled(bool) @@ -1216,7 +1216,7 @@ self.disconnect(self.ui.actionPaste, QtCore.SIGNAL("triggered()"), oldWidget, QtCore.SLOT("paste()")) # undo, redo and selectAll in oldWidget if (callable(getattr(oldWidget, "document", None))): - self.disconnect(self.ui.actionUndoAll, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("undo()")) + self.disconnect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("undo()")) self.disconnect(self.ui.actionRedo, QtCore.SIGNAL("triggered()"), oldWidget.document(), QtCore.SLOT("redo()")) if (newWidget): @@ -1251,7 +1251,7 @@ redoAvailable = newWidget.document().isRedoAvailable() self.enableUndo(undoAvailable) self.enableRedo(redoAvailable) - self.connect(self.ui.actionUndoAll, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("undo()")) + self.connect(self.ui.actionUndo, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("undo()")) self.connect(self.ui.actionRedo, QtCore.SIGNAL("triggered()"), newWidget.document(), QtCore.SLOT("redo()")) else: self.enableUndo(False) Modified: branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-17 11:00:29 UTC (rev 1314) +++ branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-19 10:18:44 UTC (rev 1315) @@ -58,6 +58,7 @@ <property name="title"> <string>&Edit</string> </property> + <addaction name="actionUndo"/> <addaction name="actionRedo"/> <addaction name="actionUndoAll"/> <addaction name="separator"/> @@ -84,23 +85,11 @@ <property name="title"> <string>&View</string> </property> - <widget class="QMenu" name="menuInline_Tags"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="title"> - <string>Inline Tags</string> - </property> - <addaction name="actionFull_tagid"/> - <addaction name="actionFull"/> - <addaction name="actionMinimal"/> - </widget> <addaction name="actionFilterUntranslated"/> <addaction name="actionFilterFuzzy"/> <addaction name="actionFilterTranslated"/> <addaction name="actionFilterSourceEqualTarget"/> <addaction name="actionShow_Nonprinting_Char"/> - <addaction name="menuInline_Tags"/> </widget> <widget class="QMenu" name="menuGo"> <property name="title"> @@ -112,14 +101,8 @@ <addaction name="actionLast"/> <addaction name="separator"/> <addaction name="actionGoTo"/> - - <addaction name="separator"/> <addaction name="actionNext_Untranslated"/> <addaction name="actionNext_Fuzzy"/> - - <addaction name="actionNext_Untranslated"/> - <addaction name="actionNext_Fuzzy"/> - </widget> <widget class="QMenu" name="menuHelp"> <property name="title"> @@ -271,6 +254,7 @@ <bool>false</bool> </attribute> <addaction name="actionUndoAll"/> + <addaction name="actionUndo"/> <addaction name="actionRedo"/> <addaction name="actionCut"/> <addaction name="actionCopy"/> @@ -292,9 +276,6 @@ <property name="whatsThis"> <string/> </property> - <property name="allowedAreas"> - <set>Qt::AllToolBarAreas</set> - </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -473,6 +454,39 @@ <bool>true</bool> </property> </action> + <action name="actionUndo"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="icon"> + <iconset resource="../images/images.qrc"> + <normaloff>:/undo.png</normaloff>:/undo.png</iconset> + </property> + <property name="text"> + <string>&Undo</string> + </property> + <property name="statusTip"> + <string>Undo the last change</string> + </property> + <property name="whatsThis"> + <string><h3>Undo</h3>Use this to undo the last change done in the editor.</string> + </property> + <property name="shortcut"> + <string>Ctrl+Z</string> + </property> + <property name="shortcutContext"> + <enum>Qt::WindowShortcut</enum> + </property> + <property name="autoRepeat"> + <bool>true</bool> + </property> + <property name="visible"> + <bool>true</bool> + </property> + <property name="iconVisibleInMenu"> + <bool>true</bool> + </property> + </action> <action name="actionRedo"> <property name="enabled"> <bool>false</bool> @@ -925,7 +939,7 @@ <bool>false</bool> </property> <property name="text"> - <string>&Header...</string> + <string>PO &Header...</string> </property> <property name="statusTip"> <string>Open header dialog...</string> @@ -1636,12 +1650,6 @@ <property name="text"> <string>Change &Language of Present File</string> </property> - <property name="shortcut"> - <string>Ctrl+L</string> - </property> - <property name="iconVisibleInMenu"> - <bool>true</bool> - </property> <property name="toolTip"> <string>Change the language code of the present file</string> </property> @@ -1677,98 +1685,34 @@ <property name="shortcutContext"> <enum>Qt::ApplicationShortcut</enum> </property> - </action> - <action name="actionFull_tagid"> - <property name="checkable"> - <bool>true</bool> + <property name="autoRepeat"> + <bool>false</bool> </property> - <property name="text"> - <string>Full+tagid</string> - </property> - </action> - <action name="actionFull"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="text"> - <string>Full</string> - </property> - </action> - <action name="actionMinimal"> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="text"> - <string>Minimal</string> - </property> - </action> - <action name="actionNext_Untranslated"> - <property name="enabled"> + <property name="visible"> <bool>false</bool> </property> - <property name="icon"> - <iconset> - <normaloff>../images/nextuntranslated.png</normaloff>../images/nextuntranslated.png</iconset> - </property> - <property name="text"> - <string>Next &Untranslated</string> - </property> - <property name="statusTip"> - <string>Go to the next untranslated string</string> - </property> - <property name="whatsThis"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Next Untranslated Message</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next untranslated string in the table.</p></body></html></string> - </property> - <property name="shortcut"> - <string>Ctrl+4</string> - </property> <property name="iconVisibleInMenu"> - <bool>true</bool> - </property> - </action> - <action name="actionNext_Fuzzy"> - <property name="enabled"> <bool>false</bool> </property> + </action> + <action name="actionConfigureShortcuts"> <property name="icon"> - <iconset> - <normaloff>../images/nextfuzzy.png</normaloff>../images/nextfuzzy.png</iconset> + <iconset resource="../images/images.qrc"> + <normaloff>:/CustomizeShortcuts.png</normaloff>:/CustomizeShortcuts.png</iconset> </property> <property name="text"> - <string>Next Fu&zzy</string> + <string>Co&nfigure Shortcuts...</string> </property> <property name="statusTip"> - <string>Go to the next fuzzy string</string> + <string>Open Configure Shortcuts Window...</string> </property> <property name="whatsThis"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Next Fuzzy Message</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next fuzzy string in the table.</p></body></html></string> + <string><h3>Project Manager</h3>Use this to open Configure Shortcuts window.</string> </property> - <property name="shortcut"> - <string>Ctrl+5</string> - </property> <property name="iconVisibleInMenu"> <bool>true</bool> </property> </action> - <action name="actionConfigureShortcuts"> - <property name="icon"> - <iconset resource="../images/images.qrc"> - <normaloff>:/CustomizeShortcuts.png</normaloff>:/CustomizeShortcuts.png</iconset> - </property> - <property name="text"> - <string>Confi&gure Shortcuts...</string> - </property> - </action> <action name="actionNext_Untranslated"> <property name="enabled"> <bool>false</bool> @@ -1780,9 +1724,6 @@ <property name="text"> <string>Next &Untranslated</string> </property> - <property name="toolTip"> - <string>Next Untranslated</string> - </property> <property name="statusTip"> <string>Go to the next untranslated message</string> </property> @@ -1797,9 +1738,6 @@ <property name="shortcut"> <string>Ctrl+1</string> </property> - <property name="iconVisibleInMenu"> - <bool>true</bool> - </property> </action> <action name="actionNext_Fuzzy"> <property name="enabled"> @@ -1826,11 +1764,7 @@ <property name="shortcut"> <string>Ctrl+2</string> </property> - <property name="iconVisibleInMenu"> - <bool>true</bool> - </property> </action> - </widget> <resources> <include location="../images/images.qrc"/> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-17 11:00:29 UTC (rev 1314) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-19 10:18:44 UTC (rev 1315) @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/ankur/work/trunk_0.8/WordForge/Editor/ui/MainEditor.ui' +# Form implementation generated from reading ui file '/home/ankur/work/margecopy/wordforge0.8/WordForge/Editor/ui/MainEditor.ui' # -# Created: Sun Apr 17 16:51:41 2011 +# Created: Tue Apr 19 15:17:56 2011 # by: PyQt4 UI code generator 4.7.4 # # WARNING! All changes made in this file will be lost! @@ -38,9 +38,6 @@ self.menuView = QtGui.QMenu(self.menubar) self.menuView.setEnabled(True) self.menuView.setObjectName("menuView") - self.menuInline_Tags = QtGui.QMenu(self.menuView) - self.menuInline_Tags.setEnabled(False) - self.menuInline_Tags.setObjectName("menuInline_Tags") self.menuGo = QtGui.QMenu(self.menubar) self.menuGo.setObjectName("menuGo") self.menuHelp = QtGui.QMenu(self.menubar) @@ -81,7 +78,6 @@ self.toolNavigation.setAcceptDrops(False) self.toolNavigation.setStatusTip("") self.toolNavigation.setWhatsThis("") - self.toolNavigation.setAllowedAreas(QtCore.Qt.AllToolBarAreas) self.toolNavigation.setOrientation(QtCore.Qt.Horizontal) self.toolNavigation.setObjectName("toolNavigation") MainWindow.addToolBar(QtCore.Qt.ToolBarArea(QtCore.Qt.TopToolBarArea), self.toolNavigation) @@ -122,40 +118,50 @@ self.actionExit.setIcon(icon4) self.actionExit.setIconVisibleInMenu(True) self.actionExit.setObjectName("actionExit") + self.actionUndo = QtGui.QAction(MainWindow) + self.actionUndo.setEnabled(True) + icon5 = QtGui.QIcon() + icon5.addPixmap(QtGui.QPixmap(":/undo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionUndo.setIcon(icon5) + self.actionUndo.setShortcutContext(QtCore.Qt.WindowShortcut) + self.actionUndo.setAutoRepeat(True) + self.actionUndo.setVisible(True) + self.actionUndo.setIconVisibleInMenu(True) + self.actionUndo.setObjectName("actionUndo") self.actionRedo = QtGui.QAction(MainWindow) self.actionRedo.setEnabled(False) - icon5 = QtGui.QIcon() - icon5.addPixmap(QtGui.QPixmap(":/redo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionRedo.setIcon(icon5) + icon6 = QtGui.QIcon() + icon6.addPixmap(QtGui.QPixmap(":/redo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionRedo.setIcon(icon6) self.actionRedo.setIconVisibleInMenu(True) self.actionRedo.setObjectName("actionRedo") self.actionCut = QtGui.QAction(MainWindow) self.actionCut.setEnabled(False) - icon6 = QtGui.QIcon() - icon6.addPixmap(QtGui.QPixmap(":/cut.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCut.setIcon(icon6) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(":/cut.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCut.setIcon(icon7) self.actionCut.setIconVisibleInMenu(True) self.actionCut.setObjectName("actionCut") self.actionCopy = QtGui.QAction(MainWindow) self.actionCopy.setCheckable(False) self.actionCopy.setEnabled(False) - icon7 = QtGui.QIcon() - icon7.addPixmap(QtGui.QPixmap(":/copy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCopy.setIcon(icon7) + icon8 = QtGui.QIcon() + icon8.addPixmap(QtGui.QPixmap(":/copy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCopy.setIcon(icon8) self.actionCopy.setIconVisibleInMenu(True) self.actionCopy.setObjectName("actionCopy") self.actionPaste = QtGui.QAction(MainWindow) self.actionPaste.setEnabled(False) - icon8 = QtGui.QIcon() - icon8.addPixmap(QtGui.QPixmap(":/paste.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPaste.setIcon(icon8) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(":/paste.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPaste.setIcon(icon9) self.actionPaste.setIconVisibleInMenu(True) self.actionPaste.setObjectName("actionPaste") self.actionFind = QtGui.QAction(MainWindow) self.actionFind.setEnabled(False) - icon9 = QtGui.QIcon() - icon9.addPixmap(QtGui.QPixmap(":/find.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFind.setIcon(icon9) + icon10 = QtGui.QIcon() + icon10.addPixmap(QtGui.QPixmap(":/find.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFind.setIcon(icon10) self.actionFind.setIconVisibleInMenu(True) self.actionFind.setObjectName("actionFind") self.actionAbout = QtGui.QAction(MainWindow) @@ -174,30 +180,30 @@ self.actionShow_TUview.setObjectName("actionShow_TUview") self.actionFirst = QtGui.QAction(MainWindow) self.actionFirst.setEnabled(False) - icon10 = QtGui.QIcon() - icon10.addPixmap(QtGui.QPixmap(":/first.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFirst.setIcon(icon10) + icon11 = QtGui.QIcon() + icon11.addPixmap(QtGui.QPixmap(":/first.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFirst.setIcon(icon11) self.actionFirst.setIconVisibleInMenu(True) self.actionFirst.setObjectName("actionFirst") self.actionPrevious = QtGui.QAction(MainWindow) self.actionPrevious.setEnabled(False) - icon11 = QtGui.QIcon() - icon11.addPixmap(QtGui.QPixmap(":/back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPrevious.setIcon(icon11) + icon12 = QtGui.QIcon() + icon12.addPixmap(QtGui.QPixmap(":/back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPrevious.setIcon(icon12) self.actionPrevious.setIconVisibleInMenu(True) self.actionPrevious.setObjectName("actionPrevious") self.actionNext = QtGui.QAction(MainWindow) self.actionNext.setEnabled(False) - icon12 = QtGui.QIcon() - icon12.addPixmap(QtGui.QPixmap(":/forward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext.setIcon(icon12) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(":/forward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext.setIcon(icon13) self.actionNext.setIconVisibleInMenu(True) self.actionNext.setObjectName("actionNext") self.actionLast = QtGui.QAction(MainWindow) self.actionLast.setEnabled(False) - icon13 = QtGui.QIcon() - icon13.addPixmap(QtGui.QPixmap(":/last.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionLast.setIcon(icon13) + icon14 = QtGui.QIcon() + icon14.addPixmap(QtGui.QPixmap(":/last.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionLast.setIcon(icon14) self.actionLast.setIconVisibleInMenu(True) self.actionLast.setObjectName("actionLast") self.actionCopySource2Target = QtGui.QAction(MainWindow) @@ -216,23 +222,23 @@ self.actionFind_Next.setObjectName("actionFind_Next") self.actionReplace = QtGui.QAction(MainWindow) self.actionReplace.setEnabled(False) - icon14 = QtGui.QIcon() - icon14.addPixmap(QtGui.QPixmap(":/replace.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionReplace.setIcon(icon14) + icon15 = QtGui.QIcon() + icon15.addPixmap(QtGui.QPixmap(":/replace.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionReplace.setIcon(icon15) self.actionReplace.setIconVisibleInMenu(True) self.actionReplace.setObjectName("actionReplace") self.actionFindNext = QtGui.QAction(MainWindow) self.actionFindNext.setEnabled(False) - icon15 = QtGui.QIcon() - icon15.addPixmap(QtGui.QPixmap(":/next.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFindNext.setIcon(icon15) + icon16 = QtGui.QIcon() + icon16.addPixmap(QtGui.QPixmap(":/next.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFindNext.setIcon(icon16) self.actionFindNext.setIconVisibleInMenu(True) self.actionFindNext.setObjectName("actionFindNext") self.actionFindPrevious = QtGui.QAction(MainWindow) self.actionFindPrevious.setEnabled(False) - icon16 = QtGui.QIcon() - icon16.addPixmap(QtGui.QPixmap(":/previous.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFindPrevious.setIcon(icon16) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(":/previous.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFindPrevious.setIcon(icon17) self.actionFindPrevious.setIconVisibleInMenu(True) self.actionFindPrevious.setObjectName("actionFindPrevious") self.actionSelectAll = QtGui.QAction(MainWindow) @@ -242,9 +248,9 @@ self.actionEdit_Header.setEnabled(False) self.actionEdit_Header.setObjectName("actionEdit_Header") self.actionPreferences = QtGui.QAction(MainWindow) - icon17 = QtGui.QIcon() - icon17.addPixmap(QtGui.QPixmap(":/configure.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPreferences.setIcon(icon17) + icon18 = QtGui.QIcon() + icon18.addPixmap(QtGui.QPixmap(":/configure.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPreferences.setIcon(icon18) self.actionPreferences.setIconVisibleInMenu(True) self.actionPreferences.setObjectName("actionPreferences") self.actionToolbars = QtGui.QAction(MainWindow) @@ -253,34 +259,34 @@ self.actionFilterFuzzy.setCheckable(True) self.actionFilterFuzzy.setChecked(False) self.actionFilterFuzzy.setEnabled(False) - icon18 = QtGui.QIcon() - icon18.addPixmap(QtGui.QPixmap(":/fuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterFuzzy.setIcon(icon18) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(":/fuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterFuzzy.setIcon(icon19) self.actionFilterFuzzy.setIconVisibleInMenu(True) self.actionFilterFuzzy.setObjectName("actionFilterFuzzy") self.actionFilterTranslated = QtGui.QAction(MainWindow) self.actionFilterTranslated.setCheckable(True) self.actionFilterTranslated.setChecked(False) self.actionFilterTranslated.setEnabled(False) - icon19 = QtGui.QIcon() - icon19.addPixmap(QtGui.QPixmap(":/translated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterTranslated.setIcon(icon19) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(":/translated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterTranslated.setIcon(icon20) self.actionFilterTranslated.setIconVisibleInMenu(True) self.actionFilterTranslated.setObjectName("actionFilterTranslated") self.actionFilterUntranslated = QtGui.QAction(MainWindow) self.actionFilterUntranslated.setCheckable(True) self.actionFilterUntranslated.setChecked(False) self.actionFilterUntranslated.setEnabled(False) - icon20 = QtGui.QIcon() - icon20.addPixmap(QtGui.QPixmap(":/untranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterUntranslated.setIcon(icon20) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(":/untranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterUntranslated.setIcon(icon21) self.actionFilterUntranslated.setIconVisibleInMenu(True) self.actionFilterUntranslated.setObjectName("actionFilterUntranslated") self.action_Close = QtGui.QAction(MainWindow) self.action_Close.setEnabled(False) - icon21 = QtGui.QIcon() - icon21.addPixmap(QtGui.QPixmap(":/fileclose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.action_Close.setIcon(icon21) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(":/fileclose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.action_Close.setIcon(icon22) self.action_Close.setIconVisibleInMenu(True) self.action_Close.setObjectName("action_Close") self.actionGoTo = QtGui.QAction(MainWindow) @@ -288,34 +294,34 @@ self.actionGoTo.setObjectName("actionGoTo") self.actionAddBookmarks = QtGui.QAction(MainWindow) self.actionAddBookmarks.setEnabled(False) - icon22 = QtGui.QIcon() - icon22.addPixmap(QtGui.QPixmap(":/bookmarkadd.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAddBookmarks.setIcon(icon22) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(":/bookmarkadd.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAddBookmarks.setIcon(icon23) self.actionAddBookmarks.setIconVisibleInMenu(True) self.actionAddBookmarks.setObjectName("actionAddBookmarks") self.actionClearBookmarks = QtGui.QAction(MainWindow) self.actionClearBookmarks.setEnabled(False) self.actionClearBookmarks.setObjectName("actionClearBookmarks") self.actionCatalogManager = QtGui.QAction(MainWindow) - icon23 = QtGui.QIcon() - icon23.addPixmap(QtGui.QPixmap(":/projectManager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCatalogManager.setIcon(icon23) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(":/projectManager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCatalogManager.setIcon(icon24) self.actionCatalogManager.setIconVisibleInMenu(True) self.actionCatalogManager.setObjectName("actionCatalogManager") self.actionCopySearchResult2Target = QtGui.QAction(MainWindow) self.actionCopySearchResult2Target.setEnabled(False) - icon24 = QtGui.QIcon() - icon24.addPixmap(QtGui.QPixmap(":/source.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCopySearchResult2Target.setIcon(icon24) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(":/source.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCopySearchResult2Target.setIcon(icon25) self.actionCopySearchResult2Target.setIconVisibleInMenu(True) self.actionCopySearchResult2Target.setObjectName("actionCopySearchResult2Target") self.actionGlossary = QtGui.QAction(MainWindow) self.actionGlossary.setObjectName("actionGlossary") self.actionAuto_translate = QtGui.QAction(MainWindow) self.actionAuto_translate.setEnabled(False) - icon25 = QtGui.QIcon() - icon25.addPixmap(QtGui.QPixmap(":/autotranslate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAuto_translate.setIcon(icon25) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(":/autotranslate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAuto_translate.setIcon(icon26) self.actionAuto_translate.setIconVisibleInMenu(True) self.actionAuto_translate.setObjectName("actionAuto_translate") self.actionClearFuzzy = QtGui.QAction(MainWindow) @@ -323,37 +329,37 @@ self.actionClearFuzzy.setObjectName("actionClearFuzzy") self.action_SpellTrans = QtGui.QAction(MainWindow) self.action_SpellTrans.setEnabled(False) - icon26 = QtGui.QIcon() - icon26.addPixmap(QtGui.QPixmap(":/spellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.action_SpellTrans.setIcon(icon26) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(":/spellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.action_SpellTrans.setIcon(icon27) self.action_SpellTrans.setIconVisibleInMenu(True) self.action_SpellTrans.setObjectName("action_SpellTrans") self.actionAutoSpellCheck = QtGui.QAction(MainWindow) self.actionAutoSpellCheck.setCheckable(True) self.actionAutoSpellCheck.setEnabled(False) - icon27 = QtGui.QIcon() - icon27.addPixmap(QtGui.QPixmap(":/autospellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAutoSpellCheck.setIcon(icon27) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(":/autospellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAutoSpellCheck.setIcon(icon28) self.actionAutoSpellCheck.setIconVisibleInMenu(True) self.actionAutoSpellCheck.setObjectName("actionAutoSpellCheck") self.actionConverter = QtGui.QAction(MainWindow) - icon28 = QtGui.QIcon() - icon28.addPixmap(QtGui.QPixmap(":/Converter.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionConverter.setIcon(icon28) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(":/Converter.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionConverter.setIcon(icon29) self.actionConverter.setIconVisibleInMenu(True) self.actionConverter.setObjectName("actionConverter") self.actionPreviousBookmark = QtGui.QAction(MainWindow) self.actionPreviousBookmark.setEnabled(False) - icon29 = QtGui.QIcon() - icon29.addPixmap(QtGui.QPixmap(":/bookmarkPrevious.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPreviousBookmark.setIcon(icon29) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(":/bookmarkPrevious.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPreviousBookmark.setIcon(icon30) self.actionPreviousBookmark.setIconVisibleInMenu(True) self.actionPreviousBookmark.setObjectName("actionPreviousBookmark") self.actionNextBookmark = QtGui.QAction(MainWindow) self.actionNextBookmark.setEnabled(False) - icon30 = QtGui.QIcon() - icon30.addPixmap(QtGui.QPixmap(":/bookmarkNext.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNextBookmark.setIcon(icon30) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(":/bookmarkNext.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNextBookmark.setIcon(icon31) self.actionNextBookmark.setIconVisibleInMenu(True) self.actionNextBookmark.setObjectName("actionNextBookmark") self.actionRemoveThirds = QtGui.QAction(MainWindow) @@ -364,9 +370,9 @@ self.action_Overview.setChecked(False) self.action_Overview.setObjectName("action_Overview") self.actionOpen_in_New_Window = QtGui.QAction(MainWindow) - icon31 = QtGui.QIcon() - icon31.addPixmap(QtGui.QPixmap(":/new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionOpen_in_New_Window.setIcon(icon31) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(":/new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionOpen_in_New_Window.setIcon(icon32) self.actionOpen_in_New_Window.setIconVisibleInMenu(True) self.actionOpen_in_New_Window.setObjectName("actionOpen_in_New_Window") self.action_Select_All = QtGui.QAction(MainWindow) @@ -374,22 +380,22 @@ self.actionThird_Language = QtGui.QAction(MainWindow) self.actionThird_Language.setObjectName("actionThird_Language") self.actionManageTM = QtGui.QAction(MainWindow) - icon32 = QtGui.QIcon() - icon32.addPixmap(QtGui.QPixmap(":/memory.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionManageTM.setIcon(icon32) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(":/memory.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionManageTM.setIcon(icon33) self.actionManageTM.setIconVisibleInMenu(True) self.actionManageTM.setObjectName("actionManageTM") self.actionManageGlossary = QtGui.QAction(MainWindow) - icon33 = QtGui.QIcon() - icon33.addPixmap(QtGui.QPixmap(":/glossary.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionManageGlossary.setIcon(icon33) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(":/glossary.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionManageGlossary.setIcon(icon34) self.actionManageGlossary.setIconVisibleInMenu(True) self.actionManageGlossary.setObjectName("actionManageGlossary") self.actionSearch_Suggestions = QtGui.QAction(MainWindow) self.actionSearch_Suggestions.setEnabled(False) - icon34 = QtGui.QIcon() - icon34.addPixmap(QtGui.QPixmap(":/findInTM.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionSearch_Suggestions.setIcon(icon34) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(":/findInTM.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionSearch_Suggestions.setIcon(icon35) self.actionSearch_Suggestions.setIconVisibleInMenu(True) self.actionSearch_Suggestions.setObjectName("actionSearch_Suggestions") self.actionFilterSourceEqualTarget = QtGui.QAction(MainWindow) @@ -411,95 +417,72 @@ self.actionError_Checking = QtGui.QAction(MainWindow) self.actionError_Checking.setCheckable(True) self.actionError_Checking.setEnabled(False) - icon35 = QtGui.QIcon() - icon35.addPixmap(QtGui.QPixmap(":/Error_checking.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionError_Checking.setIcon(icon35) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(":/Error_checking.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionError_Checking.setIcon(icon36) self.actionError_Checking.setIconVisibleInMenu(True) self.actionError_Checking.setObjectName("actionError_Checking") self.actionSearchErrors = QtGui.QAction(MainWindow) self.actionSearchErrors.setCheckable(True) self.actionSearchErrors.setChecked(False) self.actionSearchErrors.setEnabled(False) - icon36 = QtGui.QIcon() - icon36.addPixmap(QtGui.QPixmap(":/Bug.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionSearchErrors.setIcon(icon36) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(":/Bug.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionSearchErrors.setIcon(icon37) self.actionSearchErrors.setIconVisibleInMenu(True) self.actionSearchErrors.setObjectName("actionSearchErrors") self.actionErasetarget = QtGui.QAction(MainWindow) self.actionErasetarget.setEnabled(False) self.actionErasetarget.setObjectName("actionErasetarget") self.actionXLIFF_Upgrade = QtGui.QAction(MainWindow) - icon37 = QtGui.QIcon() - icon37.addPixmap(QtGui.QPixmap(":/upgrade_xliff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionXLIFF_Upgrade.setIcon(icon37) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(":/upgrade_xliff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionXLIFF_Upgrade.setIcon(icon38) self.actionXLIFF_Upgrade.setIconVisibleInMenu(True) self.actionXLIFF_Upgrade.setObjectName("actionXLIFF_Upgrade") self.actionShow_Nonprinting_Char = QtGui.QAction(MainWindow) self.actionShow_Nonprinting_Char.setCheckable(True) self.actionShow_Nonprinting_Char.setEnabled(False) - icon38 = QtGui.QIcon() - icon38.addPixmap(QtGui.QPixmap(":/invisibleChar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionShow_Nonprinting_Char.setIcon(icon38) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(":/invisibleChar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionShow_Nonprinting_Char.setIcon(icon39) self.actionShow_Nonprinting_Char.setIconVisibleInMenu(True) self.actionShow_Nonprinting_Char.setObjectName("actionShow_Nonprinting_Char") self.actionChangeFileLanguage = QtGui.QAction(MainWindow) self.actionChangeFileLanguage.setEnabled(False) - self.actionChangeFileLanguage.setIconVisibleInMenu(True) self.actionChangeFileLanguage.setObjectName("actionChangeFileLanguage") self.actionBatch_Process = QtGui.QAction(MainWindow) self.actionBatch_Process.setEnabled(False) self.actionBatch_Process.setObjectName("actionBatch_Process") - self.actionUndoAll = QtGui.QAction(MainWindow) - self.actionUndoAll.setEnabled(False) - icon39 = QtGui.QIcon() - icon39.addPixmap(QtGui.QPixmap(":/undo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionUndoAll.setIcon(icon39) - self.actionUndoAll.setShortcutContext(QtCore.Qt.ApplicationShortcut) - self.actionUndoAll.setObjectName("actionUndoAll") - self.actionFull_tagid = QtGui.QAction(MainWindow) - self.actionFull_tagid.setCheckable(True) - self.actionFull_tagid.setObjectName("actionFull_tagid") - self.actionFull = QtGui.QAction(MainWindow) - self.actionFull.setCheckable(True) - self.actionFull.setObjectName("actionFull") - self.actionMinimal = QtGui.QAction(MainWindow) - self.actionMinimal.setCheckable(True) - self.actionMinimal.setObjectName("actionMinimal") + self.actionUndoall = QtGui.QAction(MainWindow) + self.actionUndoall.setEnabled(False) + self.actionUndoall.setIcon(icon5) + self.actionUndoall.setShortcutContext(QtCore.Qt.ApplicationShortcut) + self.actionUndoall.setAutoRepeat(False) + self.actionUndoall.setVisible(False) + self.actionUndoall.setIconVisibleInMenu(False) + self.actionUndoall.setObjectName("actionUndoall") + self.actionConfigureShortcuts = QtGui.QAction(MainWindow) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(":/CustomizeShortcuts.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionConfigureShortcuts.setIcon(icon40) + self.actionConfigureShortcuts.setIconVisibleInMenu(True) + self.actionConfigureShortcuts.setObjectName("actionConfigureShortcuts") self.actionNext_Untranslated = QtGui.QAction(MainWindow) self.actionNext_Untranslated.setEnabled(False) - icon40 = QtGui.QIcon() - icon40.addPixmap(QtGui.QPixmap("../images/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext_Untranslated.setIcon(icon40) - self.actionNext_Untranslated.setIconVisibleInMenu(True) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(":/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext_Untranslated.setIcon(icon41) self.actionNext_Untranslated.setObjectName("actionNext_Untranslated") self.actionNext_Fuzzy = QtGui.QAction(MainWindow) self.actionNext_Fuzzy.setEnabled(False) - icon41 = QtGui.QIcon() - icon41.addPixmap(QtGui.QPixmap("../images/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext_Fuzzy.setIcon(icon41) - self.actionNext_Fuzzy.setIconVisibleInMenu(True) - self.actionNext_Fuzzy.setObjectName("actionNext_Fuzzy") - self.actionConfigureShortcuts = QtGui.QAction(MainWindow) icon42 = QtGui.QIcon() - icon42.addPixmap(QtGui.QPixmap(":/CustomizeShortcuts.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionConfigureShortcuts.setIcon(icon42) - self.actionConfigureShortcuts.setObjectName("actionConfigureShortcuts") - self.actionNext_Untranslated1 = QtGui.QAction(MainWindow) - self.actionNext_Untranslated1.setEnabled(False) - icon43 = QtGui.QIcon() - icon43.addPixmap(QtGui.QPixmap(":/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext_Untranslated1.setIcon(icon43) - self.actionNext_Untranslated1.setIconVisibleInMenu(True) - self.actionNext_Untranslated1.setObjectName("actionNext_Untranslated1") - self.actionNext_Fuzzy1 = QtGui.QAction(MainWindow) - self.actionNext_Fuzzy1.setEnabled(False) - icon44 = QtGui.QIcon() - icon44.addPixmap(QtGui.QPixmap(":/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext_Fuzzy1.setIcon(icon44) - self.actionNext_Fuzzy1.setIconVisibleInMenu(True) - self.actionNext_Fuzzy1.setObjectName("actionNext_Fuzzy1") + icon42.addPixmap(QtGui.QPixmap(":/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext_Fuzzy.setIcon(icon42) + self.actionNext_Fuzzy.setObjectName("actionNext_Fuzzy") + self.menuEdit.addAction(self.actionUndo) self.menuEdit.addAction(self.actionRedo) - self.menuEdit.addAction(self.actionUndoAll) + self.menuEdit.addAction(self.actionUndoall) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionCut) self.menuEdit.addAction(self.actionCopy) @@ -516,26 +499,19 @@ self.menuEdit.addAction(self.actionEdit_Header) self.menuEdit.addAction(self.actionErasetarget) self.menuEdit.addAction(self.actionChangeFileLanguage) - self.menuInline_Tags.addAction(self.actionFull_tagid) - self.menuInline_Tags.addAction(self.actionFull) - self.menuInline_Tags.addAction(self.actionMinimal) self.menuView.addAction(self.actionFilterUntranslated) self.menuView.addAction(self.actionFilterFuzzy) self.menuView.addAction(self.actionFilterTranslated) self.menuView.addAction(self.actionFilterSourceEqualTarget) self.menuView.addAction(self.actionShow_Nonprinting_Char) - self.menuView.addAction(self.menuInline_Tags.menuAction()) self.menuGo.addAction(self.actionFirst) self.menuGo.addAction(self.actionPrevious) self.menuGo.addAction(self.actionNext) self.menuGo.addAction(self.actionLast) self.menuGo.addSeparator() self.menuGo.addAction(self.actionGoTo) - self.menuGo.addSeparator() self.menuGo.addAction(self.actionNext_Untranslated) self.menuGo.addAction(self.actionNext_Fuzzy) - self.menuGo.addAction(self.actionNext_Untranslated) - self.menuGo.addAction(self.actionNext_Fuzzy) self.menuHelp.addSeparator() self.menuHelp.addAction(self.actionAbout) self.menuHelp.addAction(self.actionAboutQT) @@ -588,7 +564,8 @@ self.menubar.addAction(self.menuHelp.menuAction()) self.toolFile.addAction(self.actionSave) self.toolFile.addAction(self.actionSaveas) - self.toolEdit.addAction(self.actionUndoAll) + self.toolEdit.addAction(self.actionUndoall) + self.toolEdit.addAction(self.actionUndo) self.toolEdit.addAction(self.actionRedo) self.toolEdit.addAction(self.actionCut) self.toolEdit.addAction(self.actionCopy) @@ -622,7 +599,6 @@ MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.menuEdit.setTitle(QtGui.QApplication.translate("MainWindow", "&Edit", None, QtGui.QApplication.UnicodeUTF8)) self.menuView.setTitle(QtGui.QApplication.translate("MainWindow", "&View", None, QtGui.QApplication.UnicodeUTF8)) - self.menuInline_Tags.setTitle(QtGui.QApplication.translate("MainWindow", "Inline Tags", None, QtGui.QApplication.UnicodeUTF8)) self.menuGo.setTitle(QtGui.QApplication.translate("MainWindow", "&Go", None, QtGui.QApplication.UnicodeUTF8)) self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "&Help", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Tool.setTitle(QtGui.QApplication.translate("MainWindow", "&Tools", None, QtGui.QApplication.UnicodeUTF8)) @@ -665,6 +641,10 @@ self.actionExit.setStatusTip(QtGui.QApplication.translate("MainWindow", "Quit the application", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Quit</h3>Use this to quit the application. Any unsaved changes will be prompted.", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndo.setText(QtGui.QApplication.translate("MainWindow", "&Undo", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndo.setStatusTip(QtGui.QApplication.translate("MainWindow", "Undo the last change", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndo.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Undo</h3>Use this to undo the last change done in the editor.", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndo.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z"... [truncated message content] |
From: <ra...@us...> - 2011-04-17 11:00:35
|
Revision: 1314 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1314&view=rev Author: rakibm Date: 2011-04-17 11:00:29 +0000 (Sun, 17 Apr 2011) Log Message: ----------- images added for custom shortcuts Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/images/images.qrc Added Paths: ----------- branches/wordforge0.8/WordForge/Editor/images/CustomizeShortcuts.png Added: branches/wordforge0.8/WordForge/Editor/images/CustomizeShortcuts.png =================================================================== (Binary files differ) Property changes on: branches/wordforge0.8/WordForge/Editor/images/CustomizeShortcuts.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/wordforge0.8/WordForge/Editor/images/images.qrc =================================================================== --- branches/wordforge0.8/WordForge/Editor/images/images.qrc 2011-04-17 10:59:15 UTC (rev 1313) +++ branches/wordforge0.8/WordForge/Editor/images/images.qrc 2011-04-17 11:00:29 UTC (rev 1314) @@ -87,5 +87,6 @@ <file>upgrade_xliff.png</file> <file>thesaurus.png</file> <file>revert.png</file> +<file>CustomizeShortcuts.png</file> </qresource> </RCC> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2011-04-17 10:59:23
|
Revision: 1313 http://wordforge2.svn.sourceforge.net/wordforge2/?rev=1313&view=rev Author: rakibm Date: 2011-04-17 10:59:15 +0000 (Sun, 17 Apr 2011) Log Message: ----------- ui changed for custom shortcuts Modified Paths: -------------- branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py branches/wordforge0.8/WordForge/Editor/ui/images_rc.py Modified: branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-17 10:58:15 UTC (rev 1312) +++ branches/wordforge0.8/WordForge/Editor/ui/MainEditor.ui 2011-04-17 10:59:15 UTC (rev 1313) @@ -51,16 +51,15 @@ <x>0</x> <y>0</y> <width>1000</width> - <height>25</height> + <height>23</height> </rect> </property> <widget class="QMenu" name="menuEdit"> <property name="title"> <string>&Edit</string> </property> - <addaction name="actionUndo"/> <addaction name="actionRedo"/> - <addaction name="actionUndoall"/> + <addaction name="actionUndoAll"/> <addaction name="separator"/> <addaction name="actionCut"/> <addaction name="actionCopy"/> @@ -85,11 +84,23 @@ <property name="title"> <string>&View</string> </property> + <widget class="QMenu" name="menuInline_Tags"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="title"> + <string>Inline Tags</string> + </property> + <addaction name="actionFull_tagid"/> + <addaction name="actionFull"/> + <addaction name="actionMinimal"/> + </widget> <addaction name="actionFilterUntranslated"/> <addaction name="actionFilterFuzzy"/> <addaction name="actionFilterTranslated"/> <addaction name="actionFilterSourceEqualTarget"/> <addaction name="actionShow_Nonprinting_Char"/> + <addaction name="menuInline_Tags"/> </widget> <widget class="QMenu" name="menuGo"> <property name="title"> @@ -101,8 +112,14 @@ <addaction name="actionLast"/> <addaction name="separator"/> <addaction name="actionGoTo"/> + + <addaction name="separator"/> <addaction name="actionNext_Untranslated"/> <addaction name="actionNext_Fuzzy"/> + + <addaction name="actionNext_Untranslated"/> + <addaction name="actionNext_Fuzzy"/> + </widget> <widget class="QMenu" name="menuHelp"> <property name="title"> @@ -143,6 +160,7 @@ <addaction name="menuEmbed_Information_in_XLIFF_File"/> <addaction name="separator"/> <addaction name="actionPreferences"/> + <addaction name="actionConfigureShortcuts"/> </widget> <widget class="QMenu" name="menuBookmark"> <property name="title"> @@ -252,8 +270,7 @@ <attribute name="toolBarBreak"> <bool>false</bool> </attribute> - <addaction name="actionUndoall"/> - <addaction name="actionUndo"/> + <addaction name="actionUndoAll"/> <addaction name="actionRedo"/> <addaction name="actionCut"/> <addaction name="actionCopy"/> @@ -275,6 +292,9 @@ <property name="whatsThis"> <string/> </property> + <property name="allowedAreas"> + <set>Qt::AllToolBarAreas</set> + </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -453,39 +473,6 @@ <bool>true</bool> </property> </action> - <action name="actionUndo"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="icon"> - <iconset resource="../images/images.qrc"> - <normaloff>:/undo.png</normaloff>:/undo.png</iconset> - </property> - <property name="text"> - <string>&Undo</string> - </property> - <property name="statusTip"> - <string>Undo the last change</string> - </property> - <property name="whatsThis"> - <string><h3>Undo</h3>Use this to undo the last change done in the editor.</string> - </property> - <property name="shortcut"> - <string>Ctrl+Z</string> - </property> - <property name="shortcutContext"> - <enum>Qt::WindowShortcut</enum> - </property> - <property name="autoRepeat"> - <bool>true</bool> - </property> - <property name="visible"> - <bool>true</bool> - </property> - <property name="iconVisibleInMenu"> - <bool>true</bool> - </property> - </action> <action name="actionRedo"> <property name="enabled"> <bool>false</bool> @@ -938,7 +925,7 @@ <bool>false</bool> </property> <property name="text"> - <string>PO &Header...</string> + <string>&Header...</string> </property> <property name="statusTip"> <string>Open header dialog...</string> @@ -1649,6 +1636,12 @@ <property name="text"> <string>Change &Language of Present File</string> </property> + <property name="shortcut"> + <string>Ctrl+L</string> + </property> + <property name="iconVisibleInMenu"> + <bool>true</bool> + </property> <property name="toolTip"> <string>Change the language code of the present file</string> </property> @@ -1664,7 +1657,7 @@ <string>Batch Change</string> </property> </action> - <action name="actionUndoall"> + <action name="actionUndoAll"> <property name="enabled"> <bool>false</bool> </property> @@ -1684,16 +1677,98 @@ <property name="shortcutContext"> <enum>Qt::ApplicationShortcut</enum> </property> - <property name="autoRepeat"> - <bool>false</bool> + </action> + <action name="actionFull_tagid"> + <property name="checkable"> + <bool>true</bool> </property> - <property name="visible"> + <property name="text"> + <string>Full+tagid</string> + </property> + </action> + <action name="actionFull"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Full</string> + </property> + </action> + <action name="actionMinimal"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Minimal</string> + </property> + </action> + <action name="actionNext_Untranslated"> + <property name="enabled"> <bool>false</bool> </property> + <property name="icon"> + <iconset> + <normaloff>../images/nextuntranslated.png</normaloff>../images/nextuntranslated.png</iconset> + </property> + <property name="text"> + <string>Next &Untranslated</string> + </property> + <property name="statusTip"> + <string>Go to the next untranslated string</string> + </property> + <property name="whatsThis"> + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Next Untranslated Message</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next untranslated string in the table.</p></body></html></string> + </property> + <property name="shortcut"> + <string>Ctrl+4</string> + </property> <property name="iconVisibleInMenu"> + <bool>true</bool> + </property> + </action> + <action name="actionNext_Fuzzy"> + <property name="enabled"> <bool>false</bool> </property> + <property name="icon"> + <iconset> + <normaloff>../images/nextfuzzy.png</normaloff>../images/nextfuzzy.png</iconset> + </property> + <property name="text"> + <string>Next Fu&zzy</string> + </property> + <property name="statusTip"> + <string>Go to the next fuzzy string</string> + </property> + <property name="whatsThis"> + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Next Fuzzy Message</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the next fuzzy string in the table.</p></body></html></string> + </property> + <property name="shortcut"> + <string>Ctrl+5</string> + </property> + <property name="iconVisibleInMenu"> + <bool>true</bool> + </property> </action> + <action name="actionConfigureShortcuts"> + <property name="icon"> + <iconset resource="../images/images.qrc"> + <normaloff>:/CustomizeShortcuts.png</normaloff>:/CustomizeShortcuts.png</iconset> + </property> + <property name="text"> + <string>Confi&gure Shortcuts...</string> + </property> + </action> <action name="actionNext_Untranslated"> <property name="enabled"> <bool>false</bool> @@ -1755,6 +1830,7 @@ <bool>true</bool> </property> </action> + </widget> <resources> <include location="../images/images.qrc"/> Modified: branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-17 10:58:15 UTC (rev 1312) +++ branches/wordforge0.8/WordForge/Editor/ui/Ui_MainEditor.py 2011-04-17 10:59:15 UTC (rev 1313) @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '/home/Enayet/trunk_0.8Beta/WordForge/Editor/ui/MainEditor.ui' +# Form implementation generated from reading ui file '/home/ankur/work/trunk_0.8/WordForge/Editor/ui/MainEditor.ui' # -# Created: Sun Apr 10 11:08:54 2011 -# by: PyQt4 UI code generator 4.7.3 +# Created: Sun Apr 17 16:51:41 2011 +# by: PyQt4 UI code generator 4.7.4 # # WARNING! All changes made in this file will be lost! @@ -31,13 +31,16 @@ self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 25)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 23)) self.menubar.setObjectName("menubar") self.menuEdit = QtGui.QMenu(self.menubar) self.menuEdit.setObjectName("menuEdit") self.menuView = QtGui.QMenu(self.menubar) self.menuView.setEnabled(True) self.menuView.setObjectName("menuView") + self.menuInline_Tags = QtGui.QMenu(self.menuView) + self.menuInline_Tags.setEnabled(False) + self.menuInline_Tags.setObjectName("menuInline_Tags") self.menuGo = QtGui.QMenu(self.menubar) self.menuGo.setObjectName("menuGo") self.menuHelp = QtGui.QMenu(self.menubar) @@ -78,6 +81,7 @@ self.toolNavigation.setAcceptDrops(False) self.toolNavigation.setStatusTip("") self.toolNavigation.setWhatsThis("") + self.toolNavigation.setAllowedAreas(QtCore.Qt.AllToolBarAreas) self.toolNavigation.setOrientation(QtCore.Qt.Horizontal) self.toolNavigation.setObjectName("toolNavigation") MainWindow.addToolBar(QtCore.Qt.ToolBarArea(QtCore.Qt.TopToolBarArea), self.toolNavigation) @@ -118,50 +122,40 @@ self.actionExit.setIcon(icon4) self.actionExit.setIconVisibleInMenu(True) self.actionExit.setObjectName("actionExit") - self.actionUndo = QtGui.QAction(MainWindow) - self.actionUndo.setEnabled(True) - icon5 = QtGui.QIcon() - icon5.addPixmap(QtGui.QPixmap(":/undo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionUndo.setIcon(icon5) - self.actionUndo.setShortcutContext(QtCore.Qt.WindowShortcut) - self.actionUndo.setAutoRepeat(True) - self.actionUndo.setVisible(True) - self.actionUndo.setIconVisibleInMenu(True) - self.actionUndo.setObjectName("actionUndo") self.actionRedo = QtGui.QAction(MainWindow) self.actionRedo.setEnabled(False) - icon6 = QtGui.QIcon() - icon6.addPixmap(QtGui.QPixmap(":/redo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionRedo.setIcon(icon6) + icon5 = QtGui.QIcon() + icon5.addPixmap(QtGui.QPixmap(":/redo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionRedo.setIcon(icon5) self.actionRedo.setIconVisibleInMenu(True) self.actionRedo.setObjectName("actionRedo") self.actionCut = QtGui.QAction(MainWindow) self.actionCut.setEnabled(False) - icon7 = QtGui.QIcon() - icon7.addPixmap(QtGui.QPixmap(":/cut.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCut.setIcon(icon7) + icon6 = QtGui.QIcon() + icon6.addPixmap(QtGui.QPixmap(":/cut.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCut.setIcon(icon6) self.actionCut.setIconVisibleInMenu(True) self.actionCut.setObjectName("actionCut") self.actionCopy = QtGui.QAction(MainWindow) self.actionCopy.setCheckable(False) self.actionCopy.setEnabled(False) - icon8 = QtGui.QIcon() - icon8.addPixmap(QtGui.QPixmap(":/copy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCopy.setIcon(icon8) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(":/copy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCopy.setIcon(icon7) self.actionCopy.setIconVisibleInMenu(True) self.actionCopy.setObjectName("actionCopy") self.actionPaste = QtGui.QAction(MainWindow) self.actionPaste.setEnabled(False) - icon9 = QtGui.QIcon() - icon9.addPixmap(QtGui.QPixmap(":/paste.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPaste.setIcon(icon9) + icon8 = QtGui.QIcon() + icon8.addPixmap(QtGui.QPixmap(":/paste.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPaste.setIcon(icon8) self.actionPaste.setIconVisibleInMenu(True) self.actionPaste.setObjectName("actionPaste") self.actionFind = QtGui.QAction(MainWindow) self.actionFind.setEnabled(False) - icon10 = QtGui.QIcon() - icon10.addPixmap(QtGui.QPixmap(":/find.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFind.setIcon(icon10) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(":/find.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFind.setIcon(icon9) self.actionFind.setIconVisibleInMenu(True) self.actionFind.setObjectName("actionFind") self.actionAbout = QtGui.QAction(MainWindow) @@ -180,30 +174,30 @@ self.actionShow_TUview.setObjectName("actionShow_TUview") self.actionFirst = QtGui.QAction(MainWindow) self.actionFirst.setEnabled(False) - icon11 = QtGui.QIcon() - icon11.addPixmap(QtGui.QPixmap(":/first.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFirst.setIcon(icon11) + icon10 = QtGui.QIcon() + icon10.addPixmap(QtGui.QPixmap(":/first.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFirst.setIcon(icon10) self.actionFirst.setIconVisibleInMenu(True) self.actionFirst.setObjectName("actionFirst") self.actionPrevious = QtGui.QAction(MainWindow) self.actionPrevious.setEnabled(False) - icon12 = QtGui.QIcon() - icon12.addPixmap(QtGui.QPixmap(":/back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPrevious.setIcon(icon12) + icon11 = QtGui.QIcon() + icon11.addPixmap(QtGui.QPixmap(":/back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPrevious.setIcon(icon11) self.actionPrevious.setIconVisibleInMenu(True) self.actionPrevious.setObjectName("actionPrevious") self.actionNext = QtGui.QAction(MainWindow) self.actionNext.setEnabled(False) - icon13 = QtGui.QIcon() - icon13.addPixmap(QtGui.QPixmap(":/forward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNext.setIcon(icon13) + icon12 = QtGui.QIcon() + icon12.addPixmap(QtGui.QPixmap(":/forward.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext.setIcon(icon12) self.actionNext.setIconVisibleInMenu(True) self.actionNext.setObjectName("actionNext") self.actionLast = QtGui.QAction(MainWindow) self.actionLast.setEnabled(False) - icon14 = QtGui.QIcon() - icon14.addPixmap(QtGui.QPixmap(":/last.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionLast.setIcon(icon14) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(":/last.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionLast.setIcon(icon13) self.actionLast.setIconVisibleInMenu(True) self.actionLast.setObjectName("actionLast") self.actionCopySource2Target = QtGui.QAction(MainWindow) @@ -222,23 +216,23 @@ self.actionFind_Next.setObjectName("actionFind_Next") self.actionReplace = QtGui.QAction(MainWindow) self.actionReplace.setEnabled(False) - icon15 = QtGui.QIcon() - icon15.addPixmap(QtGui.QPixmap(":/replace.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionReplace.setIcon(icon15) + icon14 = QtGui.QIcon() + icon14.addPixmap(QtGui.QPixmap(":/replace.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionReplace.setIcon(icon14) self.actionReplace.setIconVisibleInMenu(True) self.actionReplace.setObjectName("actionReplace") self.actionFindNext = QtGui.QAction(MainWindow) self.actionFindNext.setEnabled(False) - icon16 = QtGui.QIcon() - icon16.addPixmap(QtGui.QPixmap(":/next.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFindNext.setIcon(icon16) + icon15 = QtGui.QIcon() + icon15.addPixmap(QtGui.QPixmap(":/next.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFindNext.setIcon(icon15) self.actionFindNext.setIconVisibleInMenu(True) self.actionFindNext.setObjectName("actionFindNext") self.actionFindPrevious = QtGui.QAction(MainWindow) self.actionFindPrevious.setEnabled(False) - icon17 = QtGui.QIcon() - icon17.addPixmap(QtGui.QPixmap(":/previous.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFindPrevious.setIcon(icon17) + icon16 = QtGui.QIcon() + icon16.addPixmap(QtGui.QPixmap(":/previous.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFindPrevious.setIcon(icon16) self.actionFindPrevious.setIconVisibleInMenu(True) self.actionFindPrevious.setObjectName("actionFindPrevious") self.actionSelectAll = QtGui.QAction(MainWindow) @@ -248,9 +242,9 @@ self.actionEdit_Header.setEnabled(False) self.actionEdit_Header.setObjectName("actionEdit_Header") self.actionPreferences = QtGui.QAction(MainWindow) - icon18 = QtGui.QIcon() - icon18.addPixmap(QtGui.QPixmap(":/configure.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPreferences.setIcon(icon18) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(":/configure.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPreferences.setIcon(icon17) self.actionPreferences.setIconVisibleInMenu(True) self.actionPreferences.setObjectName("actionPreferences") self.actionToolbars = QtGui.QAction(MainWindow) @@ -259,34 +253,34 @@ self.actionFilterFuzzy.setCheckable(True) self.actionFilterFuzzy.setChecked(False) self.actionFilterFuzzy.setEnabled(False) - icon19 = QtGui.QIcon() - icon19.addPixmap(QtGui.QPixmap(":/fuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterFuzzy.setIcon(icon19) + icon18 = QtGui.QIcon() + icon18.addPixmap(QtGui.QPixmap(":/fuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterFuzzy.setIcon(icon18) self.actionFilterFuzzy.setIconVisibleInMenu(True) self.actionFilterFuzzy.setObjectName("actionFilterFuzzy") self.actionFilterTranslated = QtGui.QAction(MainWindow) self.actionFilterTranslated.setCheckable(True) self.actionFilterTranslated.setChecked(False) self.actionFilterTranslated.setEnabled(False) - icon20 = QtGui.QIcon() - icon20.addPixmap(QtGui.QPixmap(":/translated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterTranslated.setIcon(icon20) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(":/translated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterTranslated.setIcon(icon19) self.actionFilterTranslated.setIconVisibleInMenu(True) self.actionFilterTranslated.setObjectName("actionFilterTranslated") self.actionFilterUntranslated = QtGui.QAction(MainWindow) self.actionFilterUntranslated.setCheckable(True) self.actionFilterUntranslated.setChecked(False) self.actionFilterUntranslated.setEnabled(False) - icon21 = QtGui.QIcon() - icon21.addPixmap(QtGui.QPixmap(":/untranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionFilterUntranslated.setIcon(icon21) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(":/untranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionFilterUntranslated.setIcon(icon20) self.actionFilterUntranslated.setIconVisibleInMenu(True) self.actionFilterUntranslated.setObjectName("actionFilterUntranslated") self.action_Close = QtGui.QAction(MainWindow) self.action_Close.setEnabled(False) - icon22 = QtGui.QIcon() - icon22.addPixmap(QtGui.QPixmap(":/fileclose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.action_Close.setIcon(icon22) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(":/fileclose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.action_Close.setIcon(icon21) self.action_Close.setIconVisibleInMenu(True) self.action_Close.setObjectName("action_Close") self.actionGoTo = QtGui.QAction(MainWindow) @@ -294,34 +288,34 @@ self.actionGoTo.setObjectName("actionGoTo") self.actionAddBookmarks = QtGui.QAction(MainWindow) self.actionAddBookmarks.setEnabled(False) - icon23 = QtGui.QIcon() - icon23.addPixmap(QtGui.QPixmap(":/bookmarkadd.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAddBookmarks.setIcon(icon23) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(":/bookmarkadd.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAddBookmarks.setIcon(icon22) self.actionAddBookmarks.setIconVisibleInMenu(True) self.actionAddBookmarks.setObjectName("actionAddBookmarks") self.actionClearBookmarks = QtGui.QAction(MainWindow) self.actionClearBookmarks.setEnabled(False) self.actionClearBookmarks.setObjectName("actionClearBookmarks") self.actionCatalogManager = QtGui.QAction(MainWindow) - icon24 = QtGui.QIcon() - icon24.addPixmap(QtGui.QPixmap(":/projectManager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCatalogManager.setIcon(icon24) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(":/projectManager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCatalogManager.setIcon(icon23) self.actionCatalogManager.setIconVisibleInMenu(True) self.actionCatalogManager.setObjectName("actionCatalogManager") self.actionCopySearchResult2Target = QtGui.QAction(MainWindow) self.actionCopySearchResult2Target.setEnabled(False) - icon25 = QtGui.QIcon() - icon25.addPixmap(QtGui.QPixmap(":/source.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionCopySearchResult2Target.setIcon(icon25) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(":/source.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionCopySearchResult2Target.setIcon(icon24) self.actionCopySearchResult2Target.setIconVisibleInMenu(True) self.actionCopySearchResult2Target.setObjectName("actionCopySearchResult2Target") self.actionGlossary = QtGui.QAction(MainWindow) self.actionGlossary.setObjectName("actionGlossary") self.actionAuto_translate = QtGui.QAction(MainWindow) self.actionAuto_translate.setEnabled(False) - icon26 = QtGui.QIcon() - icon26.addPixmap(QtGui.QPixmap(":/autotranslate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAuto_translate.setIcon(icon26) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(":/autotranslate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAuto_translate.setIcon(icon25) self.actionAuto_translate.setIconVisibleInMenu(True) self.actionAuto_translate.setObjectName("actionAuto_translate") self.actionClearFuzzy = QtGui.QAction(MainWindow) @@ -329,37 +323,37 @@ self.actionClearFuzzy.setObjectName("actionClearFuzzy") self.action_SpellTrans = QtGui.QAction(MainWindow) self.action_SpellTrans.setEnabled(False) - icon27 = QtGui.QIcon() - icon27.addPixmap(QtGui.QPixmap(":/spellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.action_SpellTrans.setIcon(icon27) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(":/spellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.action_SpellTrans.setIcon(icon26) self.action_SpellTrans.setIconVisibleInMenu(True) self.action_SpellTrans.setObjectName("action_SpellTrans") self.actionAutoSpellCheck = QtGui.QAction(MainWindow) self.actionAutoSpellCheck.setCheckable(True) self.actionAutoSpellCheck.setEnabled(False) - icon28 = QtGui.QIcon() - icon28.addPixmap(QtGui.QPixmap(":/autospellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionAutoSpellCheck.setIcon(icon28) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(":/autospellcheck.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionAutoSpellCheck.setIcon(icon27) self.actionAutoSpellCheck.setIconVisibleInMenu(True) self.actionAutoSpellCheck.setObjectName("actionAutoSpellCheck") self.actionConverter = QtGui.QAction(MainWindow) - icon29 = QtGui.QIcon() - icon29.addPixmap(QtGui.QPixmap(":/Converter.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionConverter.setIcon(icon29) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(":/Converter.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionConverter.setIcon(icon28) self.actionConverter.setIconVisibleInMenu(True) self.actionConverter.setObjectName("actionConverter") self.actionPreviousBookmark = QtGui.QAction(MainWindow) self.actionPreviousBookmark.setEnabled(False) - icon30 = QtGui.QIcon() - icon30.addPixmap(QtGui.QPixmap(":/bookmarkPrevious.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionPreviousBookmark.setIcon(icon30) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(":/bookmarkPrevious.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionPreviousBookmark.setIcon(icon29) self.actionPreviousBookmark.setIconVisibleInMenu(True) self.actionPreviousBookmark.setObjectName("actionPreviousBookmark") self.actionNextBookmark = QtGui.QAction(MainWindow) self.actionNextBookmark.setEnabled(False) - icon31 = QtGui.QIcon() - icon31.addPixmap(QtGui.QPixmap(":/bookmarkNext.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionNextBookmark.setIcon(icon31) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(":/bookmarkNext.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNextBookmark.setIcon(icon30) self.actionNextBookmark.setIconVisibleInMenu(True) self.actionNextBookmark.setObjectName("actionNextBookmark") self.actionRemoveThirds = QtGui.QAction(MainWindow) @@ -370,9 +364,9 @@ self.action_Overview.setChecked(False) self.action_Overview.setObjectName("action_Overview") self.actionOpen_in_New_Window = QtGui.QAction(MainWindow) - icon32 = QtGui.QIcon() - icon32.addPixmap(QtGui.QPixmap(":/new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionOpen_in_New_Window.setIcon(icon32) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(":/new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionOpen_in_New_Window.setIcon(icon31) self.actionOpen_in_New_Window.setIconVisibleInMenu(True) self.actionOpen_in_New_Window.setObjectName("actionOpen_in_New_Window") self.action_Select_All = QtGui.QAction(MainWindow) @@ -380,22 +374,22 @@ self.actionThird_Language = QtGui.QAction(MainWindow) self.actionThird_Language.setObjectName("actionThird_Language") self.actionManageTM = QtGui.QAction(MainWindow) - icon33 = QtGui.QIcon() - icon33.addPixmap(QtGui.QPixmap(":/memory.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionManageTM.setIcon(icon33) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(":/memory.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionManageTM.setIcon(icon32) self.actionManageTM.setIconVisibleInMenu(True) self.actionManageTM.setObjectName("actionManageTM") self.actionManageGlossary = QtGui.QAction(MainWindow) - icon34 = QtGui.QIcon() - icon34.addPixmap(QtGui.QPixmap(":/glossary.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionManageGlossary.setIcon(icon34) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(":/glossary.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionManageGlossary.setIcon(icon33) self.actionManageGlossary.setIconVisibleInMenu(True) self.actionManageGlossary.setObjectName("actionManageGlossary") self.actionSearch_Suggestions = QtGui.QAction(MainWindow) self.actionSearch_Suggestions.setEnabled(False) - icon35 = QtGui.QIcon() - icon35.addPixmap(QtGui.QPixmap(":/findInTM.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionSearch_Suggestions.setIcon(icon35) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(":/findInTM.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionSearch_Suggestions.setIcon(icon34) self.actionSearch_Suggestions.setIconVisibleInMenu(True) self.actionSearch_Suggestions.setObjectName("actionSearch_Suggestions") self.actionFilterSourceEqualTarget = QtGui.QAction(MainWindow) @@ -417,68 +411,95 @@ self.actionError_Checking = QtGui.QAction(MainWindow) self.actionError_Checking.setCheckable(True) self.actionError_Checking.setEnabled(False) - icon36 = QtGui.QIcon() - icon36.addPixmap(QtGui.QPixmap(":/Error_checking.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionError_Checking.setIcon(icon36) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(":/Error_checking.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionError_Checking.setIcon(icon35) self.actionError_Checking.setIconVisibleInMenu(True) self.actionError_Checking.setObjectName("actionError_Checking") self.actionSearchErrors = QtGui.QAction(MainWindow) self.actionSearchErrors.setCheckable(True) self.actionSearchErrors.setChecked(False) self.actionSearchErrors.setEnabled(False) - icon37 = QtGui.QIcon() - icon37.addPixmap(QtGui.QPixmap(":/Bug.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionSearchErrors.setIcon(icon37) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(":/Bug.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionSearchErrors.setIcon(icon36) self.actionSearchErrors.setIconVisibleInMenu(True) self.actionSearchErrors.setObjectName("actionSearchErrors") self.actionErasetarget = QtGui.QAction(MainWindow) self.actionErasetarget.setEnabled(False) self.actionErasetarget.setObjectName("actionErasetarget") self.actionXLIFF_Upgrade = QtGui.QAction(MainWindow) - icon38 = QtGui.QIcon() - icon38.addPixmap(QtGui.QPixmap(":/upgrade_xliff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionXLIFF_Upgrade.setIcon(icon38) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(":/upgrade_xliff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionXLIFF_Upgrade.setIcon(icon37) self.actionXLIFF_Upgrade.setIconVisibleInMenu(True) self.actionXLIFF_Upgrade.setObjectName("actionXLIFF_Upgrade") self.actionShow_Nonprinting_Char = QtGui.QAction(MainWindow) self.actionShow_Nonprinting_Char.setCheckable(True) self.actionShow_Nonprinting_Char.setEnabled(False) - icon39 = QtGui.QIcon() - icon39.addPixmap(QtGui.QPixmap(":/invisibleChar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.actionShow_Nonprinting_Char.setIcon(icon39) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(":/invisibleChar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionShow_Nonprinting_Char.setIcon(icon38) self.actionShow_Nonprinting_Char.setIconVisibleInMenu(True) self.actionShow_Nonprinting_Char.setObjectName("actionShow_Nonprinting_Char") self.actionChangeFileLanguage = QtGui.QAction(MainWindow) self.actionChangeFileLanguage.setEnabled(False) + self.actionChangeFileLanguage.setIconVisibleInMenu(True) self.actionChangeFileLanguage.setObjectName("actionChangeFileLanguage") self.actionBatch_Process = QtGui.QAction(MainWindow) self.actionBatch_Process.setEnabled(False) self.actionBatch_Process.setObjectName("actionBatch_Process") - self.actionUndoall = QtGui.QAction(MainWindow) - self.actionUndoall.setEnabled(False) - self.actionUndoall.setIcon(icon5) - self.actionUndoall.setShortcutContext(QtCore.Qt.ApplicationShortcut) - self.actionUndoall.setAutoRepeat(False) - self.actionUndoall.setVisible(False) - self.actionUndoall.setIconVisibleInMenu(False) - self.actionUndoall.setObjectName("actionUndoall") + self.actionUndoAll = QtGui.QAction(MainWindow) + self.actionUndoAll.setEnabled(False) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(":/undo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionUndoAll.setIcon(icon39) + self.actionUndoAll.setShortcutContext(QtCore.Qt.ApplicationShortcut) + self.actionUndoAll.setObjectName("actionUndoAll") + self.actionFull_tagid = QtGui.QAction(MainWindow) + self.actionFull_tagid.setCheckable(True) + self.actionFull_tagid.setObjectName("actionFull_tagid") + self.actionFull = QtGui.QAction(MainWindow) + self.actionFull.setCheckable(True) + self.actionFull.setObjectName("actionFull") + self.actionMinimal = QtGui.QAction(MainWindow) + self.actionMinimal.setCheckable(True) + self.actionMinimal.setObjectName("actionMinimal") self.actionNext_Untranslated = QtGui.QAction(MainWindow) self.actionNext_Untranslated.setEnabled(False) icon40 = QtGui.QIcon() - icon40.addPixmap(QtGui.QPixmap(":/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon40.addPixmap(QtGui.QPixmap("../images/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNext_Untranslated.setIcon(icon40) self.actionNext_Untranslated.setIconVisibleInMenu(True) self.actionNext_Untranslated.setObjectName("actionNext_Untranslated") self.actionNext_Fuzzy = QtGui.QAction(MainWindow) self.actionNext_Fuzzy.setEnabled(False) icon41 = QtGui.QIcon() - icon41.addPixmap(QtGui.QPixmap(":/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon41.addPixmap(QtGui.QPixmap("../images/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNext_Fuzzy.setIcon(icon41) self.actionNext_Fuzzy.setIconVisibleInMenu(True) self.actionNext_Fuzzy.setObjectName("actionNext_Fuzzy") - self.menuEdit.addAction(self.actionUndo) + self.actionConfigureShortcuts = QtGui.QAction(MainWindow) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(":/CustomizeShortcuts.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionConfigureShortcuts.setIcon(icon42) + self.actionConfigureShortcuts.setObjectName("actionConfigureShortcuts") + self.actionNext_Untranslated1 = QtGui.QAction(MainWindow) + self.actionNext_Untranslated1.setEnabled(False) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(":/nextuntranslated.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext_Untranslated1.setIcon(icon43) + self.actionNext_Untranslated1.setIconVisibleInMenu(True) + self.actionNext_Untranslated1.setObjectName("actionNext_Untranslated1") + self.actionNext_Fuzzy1 = QtGui.QAction(MainWindow) + self.actionNext_Fuzzy1.setEnabled(False) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(":/nextfuzzy.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.actionNext_Fuzzy1.setIcon(icon44) + self.actionNext_Fuzzy1.setIconVisibleInMenu(True) + self.actionNext_Fuzzy1.setObjectName("actionNext_Fuzzy1") self.menuEdit.addAction(self.actionRedo) - self.menuEdit.addAction(self.actionUndoall) + self.menuEdit.addAction(self.actionUndoAll) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionCut) self.menuEdit.addAction(self.actionCopy) @@ -495,19 +516,26 @@ self.menuEdit.addAction(self.actionEdit_Header) self.menuEdit.addAction(self.actionErasetarget) self.menuEdit.addAction(self.actionChangeFileLanguage) + self.menuInline_Tags.addAction(self.actionFull_tagid) + self.menuInline_Tags.addAction(self.actionFull) + self.menuInline_Tags.addAction(self.actionMinimal) self.menuView.addAction(self.actionFilterUntranslated) self.menuView.addAction(self.actionFilterFuzzy) self.menuView.addAction(self.actionFilterTranslated) self.menuView.addAction(self.actionFilterSourceEqualTarget) self.menuView.addAction(self.actionShow_Nonprinting_Char) + self.menuView.addAction(self.menuInline_Tags.menuAction()) self.menuGo.addAction(self.actionFirst) self.menuGo.addAction(self.actionPrevious) self.menuGo.addAction(self.actionNext) self.menuGo.addAction(self.actionLast) self.menuGo.addSeparator() self.menuGo.addAction(self.actionGoTo) + self.menuGo.addSeparator() self.menuGo.addAction(self.actionNext_Untranslated) self.menuGo.addAction(self.actionNext_Fuzzy) + self.menuGo.addAction(self.actionNext_Untranslated) + self.menuGo.addAction(self.actionNext_Fuzzy) self.menuHelp.addSeparator() self.menuHelp.addAction(self.actionAbout) self.menuHelp.addAction(self.actionAboutQT) @@ -533,6 +561,7 @@ self.menu_Tool.addAction(self.menuEmbed_Information_in_XLIFF_File.menuAction()) self.menu_Tool.addSeparator() self.menu_Tool.addAction(self.actionPreferences) + self.menu_Tool.addAction(self.actionConfigureShortcuts) self.menuBookmark.addAction(self.actionAddBookmarks) self.menuBookmark.addAction(self.actionNextBookmark) self.menuBookmark.addAction(self.actionPreviousBookmark) @@ -559,8 +588,7 @@ self.menubar.addAction(self.menuHelp.menuAction()) self.toolFile.addAction(self.actionSave) self.toolFile.addAction(self.actionSaveas) - self.toolEdit.addAction(self.actionUndoall) - self.toolEdit.addAction(self.actionUndo) + self.toolEdit.addAction(self.actionUndoAll) self.toolEdit.addAction(self.actionRedo) self.toolEdit.addAction(self.actionCut) self.toolEdit.addAction(self.actionCopy) @@ -594,6 +622,7 @@ MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.menuEdit.setTitle(QtGui.QApplication.translate("MainWindow", "&Edit", None, QtGui.QApplication.UnicodeUTF8)) self.menuView.setTitle(QtGui.QApplication.translate("MainWindow", "&View", None, QtGui.QApplication.UnicodeUTF8)) + self.menuInline_Tags.setTitle(QtGui.QApplication.translate("MainWindow", "Inline Tags", None, QtGui.QApplication.UnicodeUTF8)) self.menuGo.setTitle(QtGui.QApplication.translate("MainWindow", "&Go", None, QtGui.QApplication.UnicodeUTF8)) self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "&Help", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Tool.setTitle(QtGui.QApplication.translate("MainWindow", "&Tools", None, QtGui.QApplication.UnicodeUTF8)) @@ -636,10 +665,6 @@ self.actionExit.setStatusTip(QtGui.QApplication.translate("MainWindow", "Quit the application", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Quit</h3>Use this to quit the application. Any unsaved changes will be prompted.", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndo.setText(QtGui.QApplication.translate("MainWindow", "&Undo", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndo.setStatusTip(QtGui.QApplication.translate("MainWindow", "Undo the last change", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndo.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Undo</h3>Use this to undo the last change done in the editor.", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndo.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo.setText(QtGui.QApplication.translate("MainWindow", "Re&do", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo.setStatusTip(QtGui.QApplication.translate("MainWindow", "Redo the last change", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Redo</h3>Use this to redo the last change done in the editor.", None, QtGui.QApplication.UnicodeUTF8)) @@ -725,7 +750,7 @@ self.actionSelectAll.setStatusTip(QtGui.QApplication.translate("MainWindow", "Select all text", None, QtGui.QApplication.UnicodeUTF8)) self.actionSelectAll.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Select all text</h3>Select all text in the current window.", None, QtGui.QApplication.UnicodeUTF8)) self.actionSelectAll.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+A", None, QtGui.QApplication.UnicodeUTF8)) - self.actionEdit_Header.setText(QtGui.QApplication.translate("MainWindow", "PO &Header...", None, QtGui.QApplication.UnicodeUTF8)) + self.actionEdit_Header.setText(QtGui.QApplication.translate("MainWindow", "&Header...", None, QtGui.QApplication.UnicodeUTF8)) self.actionEdit_Header.setStatusTip(QtGui.QApplication.translate("MainWindow", "Open header dialog...", None, QtGui.QApplication.UnicodeUTF8)) self.actionEdit_Header.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<h3>Open header dialog</h3>Use this to open the dialog to edit the header information.", None, QtGui.QApplication.UnicodeUTF8)) self.actionEdit_Header.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+H", None, QtGui.QApplication.UnicodeUTF8)) @@ -847,31 +872,54 @@ self.actionShow_Nonprinting_Char.setStatusTip(QtGui.QApplication.translate("MainWindow", "Show the nonprinting characters", None, QtGui.QApplication.UnicodeUTF8)) self.actionShow_Nonprinting_Char.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Alt+N", None, QtGui.QApplication.UnicodeUTF8)) self.actionChangeFileLanguage.setText(QtGui.QApplication.translate("MainWindow", "Change &Language of Present File", None, QtGui.QApplication.UnicodeUTF8)) + self.actionChangeFileLanguage.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+L", None, QtGui.QApplication.UnicodeUTF8)) self.actionChangeFileLanguage.setToolTip(QtGui.QApplication.translate("MainWindow", "Change the language code of the present file", None, QtGui.QApplication.UnicodeUTF8)) self.actionChangeFileLanguage.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+L", None, QtGui.QApplication.UnicodeUTF8)) self.actionBatch_Process.setText(QtGui.QApplication.translate("MainWindow", "Batch Change", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setToolTip(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) - self.actionUndoall.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Y", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setToolTip(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) + self.actionUndoAll.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Y", None, QtGui.QApplication.UnicodeUTF8)) + self.actionFull_tagid.setText(QtGui.QApplication.translate("MainWindow", "Full+tagid", None, QtGui.QApplication.UnicodeUTF8)) + self.actionFull.setText(QtGui.QApplication.translate("MainWindow", "Full", None, QtGui.QApplication.UnicodeUTF8)) + self.actionMinimal.setText(QtGui.QApplication.translate("MainWindow", "Minimal", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Untranslated.setText(QtGui.QApplication.translate("MainWindow", "Next &Untranslated", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Untranslated.setToolTip(QtGui.QApplication.translate("MainWindow", "Next Untranslated", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Untranslated.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next untranslated message", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next untranslated string", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Untranslated.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Untranslated Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next untranslated string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+1", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+4", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setText(QtGui.QApplication.translate("MainWindow", "Next Fu&zzy", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Fuzzy.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next fuzzy message", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next fuzzy string", None, QtGui.QApplication.UnicodeUTF8)) self.actionNext_Fuzzy.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Fuzzy Message</span></p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next fuzzy string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) - self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+2", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+5", None, QtGui.QApplication.UnicodeUTF8)) + self.actionConfigureShortcuts.setText(QtGui.QApplication.translate("MainWindow", "Confi&gure Shortcuts...", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated1.setText(QtGui.QApplication.translate("MainWindow", "Next &Untranslated", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated1.setToolTip(QtGui.QApplication.translate("MainWindow", "Next Untranslated", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated1.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next untranslated message", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated1.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" +"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" +"p, li { white-space: pre-wrap; }\n" +"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" +"<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Untranslated Message</span></p>\n" +"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next untranslated string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Untranslated1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+1", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy1.setText(QtGui.QApplication.translate("MainWindow", "Next Fu&zzy", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy1.setStatusTip(QtGui.QApplication.translate("MainWindow", "Go to the next fuzzy message", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy1.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" +"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" +"p, li { white-space: pre-wrap; }\n" +"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" +"<p style=\" margin-top:14px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:large; font-weight:600;\">Next Fuzzy Message</span></p>\n" +"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Go to the next fuzzy string in the table.</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + self.actionNext_Fuzzy1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+2", None, QtGui.QApplication.UnicodeUTF8)) import images_rc Modified: branches/wordforge0.8/WordForge/Editor/ui/images_rc.py =================================================================== --- branches/wordforge0.8/WordForge/Editor/ui/images_rc.py 2011-04-17 10:58:15 UTC (rev 1312) +++ branches/wordforge0.8/WordForge/Editor/ui/images_rc.py 2011-04-17 10:59:15 UTC (rev 1313) @@ -2,7 +2,8 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt (Qt v4.6.2) +# Created: Sun Apr 17 16:47:51 2011 +# by: The Resource Compiler for PyQt (Qt v4.7.0) # # WARNING! All changes made in this file will be lost! @@ -15294,6 +15295,285 @@ \x64\x09\xc9\x91\x64\x70\x9a\x99\x78\xb9\xf6\x3f\xd3\x41\x2e\xed\ \x55\x74\x72\x95\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ +\x00\x00\x11\x50\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x0a\x1e\x0e\x1a\ +\x09\x0b\xa0\x63\x9a\x00\x00\x10\xf2\x49\x44\x41\x54\x78\x9c\xed\ +\x9a\x6b\x8c\x5d\xd5\x75\xc7\x7f\x6b\xef\x7d\xce\xbd\x73\xef\xbc\ +\xc7\x36\xb6\x79\x18\x62\x5b\xe1\x19\x63\x9c\x90\x90\x90\x36\x69\ +\x2a\x4a\xf3\x00\x9a\x84\x20\x55\xa2\x95\xda\x34\xa8\x41\xa2\x6d\ +\x12\x20\x21\x52\x44\x45\xeb\xc6\x21\x52\x95\x2a\x72\xa1\x6d\xda\ +\x86\x46\x44\x25\x4d\xc1\x34\x48\x34\x6d\x42\x94\xa4\x31\x38\x85\ +\x18\xb0\x79\x18\x1b\x1b\x83\x9f\x33\x9e\xf1\xdc\xb9\x73\x5f\xe7\ +\xec\xbd\xfa\xe1\x9c\x7b\x67\xc6\x9e\x31\x0c\x33\x55\x3e\xc4\x4b\ +\xba\x73\x46\xe7\x9c\xb5\xf6\xda\xff\xbd\xf6\x3e\xeb\x05\xa7\xe9\ +\x34\x9d\xa6\xd3\x74\x9a\x7e\x75\x49\x7e\xd9\x0a\x6c\xb8\x97\x68\ +\x25\x3d\x7d\x26\x4d\xbb\x82\x43\x6c\x50\x43\x31\x7f\xd8\x00\x6f\ +\x24\x98\x14\x0d\xce\xd5\x0f\x32\x31\xfe\xe4\x4d\x24\x8b\x39\xfe\ +\x2f\x15\x80\xeb\xee\x2d\xac\x0e\x46\xd7\x09\xda\xad\x50\x54\x35\ +\x05\xa3\x38\x05\x93\x2b\x17\x82\x90\x8a\x84\xa6\x40\x43\x91\xaa\ +\x09\xf2\xf4\x43\x37\x35\xf7\x2c\x96\x0e\xb3\x02\xf0\xe5\xbb\x37\ +\xfe\x91\x11\x6e\x0f\x41\xcf\x23\x57\x66\xa1\x64\xc4\x1c\x0b\x1a\ +\xfe\x4d\xd4\xdd\x7a\xfb\xed\xb7\x4f\x5c\xf3\x0f\xd1\x7a\x13\x58\ +\x17\x8c\xf9\x43\x51\xbd\x4c\x95\xd2\x29\x15\x15\x6a\x2a\xf2\x94\ +\x09\xe1\x1b\xc0\xf6\x87\x3e\x95\x6c\xbf\xf3\x6f\xee\xec\x2d\xb5\ +\x0a\x7f\x0d\xfc\x4e\x08\x61\xe0\x94\xe3\x1b\x33\x06\x3c\x58\x8b\ +\x9b\x7f\x76\xe7\x2d\x77\x56\xda\xf7\xdd\x89\x2f\x6e\xda\xb4\xf1\ +\x3a\xe0\x9e\xf5\x97\x6d\x30\xe7\xae\x3a\x8f\xc8\xd9\x79\x4f\x36\ +\xa8\xd2\x68\xd4\x09\x21\x74\xee\x4d\x4e\x4e\x0e\x6d\xdb\xb6\xed\ +\x0f\x6a\xf5\xc6\xc0\xf5\xf7\xf2\xa9\x46\x90\xb5\x6a\xe4\x96\xde\ +\x52\xdf\xdb\x3e\xb0\xfe\x63\x76\x65\xcf\x5b\x31\x62\x50\x55\x94\ +\x80\xa2\xa8\x66\x57\xaf\x09\xfb\xc7\x77\x96\x7e\xfa\xf4\xa3\x57\ +\x4c\xd6\xab\x25\x55\xdd\x74\xfd\xbd\xec\x2d\x4d\x14\xff\xb9\x5c\ +\x2e\x7d\xe8\x8a\x2b\xde\x1d\x0d\x0e\x0c\x82\x08\xa8\x02\x8a\x2a\ +\x28\x9a\xe9\x13\x02\xc7\x8e\x8d\x0c\xfc\x7c\xdb\xb6\x1b\xa5\x2e\ +\xfd\xc0\xc7\xe6\x04\xc0\x38\xb3\xe9\xd2\x4b\x2f\x35\x97\x5d\x7a\ +\x19\x71\x5c\x20\x04\x4f\xdb\x50\xa6\xff\x3d\xc9\x76\x74\xea\x1f\ +\x31\x86\x46\xa3\x4e\xa3\x59\xef\x3c\x5e\xb2\x64\x29\xfd\xfd\xfd\ +\xd1\x83\x0f\x3e\xf8\x89\x15\x8d\xab\xbf\xb9\xb7\xf8\xc3\x35\x1a\ +\x74\xfd\xc7\x7f\xfd\x53\xac\xea\x5d\x47\xd1\xf4\x92\x68\x13\x99\ +\x26\x38\x9b\x80\x62\x25\x66\xa8\x6f\x29\xdd\x3d\x25\xfb\xdd\xef\ +\x7f\xf3\x32\x85\xd5\x2b\x93\x8f\xbc\x37\x04\x7f\xdd\xd5\xbf\xfd\ +\x41\x06\x07\x06\x71\xd6\x75\x00\x17\x04\x15\xcd\x75\x52\x8c\x31\ +\xf4\xf7\xf7\xd3\xdb\xdb\x13\x6d\xd9\xf2\xf0\x47\x37\x7e\x75\xe3\ +\xf9\x77\x7c\xee\x8e\x17\x66\x05\xc0\x7b\xbf\x66\xe9\x92\xa5\x24\ +\x3e\xc5\x69\xc4\xf8\xc4\xf1\x4c\x29\xc9\x55\x6b\x5f\x67\x41\x20\ +\x1b\x4f\x29\x95\xba\x69\x26\x4d\x8e\x57\xc6\x3a\x4f\x8b\xc5\x2e\ +\xfa\xfb\x33\x2b\x8d\xc3\xb2\x0d\x22\x7a\x2e\x08\xcb\xca\xe7\x52\ +\xf1\x87\x69\x84\x2a\x87\x5b\x3b\xb1\x12\x61\x70\x88\x18\x04\x21\ +\xa8\x67\x79\x7c\x21\x8d\x30\xc1\x50\xf7\xf2\x6c\x91\xd0\x35\xae\ +\xd5\x1f\x01\xf4\xf5\xf4\x92\x24\x2d\x42\xf0\x4c\xd6\x26\x31\x22\ +\x88\xc8\x34\xfd\x94\x52\x57\x19\x9f\xa6\xf4\xf4\xf4\x65\x77\xd2\ +\xf4\x52\x60\x76\x00\x00\x83\x80\xa0\x44\x2e\xc2\xb9\x08\x11\x41\ +\x68\x0b\x86\xa0\x29\xbb\x46\x9e\x60\xff\xf8\x4e\xaa\xcd\x51\x5a\ +\xbe\x81\x35\x0e\x6b\x22\x8a\xb6\x9b\xae\xb8\x88\xf7\xd0\xa8\xd7\ +\x31\xc6\x61\x70\x14\xe2\x22\xbd\xe5\x21\x46\xdd\x8b\x8c\x99\x17\ +\x2f\xd4\x20\x3d\x62\x20\x90\xe2\xa4\x48\xd9\x0e\x52\xb6\x4b\x70\ +\x12\x63\x70\x18\x31\x64\x5a\x04\xca\x76\x90\x5a\x18\x23\x90\x66\ +\xe3\xa7\x52\x24\xd5\x42\x1b\x76\x63\x0c\xce\x45\x44\x2e\xc2\x18\ +\xd3\xd1\xb3\x4d\xce\x45\x24\x69\x0a\xf9\x07\x24\x4d\xd3\x42\xe7\ +\xd9\x2c\x00\x10\x54\x11\x31\x38\xeb\x88\x5c\x9c\x01\x90\xff\x0e\ +\x57\x76\xf3\xf0\xf3\x5f\xa3\x9e\x4c\x70\xce\xe0\x05\xac\x1c\x58\ +\x4d\x57\xd4\x8d\x88\xc5\xe4\x3f\xe7\x1c\xad\x56\x93\x4a\x61\x8c\ +\x46\xab\x46\x2b\x69\x50\x4b\x2b\x84\x7a\x42\x62\x27\x48\x4c\xad\ +\x0f\xaf\x45\x8c\xe0\x49\x29\x49\x37\x5d\xa6\x8f\x92\x19\x20\x32\ +\x45\x2c\x31\x46\x6c\x06\x80\xa6\x74\x99\x7e\x62\xe9\xc2\x6b\x36\ +\x01\xf1\x44\x1e\xef\x32\x83\x53\xac\xb1\x38\xeb\x70\x39\x00\x46\ +\x32\x8b\x25\xb7\x48\x67\x1d\xd6\x18\x82\x66\xfb\x54\x83\x76\x10\ +\x9a\x15\x00\x41\x30\x62\xb0\xd6\x11\xb9\xdc\x1c\x45\x18\xa9\x1d\ +\xe0\x3b\x3b\xfe\x92\x9e\xe2\x20\xef\x7f\xeb\x4d\x14\x5d\x99\x7a\ +\x52\x65\xac\x76\x88\x7a\x6b\x8c\x46\x52\xa3\x91\xd6\x48\x7d\x83\ +\xc4\x27\x84\x56\xc0\xda\x18\x27\x11\xce\x16\xb2\xf5\x52\x45\x35\ +\x88\x82\x11\xc0\x6b\x42\x24\x5d\xc4\xa6\x4c\x97\xed\x27\x96\x12\ +\x91\x14\x31\xe2\x10\x04\xaf\x09\x05\xd3\x4d\x64\x4a\x1d\x00\x14\ +\x8c\x68\xb6\x33\x55\x15\x63\x6d\x06\x82\xcb\x26\x9a\xe9\x6b\xf2\ +\x33\x51\xb1\xd6\x62\xac\x45\x35\x9c\x34\xd7\x59\x01\x68\x1f\x1c\ +\xc6\x64\x20\x88\x64\xa8\xfe\xe8\xe5\x7f\xc1\x1a\xc7\x95\xab\xaf\ +\x27\xf5\x2d\x1e\xdf\xf7\x10\x87\x27\xf6\x62\x25\x22\xb2\x05\xac\ +\x89\x70\x26\x22\x76\xc5\x6c\x1f\x59\x8b\x31\x16\x6b\x1c\xc6\x64\ +\x26\x0d\xcc\xf8\xb0\x7a\x6d\xe2\xa4\x40\x24\x45\x0a\x52\xa6\x68\ +\x7a\x89\x4d\x09\x27\x45\x04\x21\xd5\x26\x91\x74\x11\x49\x17\x7e\ +\xba\x0f\x64\x32\x24\x82\x06\x8c\x18\xc4\x18\xac\xb1\xd8\x1c\x0c\ +\x31\x06\x21\x7f\x6e\x4c\xe7\x0b\xf3\x06\x01\x98\xda\x43\x22\x06\ +\x63\x84\x5a\xab\xc2\xbe\xd1\xa7\xb9\x78\xc5\xaf\x21\x08\x8f\xbd\ +\xf4\x2d\x9a\x69\x0d\x67\xa7\x6d\x11\xa6\xae\x88\x60\x8c\x64\x2b\ +\x62\x24\x07\x20\xa7\x00\xb8\xec\xcc\xf4\x9a\xe6\x23\x1a\xac\xc4\ +\x19\x98\x52\xa2\x68\x7a\x10\x2c\xcd\x50\x41\x24\x9b\x6d\xdb\x02\ +\x90\xfc\x6b\x09\x68\xd0\x8e\xc6\x99\x1e\xd3\x17\x0e\x52\xef\x3b\ +\xdb\xe1\x0d\x03\x90\x21\x97\xbd\x5c\x2c\x14\x00\x61\xff\xf8\x7e\ +\x00\x96\xf5\xac\xe2\xe5\x63\x4f\x33\xd9\x3a\x4e\x64\x0b\xac\x1a\ +\xb8\x88\xd5\x4b\x36\xe0\x4c\x44\x31\xea\xee\x9c\x03\x49\xb3\x49\ +\x08\x0... [truncated message content] |