00001 import os
00002 import sys
00003
00004 import pyauto
00005
00006 import cterm
00007 from cterm.cterm_const import *
00008
00009 import clnch_widget
00010 import clnch_listwindow
00011 import clnch_msgbox
00012 import clnch_plane3x3
00013 import clnch_misc
00014 import clnch_ini
00015 import clnch_resource
00016 import clnch_colortable
00017 import clnch_statusbar
00018
00019
00020
00021 def _configFontName( main_window ):
00022 font_list = main_window.enumFonts()
00023
00024 current_font_name = unicode( clnch_ini.get( "FONT", "name", "" ), "utf8" )
00025
00026 try:
00027 initial_select = font_list.index(current_font_name)
00028 except:
00029 initial_select = 0
00030
00031 result = clnch_listwindow.popMenu( main_window, 40, 16, u"フォント", font_list, initial_select )
00032 if result<0 : return
00033
00034 clnch_ini.set( "FONT", "name", font_list[result].encode("utf8") )
00035
00036 main_window.updateFont()
00037
00038 def _configFontSize( main_window ):
00039
00040 size_list = range(6,33)
00041
00042 current_font_size = clnch_ini.getint( "FONT", "size", 12 )
00043
00044 try:
00045 initial_select = size_list.index(current_font_size)
00046 except:
00047 initial_select = 0
00048
00049 size_list = map( str, size_list )
00050
00051 result = clnch_listwindow.popMenu( main_window, 40, 16, u"フォントサイズ", size_list, initial_select )
00052 if result<0 : return
00053
00054 clnch_ini.set( "FONT", "size", size_list[result] )
00055
00056 main_window.updateFont()
00057
00058 def _configMinWidth( main_window ):
00059
00060 width_list = range(12,81)
00061
00062 min_width = clnch_ini.getint( "GEOMETRY", "min_width", 18 )
00063
00064 try:
00065 initial_select = width_list.index(min_width)
00066 except:
00067 initial_select = 0
00068
00069 width_list = map( str, width_list )
00070
00071 result = clnch_listwindow.popMenu( main_window, 40, 16, u"最小のウインドウサイズ", width_list, initial_select )
00072 if result<0 : return
00073
00074 clnch_ini.set( "GEOMETRY", "min_width", width_list[result] )
00075
00076 def _configMaxWidth( main_window ):
00077
00078 width_list = range(16,161)
00079
00080 max_width = clnch_ini.getint( "GEOMETRY", "max_width", 80 )
00081
00082 try:
00083 initial_select = width_list.index(max_width)
00084 except:
00085 initial_select = 0
00086
00087 width_list = map( str, width_list )
00088
00089 result = clnch_listwindow.popMenu( main_window, 40, 16, u"最大のウインドウサイズ", width_list, initial_select )
00090 if result<0 : return
00091
00092 clnch_ini.set( "GEOMETRY", "max_width", width_list[result] )
00093
00094 def _configPosition( main_window ):
00095
00096 result = clnch_msgbox.popMessageBox( main_window, clnch_msgbox.MSGBOX_TYPE_YESNO, u"ウインドウ位置の保存の確認", u"現在のウインドウ位置を保存しますか?" )
00097 if result!=clnch_msgbox.MSGBOX_RESULT_YES : return
00098
00099 rect = list( main_window.getWindowRect() )
00100
00101 monitor_info_list = pyauto.Window.getMonitorInfo()
00102
00103 for i in xrange(len(monitor_info_list)):
00104 monitor_info = monitor_info_list[i]
00105 if monitor_info[0][0] <= rect[0] < monitor_info[0][2] and monitor_info[0][1] <= rect[1] < monitor_info[0][3]:
00106 if rect[2]>monitor_info[0][2]:
00107 delta = rect[2]-monitor_info[0][2]
00108 rect[0] -= delta
00109 rect[2] -= delta
00110 if rect[3]>monitor_info[0][3]:
00111 delta = rect[3]-monitor_info[0][3]
00112 rect[1] -= delta
00113 rect[3] -= delta
00114 break
00115 else:
00116 left = monitor_info_list[0][0][0]
00117 top = monitor_info_list[0][0][1]
00118 rect = [ left, top, left+rect[2]-rect[0], top+rect[3]-rect[1] ]
00119
00120 for i in xrange(len(monitor_info_list)):
00121 monitor_info = monitor_info_list[i]
00122 if monitor_info[0][0] <= rect[0] < monitor_info[0][2] and monitor_info[0][1] <= rect[1] < monitor_info[0][3]:
00123
00124 clnch_ini.set( "GEOMETRY", "monitor", str(i) )
00125
00126 if rect[0]-monitor_info[0][0] <= monitor_info[0][2]-rect[2]:
00127
00128 clnch_ini.set( "GEOMETRY", "x", str(rect[0]-monitor_info[0][0]) )
00129 else:
00130
00131 clnch_ini.set( "GEOMETRY", "x", str(rect[2]-monitor_info[0][2]-1) )
00132
00133 if rect[1]-monitor_info[0][1] <= monitor_info[0][3]-rect[3]:
00134
00135 clnch_ini.set( "GEOMETRY", "y", str(rect[1]-monitor_info[0][1]) )
00136 else:
00137
00138 clnch_ini.set( "GEOMETRY", "y", str(rect[3]-monitor_info[0][3]-1) )
00139
00140 break
00141
00142 clnch_msgbox.popMessageBox( main_window, clnch_msgbox.MSGBOX_TYPE_OK, u"ウインドウ位置の保存完了", u"ウインドウ位置を保存しました。" )
00143
00144 def _configTopMost( main_window ):
00145
00146 items = []
00147
00148 items.append( ( u"通常", "0" ) )
00149 items.append( ( u"最前面", "1" ) )
00150 items.append( ( u"最前面のなかの最前面", "2" ) )
00151
00152 topmost = clnch_ini.get( "GEOMETRY", "topmost", "0" )
00153
00154 initial_select = 0
00155 for i in xrange(len(items)):
00156 if items[i][1]==topmost :
00157 initial_select = i
00158 break
00159
00160 result = clnch_listwindow.popMenu( main_window, 40, 16, u"ウインドウの最前面表示", items, initial_select )
00161 if result<0 : return
00162
00163 clnch_ini.set( "GEOMETRY", "topmost", items[result][1] )
00164 main_window.updateTopMost()
00165
00166 def _configDirectorySeparator( main_window ):
00167
00168 items = []
00169
00170 items.append( ( u"スラッシュ : / ", "slash" ) )
00171 items.append( ( u"バックスラッシュ : \\ ", "backslash" ) )
00172
00173 directory_separator = clnch_ini.get( "MISC", "directory_separator", "backslash" )
00174
00175 initial_select = 0
00176 for i in xrange(len(items)):
00177 if items[i][1]==directory_separator:
00178 initial_select = i
00179 break
00180
00181 result = clnch_listwindow.popMenu( main_window, 40, 16, u"ディレクトリ区切り文字", items, initial_select )
00182 if result<0 : return
00183
00184 clnch_ini.set( "MISC", "directory_separator", items[result][1] )
00185
00186 if items[result][1]=="slash":
00187 clnch_misc.use_slash = True
00188 else:
00189 clnch_misc.use_slash = False
00190
00191 def _configKeyMap( main_window ):
00192
00193 items = []
00194
00195 items.append( ( u"101キーボード", "101" ) )
00196 items.append( ( u"106キーボード", "106" ) )
00197
00198 default_keymap = clnch_ini.get( "MISC", "default_keymap", "106" )
00199
00200 initial_select = 0
00201 for i in xrange(len(items)):
00202 if items[i][1]==default_keymap:
00203 initial_select = i
00204 break
00205
00206 result = clnch_listwindow.popMenu( main_window, 40, 16, u"キー割り当て", items, initial_select )
00207 if result<0 : return
00208
00209 clnch_ini.set( "MISC", "default_keymap", items[result][1] )
00210
00211 main_window.configure()
00212
00213 def _configAutoComplete( main_window ):
00214
00215 items = []
00216
00217 items.append( ( u"自動補完しない", "0" ) )
00218 items.append( ( u"自動補完する", "1" ) )
00219
00220 auto_complete = clnch_ini.get( "MISC", "auto_complete", "1" )
00221
00222 initial_select = 0
00223 for i in xrange(len(items)):
00224 if items[i][1]==auto_complete:
00225 initial_select = i
00226 break
00227
00228 result = clnch_listwindow.popMenu( main_window, 40, 16, u"自動補完", items, initial_select )
00229 if result<0 : return
00230
00231 clnch_ini.set( "MISC", "auto_complete", items[result][1] )
00232
00233 def _configHotKey( main_window ):
00234
00235 RESULT_CANCEL = 0
00236 RESULT_OK = 1
00237
00238 class HotKeyWindow( cterm.Window ):
00239
00240 def __init__( self, x, y, parent_window, show=True ):
00241
00242 cterm.Window.__init__(
00243 self,
00244 x=x,
00245 y=y,
00246 width=29,
00247 height=2,
00248 origin= ORIGIN_X_CENTER | ORIGIN_Y_CENTER,
00249 parent_window=parent_window,
00250 show=show,
00251 bg_color = clnch_colortable.bg,
00252 resizable = False,
00253 title = u'ホットキー',
00254 minimizebox = False,
00255 maximizebox = False,
00256 cursor = True,
00257 close_handler = self.onClose,
00258 keydown_handler = self.onKeyDown,
00259 )
00260
00261 self.setCursorPos( -1, -1 )
00262
00263 self.result = RESULT_CANCEL
00264
00265 activate_vk = clnch_ini.getint( "HOTKEY", "activate_vk", 0 )
00266 activate_mod = clnch_ini.getint( "HOTKEY", "activate_mod", 0 )
00267
00268 self.activate_hotkey = clnch_widget.HotKeyWidget( self, 0, 0, self.width(), 1, activate_vk, activate_mod )
00269
00270 self.plane_statusbar = clnch_plane3x3.Plane3x3( self, os.path.join(os.path.split(sys.argv[0])[0],'skin/statusbar.png'), 2 )
00271 client_rect = self.getClientRect()
00272 tmp, statusbar_top = self.charToClient( 0, self.height()-1 )
00273 self.plane_statusbar.adjust( ( 0, statusbar_top, client_rect[2], client_rect[3] ) )
00274 self.status_bar = clnch_statusbar.StatusBar()
00275 self.status_bar_layer = clnch_statusbar.SimpleStatusBarLayer()
00276 self.status_bar.registerLayer(self.status_bar_layer)
00277
00278 self.updateStatusBar()
00279
00280 self.paint()
00281
00282 def onClose(self):
00283 self.result = RESULT_CANCEL
00284 self.quit()
00285
00286 def onEnter(self):
00287 self.result = RESULT_OK
00288 self.quit()
00289
00290 def onKeyDown( self, vk, mod ):
00291 if mod==0 and vk==VK_ESCAPE:
00292 self.result = RESULT_CANCEL
00293 self.quit()
00294 elif mod==0 and vk==VK_RETURN:
00295 self.result = RESULT_OK
00296 self.quit()
00297 else:
00298 self.activate_hotkey.onKeyDown( vk, mod )
00299
00300 def updateStatusBar(self):
00301 self.status_bar_layer.setMessage(u"Return:決定 Esc:キャンセル")
00302
00303 def paint(self):
00304 self.activate_hotkey.enableCursor(True)
00305 self.activate_hotkey.paint()
00306
00307 self.status_bar.paint( self, 0, self.height()-1, self.width(), 1 )
00308
00309 def getResult(self):
00310 if self.result:
00311 return [ self.activate_hotkey.getValue() ]
00312 else:
00313 return None
00314
00315
00316 pos = main_window.centerOfWindowInPixel()
00317 hotkey_window = HotKeyWindow( pos[0], pos[1], main_window, show=False )
00318 clnch_misc.adjustWindowPosition( main_window, hotkey_window, default_up=False )
00319 hotkey_window.show(True)
00320 main_window.enable(False)
00321 hotkey_window.messageLoop()
00322 result = hotkey_window.getResult()
00323 main_window.enable(True)
00324 main_window.activate()
00325 hotkey_window.destroy()
00326
00327 if result==None : return
00328
00329 clnch_ini.set( "HOTKEY", "activate_vk", str(result[0][0]) )
00330 clnch_ini.set( "HOTKEY", "activate_mod", str(result[0][1]) )
00331
00332 main_window.updateHotKey()
00333
00334 def _editConfigFile( main_window ):
00335 main_window.subThreadCall( clnch_misc.shellExecute, ( None, None, main_window.editor, main_window.config_filename, os.path.split(main_window.config_filename)[0] ) )
00336 return False
00337
00338 def _reloadConfigFile( main_window ):
00339 main_window.configure()
00340 print u"設定スクリプトをリロードしました.\n"
00341 return False
00342
00343 def _configColor( main_window ):
00344
00345 RESULT_CANCEL = 0
00346 RESULT_OK = 1
00347
00348 class ColorWindow( cterm.Window ):
00349
00350 FOCUS_BG_COLOR = 0
00351 FOCUS_FG_COLOR = 1
00352 FOCUS_BAR_FG_COLOR = 2
00353 FOCUS_BAR_ERROR_FG_COLOR = 3
00354 FOCUS_FILE_FG_COLOR = 4
00355 FOCUS_DIR_FG_COLOR = 5
00356 FOCUS_HIDDEN_FILE_FG_COLOR = 6
00357 FOCUS_HIDDEN_DIR_FG_COLOR = 7
00358 FOCUS_ERROR_FILE_FG_COLOR = 8
00359 FOCUS_SELECT_FILE_BG1_COLOR = 9
00360 FOCUS_SELECT_FILE_BG2_COLOR = 10
00361 FOCUS_FILE_CURSOR_COLOR = 11
00362 FOCUS_SELECT_BG_COLOR = 12
00363 FOCUS_CHOICE_BG_COLOR = 13
00364 FOCUS_EDIT_FG_COLOR = 14
00365 FOCUS_EDIT_SELECT_FG_COLOR = 15
00366 FOCUS_EDIT_SELECT_BG_COLOR = 16
00367 FOCUS_CANDLIST_FG_COLOR = 17
00368 FOCUS_CANDLIST_BG_COLOR = 18
00369 FOCUS_CANDLIST_SELECT_FG_COLOR = 19
00370 FOCUS_CANDLIST_SELECT_BG_COLOR = 20
00371 FOCUS_DIFF_BG1_COLOR = 21
00372 FOCUS_DIFF_BG2_COLOR = 22
00373 FOCUS_DIFF_BG3_COLOR = 23
00374 FOCUS_OK = 24
00375
00376 def __init__( self, x, y, parent_window, show=True ):
00377
00378 cterm.Window.__init__(
00379 self,
00380 x=x,
00381 y=y,
00382 width=30,
00383 height=30,
00384 origin= ORIGIN_X_CENTER | ORIGIN_Y_CENTER,
00385 parent_window=parent_window,
00386 show=show,
00387 bg_color = clnch_colortable.bg,
00388 resizable = False,
00389 title = u'色の設定',
00390 minimizebox = False,
00391 maximizebox = False,
00392 cursor = True,
00393 close_handler = self.onClose,
00394 keydown_handler = self.onKeyDown,
00395 )
00396
00397 self.setCursorPos( -1, -1 )
00398
00399 self.focus = ColorWindow.FOCUS_BG_COLOR
00400 self.result = RESULT_CANCEL
00401
00402 self.bg_color = clnch_widget.ColorWidget( self, 2, 1, self.width(), 1, u"背景", clnch_colortable.bg_setting.color )
00403 self.fg_color = clnch_widget.ColorWidget( self, 2, 2, self.width(), 1, u"文字", clnch_colortable.fg_setting.color )
00404 self.bar_fg_color = clnch_widget.ColorWidget( self, 2, 3, self.width(), 1, u"バー上の文字", clnch_colortable.bar_fg_setting.color )
00405 self.bar_error_fg_color = clnch_widget.ColorWidget( self, 2, 4, self.width(), 1, u"バー上のエラー文字", clnch_colortable.bar_error_fg_setting.color )
00406 self.file_fg_color = clnch_widget.ColorWidget( self, 2, 5, self.width(), 1, u"ファイル", clnch_colortable.file_fg_setting.color )
00407 self.dir_fg_color = clnch_widget.ColorWidget( self, 2, 6, self.width(), 1, u"ディレクトリ", clnch_colortable.dir_fg_setting.color )
00408 self.hidden_file_fg_color = clnch_widget.ColorWidget( self, 2, 7, self.width(), 1, u"隠しファイル", clnch_colortable.hidden_file_fg_setting.color )
00409 self.hidden_dir_fg_color = clnch_widget.ColorWidget( self, 2, 8, self.width(), 1, u"隠しディレクトリ", clnch_colortable.hidden_dir_fg_setting.color )
00410 self.error_file_fg_color = clnch_widget.ColorWidget( self, 2, 9, self.width(), 1, u"エラーファイル", clnch_colortable.error_file_fg_setting.color )
00411 self.select_file_bg1_color = clnch_widget.ColorWidget( self, 2, 10, self.width(), 1, u"ファイル選択背景(左)", clnch_colortable.select_file_bg1_setting.color )
00412 self.select_file_bg2_color = clnch_widget.ColorWidget( self, 2, 11, self.width(), 1, u"ファイル選択背景(右)", clnch_colortable.select_file_bg2_setting.color )
00413 self.file_cursor_color = clnch_widget.ColorWidget( self, 2, 14, self.width(), 1, u"ファイルカーソル", clnch_colortable.file_cursor_setting.color )
00414 self.select_bg_color = clnch_widget.ColorWidget( self, 2, 15, self.width(), 1, u"フォーカス背景", clnch_colortable.select_bg_setting.color )
00415 self.choice_bg_color = clnch_widget.ColorWidget( self, 2, 16, self.width(), 1, u"選択背景", clnch_colortable.choice_bg_setting.color )
00416 self.edit_fg_color = clnch_widget.ColorWidget( self, 2, 17, self.width(), 1, u"編集文字", clnch_colortable.edit_fg_setting.color )
00417 self.edit_select_fg_color = clnch_widget.ColorWidget( self, 2, 18, self.width(), 1, u"編集文字(選択状態)", clnch_colortable.edit_select_fg_setting.color )
00418 self.edit_select_bg_color = clnch_widget.ColorWidget( self, 2, 19, self.width(), 1, u"編集背景(選択状態)", clnch_colortable.edit_select_bg_setting.color )
00419 self.candlist_fg_color = clnch_widget.ColorWidget( self, 2, 20, self.width(), 1, u"補完候補文字", clnch_colortable.candlist_fg_setting.color )
00420 self.candlist_bg_color = clnch_widget.ColorWidget( self, 2, 21, self.width(), 1, u"補完候補背景", clnch_colortable.candlist_bg_setting.color )
00421 self.candlist_select_fg_color = clnch_widget.ColorWidget( self, 2, 22, self.width(), 1, u"補完候補文字(選択状態)", clnch_colortable.candlist_select_fg_setting.color )
00422 self.candlist_select_bg_color = clnch_widget.ColorWidget( self, 2, 23, self.width(), 1, u"補完候補背景(選択状態)", clnch_colortable.candlist_select_bg_setting.color )
00423 self.diff_bg1_color = clnch_widget.ColorWidget( self, 2, 24, self.width(), 1, u"テキスト差分背景1", clnch_colortable.diff_bg1_setting.color )
00424 self.diff_bg2_color = clnch_widget.ColorWidget( self, 2, 25, self.width(), 1, u"テキスト差分背景2", clnch_colortable.diff_bg2_setting.color )
00425 self.diff_bg3_color = clnch_widget.ColorWidget( self, 2, 26, self.width(), 1, u"テキスト差分背景3", clnch_colortable.diff_bg3_setting.color )
00426
00427 self.ok_button = clnch_widget.ButtonWidget( self, 12, 28, self.width(), 1, " OK " )
00428
00429 self.paint()
00430
00431 def onClose(self):
00432 self.result = RESULT_CANCEL
00433 self.quit()
00434
00435 def onEnter(self):
00436 clnch_colortable.bg_setting.color = self.bg_color.getValue()
00437 clnch_colortable.fg_setting.color = self.fg_color.getValue()
00438 clnch_colortable.bar_fg_setting.color = self.bar_fg_color.getValue()
00439 clnch_colortable.bar_error_fg_setting.color = self.bar_error_fg_color.getValue()
00440 clnch_colortable.file_fg_setting.color = self.file_fg_color.getValue()
00441 clnch_colortable.dir_fg_setting.color = self.dir_fg_color.getValue()
00442 clnch_colortable.hidden_file_fg_setting.color = self.hidden_file_fg_color.getValue()
00443 clnch_colortable.hidden_dir_fg_setting.color = self.hidden_dir_fg_color.getValue()
00444 clnch_colortable.error_file_fg_setting.color = self.error_file_fg_color.getValue()
00445 clnch_colortable.select_file_bg1_setting.color = self.select_file_bg1_color.getValue()
00446 clnch_colortable.select_file_bg2_setting.color = self.select_file_bg2_color.getValue()
00447 clnch_colortable.file_cursor_setting.color = self.file_cursor_color.getValue()
00448 clnch_colortable.select_bg_setting.color = self.select_bg_color.getValue()
00449 clnch_colortable.choice_bg_setting.color = self.choice_bg_color.getValue()
00450 clnch_colortable.edit_fg_setting.color = self.edit_fg_color.getValue()
00451 clnch_colortable.edit_select_fg_setting.color = self.edit_select_fg_color.getValue()
00452 clnch_colortable.edit_select_bg_setting.color = self.edit_select_bg_color.getValue()
00453 clnch_colortable.candlist_fg_setting.color = self.candlist_fg_color.getValue()
00454 clnch_colortable.candlist_bg_setting.color = self.candlist_bg_color.getValue()
00455 clnch_colortable.candlist_select_fg_setting.color = self.candlist_select_fg_color.getValue()
00456 clnch_colortable.candlist_select_bg_setting.color = self.candlist_select_bg_color.getValue()
00457 clnch_colortable.diff_bg1_setting.color = self.diff_bg1_color.getValue()
00458 clnch_colortable.diff_bg2_setting.color = self.diff_bg2_color.getValue()
00459 clnch_colortable.diff_bg3_setting.color = self.diff_bg3_color.getValue()
00460
00461 self.result = RESULT_OK
00462 self.quit()
00463
00464 def onKeyDown( self, vk, mod ):
00465
00466 if vk==VK_UP:
00467 if self.focus==ColorWindow.FOCUS_FG_COLOR:
00468 self.focus=ColorWindow.FOCUS_BG_COLOR
00469 elif self.focus==ColorWindow.FOCUS_BAR_FG_COLOR:
00470 self.focus=ColorWindow.FOCUS_FG_COLOR
00471 elif self.focus==ColorWindow.FOCUS_BAR_ERROR_FG_COLOR:
00472 self.focus=ColorWindow.FOCUS_BAR_FG_COLOR
00473 elif self.focus==ColorWindow.FOCUS_FILE_FG_COLOR:
00474 self.focus=ColorWindow.FOCUS_BAR_ERROR_FG_COLOR
00475 elif self.focus==ColorWindow.FOCUS_DIR_FG_COLOR:
00476 self.focus=ColorWindow.FOCUS_FILE_FG_COLOR
00477 elif self.focus==ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR:
00478 self.focus=ColorWindow.FOCUS_DIR_FG_COLOR
00479 elif self.focus==ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR:
00480 self.focus=ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR
00481 elif self.focus==ColorWindow.FOCUS_ERROR_FILE_FG_COLOR:
00482 self.focus=ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR
00483 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR:
00484 self.focus=ColorWindow.FOCUS_ERROR_FILE_FG_COLOR
00485 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR:
00486 self.focus=ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR
00487 elif self.focus==ColorWindow.FOCUS_FILE_CURSOR_COLOR:
00488 self.focus=ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR
00489 elif self.focus==ColorWindow.FOCUS_SELECT_BG_COLOR:
00490 self.focus=ColorWindow.FOCUS_FILE_CURSOR_COLOR
00491 elif self.focus==ColorWindow.FOCUS_CHOICE_BG_COLOR:
00492 self.focus=ColorWindow.FOCUS_SELECT_BG_COLOR
00493 elif self.focus==ColorWindow.FOCUS_EDIT_FG_COLOR:
00494 self.focus=ColorWindow.FOCUS_CHOICE_BG_COLOR
00495 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR:
00496 self.focus=ColorWindow.FOCUS_EDIT_FG_COLOR
00497 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR:
00498 self.focus=ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR
00499 elif self.focus==ColorWindow.FOCUS_CANDLIST_FG_COLOR:
00500 self.focus=ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR
00501 elif self.focus==ColorWindow.FOCUS_CANDLIST_BG_COLOR:
00502 self.focus=ColorWindow.FOCUS_CANDLIST_FG_COLOR
00503 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR:
00504 self.focus=ColorWindow.FOCUS_CANDLIST_BG_COLOR
00505 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR:
00506 self.focus=ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR
00507 elif self.focus==ColorWindow.FOCUS_DIFF_BG1_COLOR:
00508 self.focus=ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR
00509 elif self.focus==ColorWindow.FOCUS_DIFF_BG2_COLOR:
00510 self.focus=ColorWindow.FOCUS_DIFF_BG1_COLOR
00511 elif self.focus==ColorWindow.FOCUS_DIFF_BG3_COLOR:
00512 self.focus=ColorWindow.FOCUS_DIFF_BG2_COLOR
00513 elif self.focus==ColorWindow.FOCUS_OK:
00514 self.focus=ColorWindow.FOCUS_DIFF_BG3_COLOR
00515 self.paint()
00516
00517 elif vk==VK_DOWN:
00518 if self.focus==ColorWindow.FOCUS_BG_COLOR:
00519 self.focus=ColorWindow.FOCUS_FG_COLOR
00520 elif self.focus==ColorWindow.FOCUS_FG_COLOR:
00521 self.focus=ColorWindow.FOCUS_BAR_FG_COLOR
00522 elif self.focus==ColorWindow.FOCUS_BAR_FG_COLOR:
00523 self.focus=ColorWindow.FOCUS_BAR_ERROR_FG_COLOR
00524 elif self.focus==ColorWindow.FOCUS_BAR_ERROR_FG_COLOR:
00525 self.focus=ColorWindow.FOCUS_FILE_FG_COLOR
00526 elif self.focus==ColorWindow.FOCUS_FILE_FG_COLOR:
00527 self.focus=ColorWindow.FOCUS_DIR_FG_COLOR
00528 elif self.focus==ColorWindow.FOCUS_DIR_FG_COLOR:
00529 self.focus=ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR
00530 elif self.focus==ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR:
00531 self.focus=ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR
00532 elif self.focus==ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR:
00533 self.focus=ColorWindow.FOCUS_ERROR_FILE_FG_COLOR
00534 elif self.focus==ColorWindow.FOCUS_ERROR_FILE_FG_COLOR:
00535 self.focus=ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR
00536 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR:
00537 self.focus=ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR
00538 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR:
00539 self.focus=ColorWindow.FOCUS_FILE_CURSOR_COLOR
00540 elif self.focus==ColorWindow.FOCUS_FILE_CURSOR_COLOR:
00541 self.focus=ColorWindow.FOCUS_SELECT_BG_COLOR
00542 elif self.focus==ColorWindow.FOCUS_SELECT_BG_COLOR:
00543 self.focus=ColorWindow.FOCUS_CHOICE_BG_COLOR
00544 elif self.focus==ColorWindow.FOCUS_CHOICE_BG_COLOR:
00545 self.focus=ColorWindow.FOCUS_EDIT_FG_COLOR
00546 elif self.focus==ColorWindow.FOCUS_EDIT_FG_COLOR:
00547 self.focus=ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR
00548 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR:
00549 self.focus=ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR
00550 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR:
00551 self.focus=ColorWindow.FOCUS_CANDLIST_FG_COLOR
00552 elif self.focus==ColorWindow.FOCUS_CANDLIST_FG_COLOR:
00553 self.focus=ColorWindow.FOCUS_CANDLIST_BG_COLOR
00554 elif self.focus==ColorWindow.FOCUS_CANDLIST_BG_COLOR:
00555 self.focus=ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR
00556 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR:
00557 self.focus=ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR
00558 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR:
00559 self.focus=ColorWindow.FOCUS_DIFF_BG1_COLOR
00560 elif self.focus==ColorWindow.FOCUS_DIFF_BG1_COLOR:
00561 self.focus=ColorWindow.FOCUS_DIFF_BG2_COLOR
00562 elif self.focus==ColorWindow.FOCUS_DIFF_BG2_COLOR:
00563 self.focus=ColorWindow.FOCUS_DIFF_BG3_COLOR
00564 elif self.focus==ColorWindow.FOCUS_DIFF_BG3_COLOR:
00565 self.focus=ColorWindow.FOCUS_OK
00566 self.paint()
00567
00568 elif vk==VK_RETURN and self.focus==ColorWindow.FOCUS_OK:
00569 self.onEnter()
00570
00571 elif vk==VK_ESCAPE:
00572 self.result = RESULT_CANCEL
00573 self.quit()
00574
00575 else:
00576 if self.focus==ColorWindow.FOCUS_BG_COLOR: self.bg_color.onKeyDown( vk, mod )
00577 elif self.focus==ColorWindow.FOCUS_FG_COLOR: self.fg_color.onKeyDown( vk, mod )
00578 elif self.focus==ColorWindow.FOCUS_BAR_FG_COLOR: self.bar_fg_color.onKeyDown( vk, mod )
00579 elif self.focus==ColorWindow.FOCUS_BAR_ERROR_FG_COLOR: self.bar_error_fg_color.onKeyDown( vk, mod )
00580 elif self.focus==ColorWindow.FOCUS_FILE_FG_COLOR: self.file_fg_color.onKeyDown( vk, mod )
00581 elif self.focus==ColorWindow.FOCUS_DIR_FG_COLOR: self.dir_fg_color.onKeyDown( vk, mod )
00582 elif self.focus==ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR: self.hidden_file_fg_color.onKeyDown( vk, mod )
00583 elif self.focus==ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR: self.hidden_dir_fg_color.onKeyDown( vk, mod )
00584 elif self.focus==ColorWindow.FOCUS_ERROR_FILE_FG_COLOR: self.error_file_fg_color.onKeyDown( vk, mod )
00585 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR: self.select_file_bg1_color.onKeyDown( vk, mod )
00586 elif self.focus==ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR: self.select_file_bg2_color.onKeyDown( vk, mod )
00587 elif self.focus==ColorWindow.FOCUS_FILE_CURSOR_COLOR: self.file_cursor_color.onKeyDown( vk, mod )
00588 elif self.focus==ColorWindow.FOCUS_SELECT_BG_COLOR: self.select_bg_color.onKeyDown( vk, mod )
00589 elif self.focus==ColorWindow.FOCUS_CHOICE_BG_COLOR: self.choice_bg_color.onKeyDown( vk, mod )
00590 elif self.focus==ColorWindow.FOCUS_EDIT_FG_COLOR: self.edit_fg_color.onKeyDown( vk, mod )
00591 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR: self.edit_select_fg_color.onKeyDown( vk, mod )
00592 elif self.focus==ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR: self.edit_select_bg_color.onKeyDown( vk, mod )
00593 elif self.focus==ColorWindow.FOCUS_CANDLIST_FG_COLOR: self.candlist_fg_color.onKeyDown( vk, mod )
00594 elif self.focus==ColorWindow.FOCUS_CANDLIST_BG_COLOR: self.candlist_bg_color.onKeyDown( vk, mod )
00595 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR: self.candlist_select_fg_color.onKeyDown( vk, mod )
00596 elif self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR: self.candlist_select_bg_color.onKeyDown( vk, mod )
00597 elif self.focus==ColorWindow.FOCUS_DIFF_BG1_COLOR: self.diff_bg1_color.onKeyDown( vk, mod )
00598 elif self.focus==ColorWindow.FOCUS_DIFF_BG2_COLOR: self.diff_bg2_color.onKeyDown( vk, mod )
00599 elif self.focus==ColorWindow.FOCUS_DIFF_BG3_COLOR: self.diff_bg3_color.onKeyDown( vk, mod )
00600 elif self.focus==ColorWindow.FOCUS_OK: self.ok_button.onKeyDown( vk, mod )
00601
00602 def paint(self):
00603 self.bg_color.enableCursor(self.focus==ColorWindow.FOCUS_BG_COLOR)
00604 self.bg_color.paint()
00605
00606 self.fg_color.enableCursor(self.focus==ColorWindow.FOCUS_FG_COLOR)
00607 self.fg_color.paint()
00608
00609 self.bar_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_BAR_FG_COLOR)
00610 self.bar_fg_color.paint()
00611
00612 self.bar_error_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_BAR_ERROR_FG_COLOR)
00613 self.bar_error_fg_color.paint()
00614
00615 self.file_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_FILE_FG_COLOR)
00616 self.file_fg_color.paint()
00617
00618 self.dir_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_DIR_FG_COLOR)
00619 self.dir_fg_color.paint()
00620
00621 self.hidden_file_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_HIDDEN_FILE_FG_COLOR)
00622 self.hidden_file_fg_color.paint()
00623
00624 self.hidden_dir_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_HIDDEN_DIR_FG_COLOR)
00625 self.hidden_dir_fg_color.paint()
00626
00627 self.error_file_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_ERROR_FILE_FG_COLOR)
00628 self.error_file_fg_color.paint()
00629
00630 self.select_file_bg1_color.enableCursor(self.focus==ColorWindow.FOCUS_SELECT_FILE_BG1_COLOR)
00631 self.select_file_bg1_color.paint()
00632
00633 self.select_file_bg2_color.enableCursor(self.focus==ColorWindow.FOCUS_SELECT_FILE_BG2_COLOR)
00634 self.select_file_bg2_color.paint()
00635
00636 self.file_cursor_color.enableCursor(self.focus==ColorWindow.FOCUS_FILE_CURSOR_COLOR)
00637 self.file_cursor_color.paint()
00638
00639 self.select_bg_color.enableCursor(self.focus==ColorWindow.FOCUS_SELECT_BG_COLOR)
00640 self.select_bg_color.paint()
00641
00642 self.choice_bg_color.enableCursor(self.focus==ColorWindow.FOCUS_CHOICE_BG_COLOR)
00643 self.choice_bg_color.paint()
00644
00645 self.edit_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_EDIT_FG_COLOR)
00646 self.edit_fg_color.paint()
00647
00648 self.edit_select_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_EDIT_SELECT_FG_COLOR)
00649 self.edit_select_fg_color.paint()
00650
00651 self.edit_select_bg_color.enableCursor(self.focus==ColorWindow.FOCUS_EDIT_SELECT_BG_COLOR)
00652 self.edit_select_bg_color.paint()
00653
00654 self.candlist_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_CANDLIST_FG_COLOR)
00655 self.candlist_fg_color.paint()
00656
00657 self.candlist_bg_color.enableCursor(self.focus==ColorWindow.FOCUS_CANDLIST_BG_COLOR)
00658 self.candlist_bg_color.paint()
00659
00660 self.candlist_select_fg_color.enableCursor(self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_FG_COLOR)
00661 self.candlist_select_fg_color.paint()
00662
00663 self.candlist_select_bg_color.enableCursor(self.focus==ColorWindow.FOCUS_CANDLIST_SELECT_BG_COLOR)
00664 self.candlist_select_bg_color.paint()
00665
00666 self.diff_bg1_color.enableCursor(self.focus==ColorWindow.FOCUS_DIFF_BG1_COLOR)
00667 self.diff_bg1_color.paint()
00668
00669 self.diff_bg2_color.enableCursor(self.focus==ColorWindow.FOCUS_DIFF_BG2_COLOR)
00670 self.diff_bg2_color.paint()
00671
00672 self.diff_bg3_color.enableCursor(self.focus==ColorWindow.FOCUS_DIFF_BG3_COLOR)
00673 self.diff_bg3_color.paint()
00674
00675 self.ok_button.enableCursor(self.focus==ColorWindow.FOCUS_OK)
00676 self.ok_button.paint()
00677
00678 def getResult(self):
00679 return self.result
00680
00681 pos = main_window.centerOfWindowInPixel()
00682 color_window = ColorWindow( pos[0], pos[1], main_window, show=False )
00683 clnch_misc.adjustWindowPosition( main_window, color_window, default_up=False )
00684 color_window.show(True)
00685 main_window.enable(False)
00686 color_window.messageLoop()
00687 result = color_window.getResult()
00688 main_window.enable(True)
00689 main_window.activate()
00690 color_window.destroy()
00691
00692 if result==None : return
00693
00694 clnch_colortable.saveSetting()
00695
00696 main_window.updateColor()
00697
00698 def _configAppearance( main_window ):
00699
00700 select = 0
00701
00702 while True:
00703
00704 items = []
00705
00706 items.append( ( u"フォント名選択", _configFontName ) )
00707 items.append( ( u"フォントサイズ選択", _configFontSize ) )
00708 items.append( ( u"最小の横幅", _configMinWidth ) )
00709 items.append( ( u"最大の横幅", _configMaxWidth ) )
00710 items.append( ( u"表示位置の保存", _configPosition ) )
00711 items.append( ( u"色の設定", _configColor ) )
00712 items.append( ( u"最前面に表示", _configTopMost ) )
00713 items.append( ( u"ディレクトリ区切り文字", _configDirectorySeparator ) )
00714
00715 select = clnch_listwindow.popMenu( main_window, 40, 16, u"表示オプション", items, select )
00716 if select<0 : return
00717
00718 items[select][1]( main_window )
00719
00720 def _configInput( main_window ):
00721
00722 select = 0
00723
00724 while True:
00725
00726 items = []
00727
00728 items.append( ( u"キー割り当て", _configKeyMap ) )
00729 items.append( ( u"自動補完", _configAutoComplete ) )
00730
00731 select = clnch_listwindow.popMenu( main_window, 40, 16, u"入力オプション", items, select )
00732 if select<0 : return
00733
00734 items[select][1]( main_window )
00735
00736 def _configInactive( main_window ):
00737
00738 items = []
00739
00740 items.append( ( u"淡い表示", "washy" ) )
00741 items.append( ( u"空欄", "empty" ) )
00742 items.append( ( u"時計", "clock" ) )
00743 items.append( ( u"非表示", "hide" ) )
00744
00745 inactive_behavior = clnch_ini.get( "MISC", "inactive_behavior", "washy" )
00746
00747 initial_select = 0
00748 for i in xrange(len(items)):
00749 if items[i][1]==inactive_behavior :
00750 initial_select = i
00751 break
00752
00753 result = clnch_listwindow.popMenu( main_window, 40, 16, u"非アクティブ時の動作", items, initial_select )
00754 if result<0 : return
00755
00756 clnch_ini.set( "MISC", "inactive_behavior", items[result][1] )
00757 main_window.updateInactiveBehavior()
00758
00759 def doConfigMenu( main_window ):
00760
00761 select = 0
00762
00763 while True:
00764
00765 items = []
00766
00767 items.append( ( u"表示オプション", _configAppearance ) )
00768 items.append( ( u"入力オプション", _configInput ) )
00769 items.append( ( u"ホットキー設定", _configHotKey ) )
00770 items.append( ( u"非アクティブ時の動作", _configInactive ) )
00771 items.append( ( u"config.py を編集", _editConfigFile ) )
00772 items.append( ( u"config.py をリロード", _reloadConfigFile ) )
00773
00774 select = clnch_listwindow.popMenu( main_window, 40, 16, u"設定メニュー", items, select )
00775 if select<0 : return
00776
00777 loop_continue = items[select][1]( main_window )
00778 if loop_continue==False:
00779 return