Windowsで溶かす

クイックリファレンス: Meld-ファイル/フォルダーを視覚的に比較するためのユーティリティ。



確かに誰もがこのツールがタンバリンを使ったダンスの価値があることに同意するわけではありません。タンバリンは、快適ではない作業のためにそれを行う必要があります。 私は杖を自由な選択肢に固執し、それが始まったら努力は無駄にならないだろうと自分で決めました。



私はビジネスに興味を持っている人に勧めます。



プロセス全体は、インストールと仕上げという2つの部分に分けることができます。



設置



基本的な操作については、 Meld / Windowsで説明しています 。 以下は私のコメント付きの同じリストです。

  1. Python:
  2. GTK +オールインワンバンドル:
  3. Python gnomeバインディング:
  4. libglade:
  5. gtksourceview:
  6. Cygwin:
    • Cygwinを理解できなかったのはなぜですか? それなしで動作します。
    • http://www.cygwin.com/setup.exe
    • 状況に応じてインストールします(例:c:\ dev \ cygwin)。
    • Cygwinなしでも、Cygwinでも動作しない場合は、パッチパッケージを再インストールする必要があります。
  7. meldソースコードをダウンロードします。
  8. これをパスに追加します。
    • はい、はい、PATH変数で、Python(ポイント1、c:\ dev \ python)、ライブラリ(ポイント2、4、5、c:\ dev \ gtk \ bin、c:\ dev \ glade)へのパスを追加する必要があります\ binおよびc:\ dev \ gtksourceview \ bin)およびCygwinがインストールされている場合(ステップ6、c:\ dev \ cygwin \ bin)。 Meld自身へのパスを追加することもできます(ポイント7、c:\ dev \ meld \ meld-1.3.1)
pythonを実行し、Meld(c:\ dev \ meld \ meld-1.3.1 \ meld)へのパスをパラメーターとして指定すると、Meldウィンドウが開きます。 そうでなければ、私は封印されたか、あなたは何か間違ったことをしました。



ドーピング

  1. 起動に成功した後の最初の質問:「この黒いコンソールウィンドウは一体何なの?!」



    解決策は簡単です。pythonではなくpythonwを実行する必要があります。



  2. 次のポイント:ユーティリティウィンドウは、その位置と展開状態をフルスクリーン(そのフルスクリーンではなく、最大化)に保存しません。 おそらくこれは、おそらくWindowsマネージャーであるGTKの問題です。

    この動作を完全に修正できませんでした。



    ウィンドウの位置の保存は、座標を手動で保存することで実装できますが、 ウィンドウが表示される前にウィンドウを配置することはできませんが、表示が見苦しくなってからウィンドウを移動することはできませんでした。



    WINDOW_STATE_MAXIMIZED



    フラグの保存に制限するWINDOW_STATE_MAXIMIZED



    しました。 これは、 window_maximizedオプションをアプリケーション設定とwindow-state-eventシグナルハンドラーに追加することで実現されます。 最初に、ハンドラーを記述する必要があります。ファイルmeldapp.glade (c:\ dev \ meld \ meld-1.3.1 \ glade2 \ meldapp.glade)で<widget class="GtkWindow" id="meldapp">



    に行<signal name="window_state_event" handler="on_window_state_event"/>





      --- c:\ dev \ meld-base \ meld-1.3.1 \ glade2 \ meldapp.glade
     +++ c:\ dev \ meld \ meld-1.3.1 \ glade2 \ meldapp.glade
     @@ -7.6 +7.7 @@
          <property name = "title" translatable = "yes"> Meld </ property>
          <property name = "icon"> pixmaps / icon.png </ property>
          <信号名= "size_allocate"ハンドラー= "on_size_allocate" />
     + <signal name = "window_state_event" handler = "on_window_state_event" />
          <信号名= "delete_event"ハンドラー= "on_delete_event" />
              <子>
                <widget class = "GtkVBox" id = "appvbox">
    


    次に、ハンドラーを追加します: meldapp.pyファイル(c:\ dev \ meld \ meld-1.3.1 \ meldapp.py)にon_window_state_event



    メソッドを追加しon_window_state_event





      --- c:\ dev \ meld-base \ meld-1.3.1 \ meldapp.py
     +++ c:\ dev \ meld \ meld-1.3.1 \ meldapp.py
     @@ -615.6 +615.9 @@
              self.prefs.window_size_x = rect.width
              self.prefs.window_size_y = rect.height
    
     + def on_window_state_event(self、window、state):
     + self.prefs.window_maximized = bool(state.new_window_state&gtk.gdk.WINDOW_STATE_MAXIMIZED)
     +
          #
          #ツールバーとメニュー項目(ファイル)
          #
    


    デフォルト設定を追加します。

      --- c:\ dev \ meld-base \ meld-1.3.1 \ meldapp.py
     +++ c:\ dev \ meld \ meld-1.3.1 \ meldapp.py
     @@ -313.6 +313.7 @@
         デフォルト= {
              「window_size_x」:prefs.Value(prefs.INT、600)、
              「window_size_y」:prefs.Value(prefs.INT、600)、
     + "window_maximized":prefs.Value(prefs.BOOL、1)、
              「use_custom_font」:prefs.Value(prefs.BOOL、0)、
              「custom_font」:prefs.Value(prefs.STRING、「monospace、14」)、
              「tab_size」:prefs.Value(prefs.INT、4)、
    


    最後に、ウィンドウを表示する前に設定を適用します。

      --- c:\ dev \ meld-base \ meld-1.3.1 \ meldapp.py
     +++ c:\ dev \ meld \ meld-1.3.1 \ meldapp.py
     @@ -499.6 +500.8 @@
              self.scheduler.connect(「実行可能」、self.on_scheduler_runnable)
              self.widget.set_default_size(self.prefs.window_size_x、self.prefs.window_size_y)
              self.ui.ensure_update()
     + self.prefs.window_maximizedの場合:
     + self.widget.maximize()
              self.widget.show()
              self.widget.connect( 'focus_in_event'、self.on_focus_change)
              self.widget.connect( 'focus_out_event'、self.on_focus_change)
    


  3. ツールバーの表示スタイルなどの一部の設定は、GNOMEデスクトップ設定ファイルから取得され、そうでない場合はデフォルト設定が使用されます。 ツールバースタイルの場合、これはTOOLBAR_BOTH



    です。 アイコンと署名の表示。



    私自身は、 TOOLBAR_ICONS



    変更しTOOLBAR_ICONS





      --- c:\ dev \ meld-base \ meld-1.3.1 \ meldapp.py
     +++ c:\ dev \ meld \ meld-1.3.1 \ meldapp.py
     @@ -375.7 +376.7 @@
    
          def get_toolbar_style(self):
              hasattr(自己、「_ gconf」)でない場合:
     -gtk.TOOLBAR_​​BOTHを返す
     + gtk.TOOLBAR_​​ICONSを返す
              style = self._gconf.get_string( '/ desktop / gnome / interface / toolbar_style')または「両方」
              style = {"both":gtk.TOOLBAR_​​BOTH、 "text":gtk.TOOLBAR_​​TEXT、
                       「アイコン」:gtk.TOOLBAR_​​ICONS、「アイコン」:gtk.TOOLBAR_​​ICONS、
    


  4. LF(\ n)以外のハイフンでファイルを保存すると、おかしなことが起こります。 この場合、すべてのLFがファイル転送に置き換えられるため、CRLF(\ r \ n)はCRCRLFに変わり、次回保存されるときに再保存されます。



    おそらく問題はファイルの不正な解析にあります(Ubuntu Meldではこれは許可されません)が、これまでのところ、一部の転送を他の転送に置き換えるコードのセクションをコメントアウトすることで解決しました。

      --- c:\ dev \ meld-base \ meld-1.3.1 \ filediff.py
     +++ c:\ dev \ meld \ meld-1.3.1 \ filediff.py
     @@ -815.6 +815.7 @@
                 その他:
                      melddoc.RESULT_ERRORを返します
              text = buf.get_text(buf.get_start_iter()、buf.get_end_iter()、0)
     + "" "
              bufdata.newlinesの場合:
                 タイプ(bufdata.newlines)==タイプ( "")の場合:
                      if(bufdata.newlines)!= '\ n':
     @@ -832.6 +833.7 @@
                              k!= '\ n'の場合:
                                  text = text.replace( '\ n'、k)
                             破る
     + "" "
              bufdata.encodingの場合:
                 試してください:
                      text = text.encode(bufdata.encoding)
    


    さらに、同じコードは、1つの櫛の下ですべての転送を均等化します。



  5. GNOME Webサイトの指示に従ってインストールされたMeldでは、構文の強調表示、行番号の表示、タブの代わりのスペースの表示は使用できません。



    これを修正するために、gtksourceview-2.2.2ライブラリーをマニュアルに追加しました。 language.rnglanguage2.rng、およびstyles.rngファイルがありませんが、これらはgtksourceview-2.9.3のshare \ gtksourceview-2.0 \ language-specsフォルダーにあります。 それらは、gtksourceview-2.2.2の同様のものにコピーする必要があります。
現在、Meldは非常に適切に動作します。 使用できます。



誰かが上記を実践している場合、時々チェックしてください。更新があるかもしれません。



PS以前は、python、GTK、PyGTKとは取引がなかったので、どこかに率直なナンセンスを書いた場合は修正してください。



All Articles