On 16/05/07, Szilveszter Farkas <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I was trying to embed the FileDiff widget into another application to
> show the diff between two files. I was using the following simple
> script to achieve this:

Hi,

This was with quite an old version of Meld. I have no idea if it works
now, but it did then, and unfortunately I haven't got time to work
through your script, but it may prove helpful to you:

http://svn.berlios.de/svnroot/repos/pida/trunk/pida/services/meldembed.py

Ali

> ---
> #!/usr/bin/python
>
> import sys
>
> import pygtk
> import gtk
>
> import gettext
> gettext.install('meld')
>
> # Adding meld's stuff to the path
> sys.path += [ '/usr/lib/meld' ]
>
> import filediff
> import prefs
>
> class DummyPreferences(prefs.Preferences):
>     defaults = {
>         "window_size_x": prefs.Value(prefs.INT, 600),
>         "window_size_y": prefs.Value(prefs.INT, 600),
>         "use_custom_font": prefs.Value(prefs.BOOL,0),
>         "custom_font": prefs.Value(prefs.STRING,"monospace, 14"),
>         "tab_size": prefs.Value(prefs.INT, 4),
>         "show_line_numbers": prefs.Value(prefs.BOOL, 0),
>         "use_syntax_highlighting": prefs.Value(prefs.BOOL, 0),
>         "edit_wrap_lines" : prefs.Value(prefs.INT, 0),
>         "edit_command_type" : prefs.Value(prefs.STRING, "internal"),
> #internal, gnome, custom
>         "edit_command_custom" : prefs.Value(prefs.STRING, "gedit"),
>         "supply_newline": prefs.Value(prefs.BOOL,1),
>         "text_codecs": prefs.Value(prefs.STRING, "utf8 latin1"),
>         "save_encoding": prefs.Value(prefs.INT, 0),
>         "draw_style": prefs.Value(prefs.INT,2),
>         "toolbar_style": prefs.Value(prefs.INT,0),
>         "ignore_symlinks": prefs.Value(prefs.BOOL,0),
>         "cvs_quiet": prefs.Value(prefs.BOOL, 1),
>         "cvs_compression": prefs.Value(prefs.BOOL, 1),
>         "cvs_compression_value": prefs.Value(prefs.INT, 3),
>         "cvs_ignore_cvsrc": prefs.Value(prefs.BOOL, 0),
>         "cvs_binary": prefs.Value(prefs.STRING, "/usr/bin/cvs"),
>         "cvs_create_missing": prefs.Value(prefs.BOOL, 1),
>         "cvs_prune_empty": prefs.Value(prefs.BOOL, 1),
>         "vc_console_visible": prefs.Value(prefs.BOOL, 0),
>         "color_delete_bg" : prefs.Value(prefs.STRING, "DarkSeaGreen1"),
>         "color_delete_fg" : prefs.Value(prefs.STRING, "Red"),
>         "color_replace_bg" : prefs.Value(prefs.STRING, "#ddeeff"),
>         "color_replace_fg" : prefs.Value(prefs.STRING, "Black"),
>         "color_conflict_bg" : prefs.Value(prefs.STRING, "Pink"),
>         "color_conflict_fg" : prefs.Value(prefs.STRING, "Black"),
>         "color_inline_bg" : prefs.Value(prefs.STRING, "LightSteelBlue2"),
>         "color_inline_fg" : prefs.Value(prefs.STRING, "Red"),
>         "color_edited_bg" : prefs.Value(prefs.STRING, "gray90"),
>         "color_edited_fg" : prefs.Value(prefs.STRING, "Black"),
>         "filters" : prefs.Value(prefs.STRING,
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids
> .arch-inventory\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}")),
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             "regexes" : prefs.Value(prefs.STRING, _("CVS
> keywords\t0\t\$\\w+(:[^\\n$]+)?\$\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("C++ comment\t0\t//.*\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("C comment\t0\t/\*.*?\*/\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("All whitespace\t0\t[ \\t\\r\\f\\v]*\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n") + \
>             #TRANSLATORS: translate this string ONLY to the first
> "\t", leave it and the following parts intact
>             _("Script comment\t0\t#.*")),
>         "ignore_blank_lines" : prefs.Value(prefs.BOOL, 1)
>     }
>
>     def __init__(self):
>         prefs.Preferences.__init__(self, "/apps/meld", self.defaults)
>
>     def get_cvs_command(self, op=None):
>         cmd = [self.cvs_binary]
>         if self.cvs_quiet:
>             cmd.append("-q")
>         if self.cvs_compression:
>             cmd.append("-z%i" % self.cvs_compression_value)
>         if self.cvs_ignore_cvsrc:
>             cmd.append("-f")
>         if op:
>             cmd.append(op)
>             if op == "update":
>                 if self.cvs_create_missing:
>                     cmd.append("-d")
>                 if self.cvs_prune_empty:
>                     cmd.append("-P")
>         return cmd
>     def get_current_font(self):
>         if self.use_custom_font:
>             return self.custom_font
>         else:
>             return
> self._gconf.get_string('/desktop/gnome/interface/monospace_font_name')
> or "Monospace 10"
>
>
> preferences = DummyPreferences()
> files = [ 'old.txt', 'new.txt' ]
>
> window = gtk.Window()
> doc = filediff.FileDiff(preferences, len(files))
> doc.set_files(files)
>
> window.add(doc.widget)
> window.connect('delete-event', gtk.main_quit)
> window.show_all()
>
> gtk.main()
> ---
>
> Running this script gives several gconf-related warnings, but there is
> something more interesting in the output:
>
> /usr/lib/meld/filediff.py:165: GtkDeprecationWarning: gtk.idle_add is
> deprecated, use gobject.idle_add instead
>   gtk.idle_add( lambda *args: self.load_font()) # hack around Bug 316730
> Traceback (most recent call last):
>   File "/usr/lib/meld/filediff.py", line 1187, in on_linkmap_expose_event
>     pix_start[which+1] = self.textview[which+1].get_visible_rect().y
> IndexError: list assignment index out of range
> Traceback (most recent call last):
>   File "/usr/lib/meld/filediff.py", line 1187, in on_linkmap_expose_event
>     pix_start[which+1] = self.textview[which+1].get_visible_rect().y
> IndexError: list assignment index out of range
>
> (Installed meld from svn.gnome.org trunk)
>
> There is also no text appearing in the TextViews (and there are 3 of
> them instead of 2).
>
> I hope someone could help me with this issue, or just point me to
> another simple integration of meld's infrastructure into an
> application.
>
> Cheers,
> Szilveszter / phanatic
> _______________________________________________
> meld-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/meld-list
>
_______________________________________________
meld-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/meld-list

Reply via email to