CraftLaunch APIリファレンス

clnch_configmenu.py

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

Copyright © 2009 craftware. All rights reserved.