Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37412835
en ru br
Репозитории ALT
S:3.3.2-alt1
5.1: 1.4.3-alt1
4.1: 1.4.1-alt1
4.0: 1.3.6-alt1.1
3.0: 1.3.1-alt2.1.1
www.altlinux.org/Changes

Группа :: Редакторы
Пакет: poedit

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: poedit-3.0-up-HEAD.patch
Скачать


diff --git a/Makefile.am b/Makefile.am
index c5692fa1d..0d2d142dc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,4 +16,5 @@ EXTRA_DIST = \
 	deps/pugixml/src/pugiconfig.hpp \
 	deps/pugixml/src/pugixml.cpp \
 	deps/pugixml/src/pugixml.hpp \
+	README.md \
 	bootstrap
diff --git a/src/catalog.cpp b/src/catalog.cpp
index 56394abe4..9d823305d 100644
--- a/src/catalog.cpp
+++ b/src/catalog.cpp
@@ -124,6 +124,45 @@ wxString Catalog::HeaderData::ToString(const wxString& line_delim)
     return hdr;
 }
 
+void Catalog::HeaderData::NormalizeHeaderOrder()
+{
+    // This is the order of header lines in a POT file
+    // generated by GNU Gettext's xgettext utility, or
+    // rearranged by the msgmerge utility.
+    const wxString canonicalOrder[] =
+    {
+        "Project-Id-Version",
+        "Report-Msgid-Bugs-To",
+        "POT-Creation-Date",
+        "PO-Revision-Date",
+        "Last-Translator",
+        "Language-Team",
+        "Language",
+        "MIME-Version",
+        "Content-Type",
+        "Content-Transfer-Encoding",
+        "Plural-Forms"
+    };
+
+    const wxArrayString orderArr(sizeof(canonicalOrder) / sizeof(*canonicalOrder),
+        canonicalOrder);
+
+    // Sort standard header lines to the beginning of the header, in their
+    // canonical order, and the rest after them, in their original order.
+    std::stable_sort(m_entries.begin(), m_entries.end(),
+        [&orderArr](const Entry& a, const Entry& b)
+        {
+            auto coalesce = [&orderArr](int x) -> int {
+                if (x == wxNOT_FOUND)
+                    return 1 + static_cast<int>(orderArr.GetCount());
+                else
+                    return x;
+            };
+
+            return coalesce(orderArr.Index(a.Key)) < coalesce(orderArr.Index(b.Key));
+        });
+}
+
 void Catalog::HeaderData::UpdateDict()
 {
     SetHeader("Project-Id-Version", Project);
@@ -215,6 +254,8 @@ void Catalog::HeaderData::UpdateDict()
         path.Printf("X-Poedit-SearchPathExcluded-%i", i);
         SetHeader(path, SearchPathsExcluded[i]);
     }
+
+    NormalizeHeaderOrder();
 }
 
 void Catalog::HeaderData::ParseDict()
diff --git a/src/catalog.h b/src/catalog.h
index d3ea72a4d..39453bd51 100644
--- a/src/catalog.h
+++ b/src/catalog.h
@@ -393,6 +393,8 @@ class Catalog
             Entries m_entries;
 
             const Entry *Find(const wxString& key) const;
+
+            void NormalizeHeaderOrder();
         };
 
         enum CreationFlags
diff --git a/src/commentdlg.cpp b/src/commentdlg.cpp
index ccd261546..2342ee4de 100644
--- a/src/commentdlg.cpp
+++ b/src/commentdlg.cpp
@@ -50,7 +50,8 @@ CommentDialog::CommentDialog(wxWindow *parent, const wxString& comment) : wxDial
     // else: button is labeled "Update" in XRC
 
     wxAcceleratorEntry entries[] = {
-        { wxACCEL_CMD, WXK_RETURN, wxID_OK }
+        { wxACCEL_CMD, WXK_RETURN, wxID_OK },
+        { wxACCEL_CMD, WXK_NUMPAD_ENTER, wxID_OK }
     };
     wxAcceleratorTable accel(WXSIZEOF(entries), entries);
     SetAcceleratorTable(accel);
diff --git a/src/edframe.cpp b/src/edframe.cpp
index c19a57959..469a9224e 100644
--- a/src/edframe.cpp
+++ b/src/edframe.cpp
@@ -2613,12 +2613,12 @@ void PoeditFrame::UpdateTitle()
     }
     else
   #endif
+#endif // __WXOSX__
     if (!subtitle.empty())
     {
         title << MACOS_OR_OTHER(L" Б─■ ", L" Б─╒ ");
         title << subtitle;
     }
-#endif // __WXOSX__
 
     m_fileNamePartOfTitle = title;
 
diff --git a/src/editing_area.cpp b/src/editing_area.cpp
index 760d5db82..3151bd703 100644
--- a/src/editing_area.cpp
+++ b/src/editing_area.cpp
@@ -1012,7 +1012,7 @@ void EditingArea::UpdateCharCounter(CatalogItemPtr item)
     if (!m_charCounter || !item)
         return;
 
-    if (item->HasPlural())
+    if (item->HasPlural() && m_pluralNotebook)
     {
         int index = m_pluralNotebook->GetSelection();
         if (index == 0)
diff --git a/src/edlistctrl.cpp b/src/edlistctrl.cpp
index 9c2218c76..d63545b53 100644
--- a/src/edlistctrl.cpp
+++ b/src/edlistctrl.cpp
@@ -848,6 +848,6 @@ void PoeditListCtrl::DoFreeze()
 
 void PoeditListCtrl::DoThaw()
 {
-    m_model->Thaw();
     wxDataViewCtrl::DoThaw();
+    m_model->Thaw();
 }
diff --git a/src/export_html.cpp b/src/export_html.cpp
index d33241770..04b3efbd1 100644
--- a/src/export_html.cpp
+++ b/src/export_html.cpp
@@ -56,6 +56,8 @@ extern const char *CSS_STYLE;
 void Catalog::ExportToHTML(std::ostream& f)
 {
     const bool translated = HasCapability(Catalog::Cap::Translations);
+    const auto lang = translated ? GetLanguage() : Language();
+    const auto srclang = GetSourceLanguage();
 
     f << "<!DOCTYPE html>\n"
          "<html>\n"
@@ -73,8 +75,8 @@ void Catalog::ExportToHTML(std::ostream& f)
     f << "<table class='metadata'>\n";
     if (!m_header.Project.empty())
         TableRow(f, _("Project:"), m_header.Project);
-    if (translated && m_header.Lang.IsValid())
-        TableRow(f, _("Language:"), m_header.Lang.DisplayName());
+    if (translated && lang.IsValid())
+        TableRow(f, _("Language:"), lang.DisplayName());
     f << "</table>\n";
 
 
@@ -120,20 +122,20 @@ void Catalog::ExportToHTML(std::ostream& f)
     // Translations:
 
     std::string lang_src, lang_tra;
-    if (m_sourceLanguage.IsValid())
-        lang_src = " lang='" + m_sourceLanguage.LanguageTag() + "'";
-    if (m_header.Lang.IsValid())
+    if (srclang.IsValid())
+        lang_src = " lang='" + srclang.LanguageTag() + "'";
+    if (lang.IsValid())
     {
-        lang_tra = " lang='" + m_header.Lang.LanguageTag() + "'";
-        if (m_header.Lang.IsRTL())
+        lang_tra = " lang='" + lang.LanguageTag() + "'";
+        if (lang.IsRTL())
             lang_tra += " dir='rtl'";
     }
 
-    auto thead_src = m_sourceLanguage.IsValid()
-                     ? (wxString::Format(_(L"Source text Б─■ %s"), m_sourceLanguage.DisplayName()))
+    auto thead_src = srclang.IsValid()
+                     ? (wxString::Format(_(L"Source text Б─■ %s"), srclang.DisplayName()))
                      : _("Source text");
     auto thead_tra = wxString::Format(_(L"Translation Б─■ %s"),
-                                      m_header.Lang.IsValid() ? m_header.Lang.DisplayName() : _("unknown language"));
+                                      lang.IsValid() ? lang.DisplayName() : _("unknown language"));
 
     f << "<table class='translations'>\n"
          "  <thead>\n"
@@ -244,21 +246,10 @@ Based on Minimal CSS (minimalcss.com) under the MIT license.
 * { margin: 0; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
 
 /* Layout */
-body { background-color: #fff; color: #333;	font: 14px/20px -apple-system, "HelveticaNeue", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }
-
-header { width: 100%; margin: 0 auto; position: relative; padding: 20px 0; margin-bottom: 20px; }
-
-nav ul { margin: 0; }
-nav ul li { display: inline; margin-right: 20px; font-size: 16px; line-height: 28px; color: #333; }
-nav ul li a { color: #333; }
+body { font: 14px/20px -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }
 
 .container { position: relative; max-width: 90%; margin: 0 auto; }
 
-footer { border-top:1px solid #ccc; font-size:11px; line-height:26px; color:#999; }
-footer a { color:#999999; }
-footer a:hover { color:#105CB6; }
-footer ul li { display:inline; list-style:none; padding-left:20px; }
-
 /* Typography */
 a { color: #105CB6; text-decoration: none; }
 a:hover, a:focus { color: #105CB6; text-decoration: underline; }
@@ -270,7 +261,6 @@ h3 { font-size: 16px; line-height: 20px; margin: 10px 0; }
 h4 { font-size: 14px; line-height: 20px; margin: 10px 0; }
 h5 { font-size: 12px; line-height: 20px; margin: 10px 0; }
 h5 { font-size: 10px; line-height: 20px; margin: 10px 0; }
-h1,h2,h3,h4,h5,h6 { color: #333; }
 
 p { margin-bottom: 10px; }
 
@@ -285,15 +275,6 @@ img.center      { margin: 0 auto; display: block; }
 .text-right   { text-align: right; }
 .text-justify { text-align: justify; }
 
-/* Misc */
-hr { background-color: #ccc; border: 0px; color: #ccc; height: 1px; margin: 8px 0 20px 0; }
-pre, code { background:#E0ECF6; display:block; margin-bottom: 20px; padding:10px; }
-
-blockquote { margin: 10px 10px 20px; padding: 9px; background-color: #f8f8f8; color: #666; border-left: 5px solid #ddd; font: 14px/20px Georgia, Times, serif; quotes: "\201C" "\201D"; }
-blockquote p { margin: 0; }
-blockquote:before { content: open-quote; font-weight: bold; }
-blockquote:after  { content: close-quote; font-weight: bold; }
-
 /* List */
 ul { list-style-position:inside; }
 ol { list-style-position:inside; }
@@ -327,12 +308,8 @@ table.metadata td {
 .graph div { float: left; }
 .graph div:first-child { border-top-left-radius: 3px; border-bottom-left-radius: 3px; }
 .graph div:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; }
-.percent-done    { background-color: rgb(90, 228, 140); height: 10px; }
-.percent-fuzzy   { background-color: rgb(255, 167, 52); height: 10px; }
-.percent-untrans { background-color: #F1F1F1; height: 10px; }
 .legend {
   font-size: smaller;
-  color: #aaa;
   padding-top: 12px;
   text-align: center;
 }
@@ -345,7 +322,7 @@ table.translations {
 table.translations th, table.translations td {
   padding: 5px 10px;
   vertical-align: top;
-  border-bottom: 1px solid #E1E1E1;
+  border-bottom: 1px solid #F1F1F1;
 }
 table.translations th {
   text-align: left;
@@ -360,24 +337,42 @@ tr.comments div {
   float: left;
   max-width: 90%;
   font-size: smaller;
-  color: #aaa;
 }
 tr.comments div p:last-child { margin-bottom: 0; }
 tr.comments td { padding-top: 0; }
 
-.fuzzy .tra {
-  color: rgb(218, 123, 0);
-}
-
 .msgctxt {
-  color: rgb(70, 109, 137);
   font-size: smaller;
-  background-color: rgb(217, 232, 242);
   border-radius: 2px;
   padding: 2px 4px;
   margin-right: 4px;
 }
 
+
+/* Colors */
+
+body { background-color: #fff; color: #333; }
+
+.percent-done    { background-color: rgb(146, 236, 106); height: 10px; }
+.percent-fuzzy   { background-color: rgb(255, 149, 0); height: 10px; }
+.percent-untrans { background-color: #F1F1F1; height: 10px; }
+.legend          { color: #aaa; }
+tr.comments div  { color: #aaa; }
+.fuzzy .tra      { color: rgb(230, 134, 0); }
+
+.msgctxt         { color: rgb(70, 109, 137); background-color: rgb(217, 232, 242); }
+
+
+@media (prefers-color-scheme: dark) {
+    body             { background-color: rgb(45, 42, 41); color: #eee; }
+    .percent-untrans { background-color: rgba(255, 255, 255, 0.3); }
+    .legend          { color: rgba(255, 255, 255, 0.6); }
+    tr.comments div  { color: rgba(255, 255, 255, 0.6); }
+    .fuzzy .tra      { color: rgb(253, 178, 72); }
+    .msgctxt         { color: rgb(180, 222, 254); background-color: rgba(67, 94, 147, 0.6); }
+    table.translations th, table.translations td { border-bottom: 1px solid #333; }
+}
+
 )";
 
 } // anonymous namespace
diff --git a/src/tm/transmem.cpp b/src/tm/transmem.cpp
index ca7d3b304..5fcaded8f 100644
--- a/src/tm/transmem.cpp
+++ b/src/tm/transmem.cpp
@@ -559,9 +559,11 @@ void TranslationMemoryImpl::ExportData(TranslationMemory::IOInterface& destinati
     try
     {
         auto reader = m_mng->Reader();
-        int32_t numDocs = reader->numDocs();
+        int32_t numDocs = reader->maxDoc();
         for (int32_t i = 0; i < numDocs; i++)
         {
+            if (reader->isDeleted(i))
+                continue;
             auto doc = reader->document(i);
             destination.Insert
             (
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin