[meld: 57/63] Merge branch 'master' into Gio



commit 5f842847d8003f2b1303285c65590778337251c5
Merge: 3a8dae9 5f2e3f4
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sun Nov 15 09:15:08 2015 +1000

    Merge branch 'master' into Gio

 NEWS                          |   65 +
 bin/meld                      |    3 +-
 data/styles/meld-base.xml     |    1 +
 data/styles/meld-dark.xml     |    1 +
 data/ui/filediff.ui           |   16 +-
 data/ui/preferences.ui        |   55 +-
 data/ui/vcview.ui             |    7 +-
 help/cs/cs.po                 |   26 +-
 meld/build_helpers.py         |   14 +-
 meld/conf.py                  |    2 +-
 meld/diffmap.py               |   34 +-
 meld/diffutil.py              |    8 +-
 meld/filediff.py              |   29 +-
 meld/gutterrendererchunk.py   |    2 +-
 meld/linkmap.py               |    3 +-
 meld/matchers.py              |    2 +-
 meld/meldapp.py               |    2 +-
 meld/meldbuffer.py            |    7 +-
 meld/meldwindow.py            |   19 +-
 meld/merge.py                 |    2 +-
 meld/misc.py                  |    4 +-
 meld/patchdialog.py           |   12 +-
 meld/recent.py                |    6 +-
 meld/sourceview.py            |   34 +-
 meld/tree.py                  |    4 +-
 meld/ui/emblemcellrenderer.py |    5 +-
 meld/ui/historyentry.py       |    2 +-
 meld/ui/notebooklabel.py      |    9 +-
 meld/ui/statusbar.py          |    3 +-
 meld/undo.py                  |    3 +-
 meld/vc/_vc.py                |   12 +
 meld/vc/bzr.py                |    1 -
 meld/vc/git.py                |   62 +-
 meld/vc/svn.py                |    3 +-
 meld/vcview.py                |    4 +-
 po/cs.po                      |  275 +-
 po/es.po                      | 6068 +++++++++++++++++++++--------------------
 po/it.po                      | 1422 ++++++----
 po/pl.po                      |   94 +-
 po/pt.po                      |  470 ++--
 po/pt_BR.po                   | 1201 +++++----
 setup_win32.py                |    4 +-
 test/test_matchers.py         |    6 +-
 43 files changed, 5417 insertions(+), 4585 deletions(-)
---
diff --cc meld/filediff.py
index 8be01d8,301b316..3630668
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@@ -841,10 -870,9 +861,11 @@@ class FileDiff(melddoc.MeldDoc, gnomegl
                      messagetype=Gtk.MessageType.QUESTION)
  
                  if resolve_response == Gtk.ResponseType.OK:
-                     conflict_file = self.textbuffer[1].data.filename
+                     bufdata = self.textbuffer[1].data
+                     conflict_file = bufdata.savefile or bufdata.filename
                      parent.command('resolve', [conflict_file])
 +        elif response == Gtk.ResponseType.CANCEL:
 +            self.state = melddoc.STATE_NORMAL
  
          return response
  
diff --cc meld/patchdialog.py
index dedc485,171e99b..916a45d
--- a/meld/patchdialog.py
+++ b/meld/patchdialog.py
@@@ -17,8 -17,7 +17,9 @@@
  import difflib
  import os
  
+ from gi.repository import Gdk
 +from gi.repository import Gio
 +from gi.repository import GLib
  from gi.repository import Gtk
  from gi.repository import GtkSource
  
@@@ -94,54 -94,38 +97,57 @@@ class PatchDialog(gnomeglade.Component)
          buf = self.textview.get_buffer()
          text0, text1 = texts[indices[0]], texts[indices[1]]
          name0, name1 = names[indices[0]], names[indices[1]]
-         diff_text = "".join(difflib.unified_diff(text0, text1, name0, name1))
+ 
+         diff = difflib.unified_diff(text0, text1, name0, name1)
+         unicodeify = lambda x: x.decode('utf8') if isinstance(x, str) else x
+         diff_text = "".join(unicodeify(d) for d in diff)
          buf.set_text(diff_text)
  
 +    def save_patch(self, filename):
 +        buf = self.textview.get_buffer()
 +        sourcefile = GtkSource.File.new()
 +        targetfile = Gio.File.new_for_path(filename)
 +        saver = GtkSource.FileSaver.new_with_target(
 +            buf, sourcefile, targetfile)
 +        saver.save_async(
 +            GLib.PRIORITY_HIGH,
 +            callback=self.file_saved_cb,
 +        )
 +
 +    def file_saved_cb(self, saver, result, *args):
 +        gfile = saver.get_location()
 +        try:
 +            saver.save_finish(result)
 +        except GLib.Error as err:
 +            filename = GLib.markup_escape_text(
 +                gfile.get_parse_name()).decode('utf-8')
 +            error_dialog(
 +                primary=_("Could not save file %s.") % filename,
 +                secondary=_("Couldn't save file due to:\n%s") % (
 +                    GLib.markup_escape_text(str(err))),
 +            )
 +
      def run(self):
          self.update_patch()
  
 -        while 1:
 -            result = self.widget.run()
 -            if result < 0:
 -                break
 +        result = self.widget.run()
 +        if result < 0:
 +            self.widget.hide()
 +            return
  
 +        # Copy patch to clipboard
 +        if result == 1:
              buf = self.textview.get_buffer()
              start, end = buf.get_bounds()
-             clip = Gtk.Clipboard.get()
-             clip.set_text(buf.get_text(start, end, False))
 -            txt = text_type(buf.get_text(start, end, False), 'utf8')
 -
 -            # Copy patch to clipboard
 -            if result == 1:
 -                clip = Gtk.Clipboard.get_default(Gdk.Display.get_default())
 -                clip.set_text(txt, -1)
 -                clip.store()
 -                break
 -            # Save patch as a file
 -            else:
 -                # FIXME: These filediff methods are actually general utility.
 -                filename = self.filediff._get_filename_for_saving(
 -                    _("Save Patch"))
 -                if filename:
 -                    txt = txt.encode('utf-8')
 -                    self.filediff._save_text_to_filename(filename, txt)
 -                    break
++            clip = Gtk.Clipboard.get_default(Gdk.Display.get_default())
++            clip.set_text(buf.get_text(start, end, False), -1)
 +            clip.store()
 +        # Save patch as a file
 +        else:
 +            # FIXME: These filediff methods are actually general utility.
 +            filename = self.filediff._get_filename_for_saving(
 +                _("Save Patch"))
 +            if filename:
 +                self.save_patch(filename)
  
          self.widget.hide()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]