Files
AI_NovelGenerator/ui/__pycache__/role_library.cpython-312.pyc
T

300 lines
80 KiB
Plaintext
Raw Normal View History

2025-09-08 11:58:44 +08:00
Ë
.¾hpÿãóœddlZddlZddlmZddlZddlZddlZddlmZm Z ddlm
Z
m Z m Z ddl
mZmZddlmZddlmZdZGd „d
«Zy) éN)Ú
filedialog)Ú
messageboxÚ
BooleanVar)ÚCTkScrollableFrameÚ
CTkTextboxÚEND)Ú read_fileÚsave_string_to_txt)Úinvoke_with_cleaning)ÚCharacter_Import_Prompt©zMicrosoft YaHeié cóòeZdZdZdZdZdZdZdZdZ dZ
d „Z d
Z d Z
d Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d „Z"d!„Z#d(d"„Z$d#„Z%d$„Z&d%„Z'd&„Z(y'))Ú RoleLibrarycóŒ|_tjj|d«_d_g_g_|_tj|«_ jjd«jjd«jjdj«j!«j#«j%«jj'«jj)dd«jj+dˆfd«y) Nu 角色库u角色库管ç†Ú1200x800ÚWM_DELETE_WINDOWú-topmostééÈcó<jjdd«S©Nrr©ÚwindowÚ
attributes©Úselfs€ú8E:\.repository\AI_NovelGenerator-main\ui\role_library.pyú<lambda>z&RoleLibrary.__init__.<locals>.<lambda>(sø€ t§{¡{×'=Ñ'=¸jÈ!Ô'Ló)ÚmasterÚosÚpathÚjoinÚ save_pathÚselected_categoryÚ
current_rolesÚ selected_delÚ llm_adapterÚctkÚ CTkToplevelrÚtitleÚgeometryÚprotocolÚon_closeÚcreate_library_structureÚ create_uiÚ
center_windowÚgrab_setrÚafter)rr!r%r)s` rÚ__init__zRoleLibrary.__init__ø€ØˆŒ ÜŸŸ i°ÓŒØ!%ˆÔØˆÔØˆÔØÔô—o‘o fÓŒ Ø ×ÑÐ ×јZÔ ×Ñз±Ô
× Ôà ×ÑÔà ×ÑÔØ ×јz¨1Ô ×ј#ÓMr cóÈtj|jd¬«tjj |jd«}tj|d¬«y)u创建必è¦çš„目录结构T©Úexist_okõ全部N)r"Úmakedirsr%r#r$)rÚall_dirs rr0z$RoleLibrary.create_library_structure*s:ä
D—NN¨TÕ—''—,,˜tŸ~™~¨xÓ8ˆÜ
G +r có`
j«tjj«}|j dddd¬«tj|d¬«}|j dddd¬ «tj|«}|j ddd
¬ «tj
|«_j j dd¬ «tj|«}|j ddd
¬ «tj|dd¬«_tj|jj¬«}jj|j¬«jj ddd¬«|j dd¬«tj|«}|j ddddd¬«tj|«}|j ddd¬«tj|dt¬«j dd
¬«tj|j!«dt¬«_j"j dd¬«tj$|d d!‰j&t¬"«_j(j dd
¬«tj$|d#d!ˆfd$„t¬"«j dd¬«tj|«}|j ddd¬«tj|d%t¬«j dd
¬«t+j,«_tj0|j.d%dt¬&«_j2j dd¬«tj$|d'd(‰j4t¬"«j dd
¬«tj$|d)d(ˆfd*„t¬"«j dd¬«tj
|«_j6j dddd¬«j6j9d+d+¬,«tj|«} | j ddd¬«tj$| d-‰j:t¬.«j dd¬«tj$| d/‰j<t¬.«j dd¬«tj$| d0‰j>t¬.«j dd¬«y1)2u创建主界é¢ÚbothTé
©ÚfillÚexpandÚpadxÚpadyé,)ÚwidthÚlefté)Úsider@rBrC©rrG©r@rArC©r@rA©rGrÚwordr
©ÚwrapÚfont)Úcommand)Úyscrollcommand)rHr@rAÚrightÚy)rHr@)rHr@rArBrCÚr@rBrCu 分类选择©ÚtextrP©rHrBr)ÚvaluesrErPru ä¿å­˜åˆ†ç±»éP©rXrErQrPu打开文件夹có®tjtjjjj
j
«««S©N)r"Ú startfiler#r$r%Úcategory_comboboxÚgetrs€rrz'RoleLibrary.create_ui.<locals>.<lambda>ts4ø€œBŸL™LÜ ˜TŸ^™^¨T×-CÑ-C×-GÑ-GÓ-IÓLr u 角色åç§°)Ú textvariableÚplaceholder_textrErPu修改é<õ新增có&jd«S©Nr9)Ú_create_new_rolers€rrz'RoleLibrary.create_ui.<locals>.<lambda>sø€˜D×1°(Ô;r r©Úweightu 导入角色©rXrQrPõ删除uä¿å­˜N) Úcreate_category_barr*ÚCTkFramerÚpackrÚrole_list_framerÚ preview_textÚ CTkScrollbarÚyviewÚ configureÚsetÚCTkLabelÚ DEFAULT_FONTÚ CTkComboBoxÚ_get_all_categoriesr`Ú CTkButtonÚ_move_to_categoryÚsave_category_btnÚtkÚ StringVarÚ
role_name_varÚCTkEntryÚrole_name_entryÚ_rename_role_fileÚattributes_frameÚgrid_columnconfigureÚ import_rolesÚdelete_current_roleÚsave_current_role)
rÚ
main_frameÚ
left_panelÚrole_list_containerÚpreview_containerÚ scrollbarÚ right_panelÚcategory_frameÚ
name_frameÚ button_frames
` rr1zRoleLibrary.create_ui0sdø€ð
× Ñ Ô—\\ $§+¡+Ó.ˆ
ؘV¨D°rÀˆÔ—\‘\ *°CÔ
ؘV¨&°q¸qˆÔ"Ÿl™l¨:ÓØ× Ñ  f°TÀÐ Ô"×5Ð6IÓJˆÔØ ×Ñ×! v°dÐ ŸL™L¨ÓØ×Ñ F°4¸fÐÔŸN™NÐ+<À6Ø1HôJˆÔä×  t×'8Ñ'8×'>Ñ'>ô@ˆ à ×Ñ×#°9·=±=Ð ×Ñ×Ñ F°ÀÐÔ˜G¨#ˆÔ—l‘l :Ó Ø×јg¨F¸4ÀaÈaÐÔŸ kÓØ×Ñ ¨1°1ÐÔ ^¨.¼|ÔL×QÐW]ÐdjÐ"%§¡Ø Ø×Üô "
ˆÔð
×Ñ×°aÐ"%§¡Ø ØØØ×ô "
ˆÔð
×Ñ×°fÐ
Ø ØóLäô

÷ ‰$F ˆ
—\\ .ˆ
ؘS q¨qˆÔ Z n¼<ÔH×MÐSYÐ`fП\™\^ˆÔÜ"Ÿ|™|Ø Ø×Üô 
ˆÔð
×Ñ×! v°AÐ
Ø ØØØ×ô 
÷ ‰$F ˆ

Ø ØØÛô 
÷ ‰$F ˆ
!$× 6Ñ 6°{Ó CˆÔØ ×Ñ×°tÀ!È!Ð ×Ñ×2°1¸QЗ|‘| KÓ Ø×јs¨°ÐÔ
Ø"×/´ DßDHÁDÈfÐ[\ÀDÔD]Ü
Ø"×6¼\ô KßKOÉ4ÐU[ÐbcÈ4ÔKdÜ
Ø"×4¼<ô IßIMÉÐSYÐ`aÈÕIbr códg}tj|j«D]a}tjj tjj |j|««sŒK|dk7sŒQ|j
|«Œc|S)u0èŽ·å–æ‰€æœ‰æœ‰æ•ˆåˆ†ç±»ï¼ˆåŒ…æ‹¬åŠ¨æ€æ›´æ–°ï¼‰r9)r"Úlistdirr%r#Úisdirr$Úappend)rÚ
categoriesÚds rryzRoleLibrary._get_all_categoriesªs_àZˆ
ܘDŸN™NÖ+ˆAÜw‰w}‰}œRŸW™WŸ\™\¨$¯.©.¸=À!ÀxÃ-Ø×! Ðr có† ‡ —td«r js#tjddj¬«yj
j
«}jdk(r;d}tjj«D]]}tjjj|jd«}tjj|«sŒ[|}n|stjdd ‰jd
j¬«Š ‰jjd d «‰ jd d «jj!d
ˆ ˆfd«ytjjj|jd«}nBtjjjjjd«}|dk(r9tjjjdjd«}n8tjjj|jd«}tjj|«rqtj"ddj¬«Š ‰jjd d «‰ jd d «jj!d
ˆ ˆfd«ytj$ddjd|dj¬«}|sy tj&tjj)|«d¬« t+j,||«|dk7r|nd_j/j«j
j1|«tj"ddj¬«y#t2$r,}j
j1j«|d}~wwxYw#t2$r«}tjddt5|«j¬«Š ‰jjd d «‰ jd d «jj!d
ˆ ˆfd«j
j1j«Yd}~yd}~wwxYw)uåˆ†ç±»è½¬ç§»åŠŸèƒ½Ú current_roleõ警告u请先选择一个角色©ÚparentNr9ú.txtõ错误õ找ä¸åˆ°è§’色 õ 的实际存储ä½ç½®rrrcó`jjdd«jdd«gSrr©Úmsgrs€€rrz/RoleLibrary._move_to_category.<locals>.<lambda>És,ø€°· ± ×0FÑ0FÀzÐSTÓ0UÐWZ×WeÑWeÐfpÐrsÓWtÑ/ur õæç¤ºu角色已在目标分类中có`jjdd«jdd«gSrrs€€rrz/RoleLibrary._move_to_category.<locals>.<lambda>ßó+ø€¨D¯K©K×,BÑ,BÀ:ÈqÓ,QÐSV×SaÑSaÐblÐnoÓSpÑ+qr õ确认u确定è¦å°†è§’色 u 移动到 u
分类å—?Tr7õæˆåŠŸu分类已更新u分类转移失败:có`jjdd«jdd«gSrrs€€rrz/RoleLibrary._move_to_category.<locals>.<lambda>r )Úhasattrr˜rÚ showwarningrr`rar&r"rr%r#r$ÚexistsÚ showerrorrr4ÚshowinfoÚaskyesnor:ÚdirnameÚshutilÚmoveÚ
show_categoryruÚ ExceptionÚstr)
rÚ new_categoryÚactual_categoryÚcategoryÚ test_pathÚold_pathÚnew_pathÚconfirmÚer¢s
` @rr{zRoleLibrary._move_to_category²ù€ät˜,°D×4EÒ4EÜ × " 8Ð-GÐPT×P[ÑP[Õ à× ð × !  "ˆŸJ™J t§~¡~Ö6ÜŸG™GŸL™LØ—NN ×1BÑ1BÐ0CÀ4Ð.HóJ ä—77—>> ,Ø&.ð  ×*¨8Ð7GÈ×HYÑHYÐGZÐZpÐ5qÐz~÷{Fñ{FôGØ ×& z°1Ô˜z¨1Ô ×! #Ô'uÔä—ww—| °D×4EÑ4EÐ3FÀdÐ1KóM‰Hô—w‘w—|‘|Ø × 6Ñ 6¸4×;LÑ;LÐ:MÈTÐ8RóTˆ ˜8Ò —w‘w—|‘|Ø ¨T×->Ñ->Ð,?¸tÐ*DóF‰Hô—w‘w—|‘|Ø  °×1BÑ1BÐ0CÀ4Ð.HóJˆ 7‰7>‰>˜ ×% hÐ0MÐVZ×VaÑVaÔbˆ K‰K× " :¨qÔ N‰N˜:  K‰K× Ñ ˜cÔ#qÔ ä× Ð+¨D×,=Ñ,=Ð+>¸kÈ,ÈÐWdÐeÐnr×nyÑnyô{ˆáØ ð K‰KœŸŸ¨Ó1¸DÕ 
ä ˜H hÔ:FÈÒ9Q©ÐW_Ô×" 4×#9Ñ#9Ô×&×*¨<Ô×# HÐ.?ÈÏ É Õøäò
à×&×*¨4×+AÑ+AÔûð
ûôò×& xÐ3HÌÈQËÈÐ1QÐZ^×ZeÑZeÔfˆ K‰K× " :¨qÔ N‰N˜:  K‰K× Ñ ˜cÔ#qÔ × "× & t×'=Ñ'=× >ûð  ?ús8Ì"4P ÍA<OÏ P Ï'PÐP Ð P Ð SÐB!R;Ò;Scó|‡ ‡
tjj«Š ‰ jd«‰ j d«‰ j j«‰ j
«‰ j«‰ j«‰ j«}‰ j«}jj«jj«|z
dzz}jj«jj«|z
dzz}‰ j d|d|«tj‰ «}|jdddd¬«tj|«}|jddd ¬
«|jd d ¬
«|jd d ¬
«tj|«Š
j!d d ddd¬«
j#d d ¬
«
jd d ¬
«
j%d«tj|«Š j!d d ddd¬« j#d d ¬
« jd d ¬
«tj& dt(¬«}|j!d d ddd¬«|j+d¬«g_tj|«}|jdd ¬«tj.|ddˆ ˆfdt(¬«jdd¬«tj.|d d!ˆ
ˆ ˆfd"„t(¬«jdd¬«tj.|d#d$ˆ ˆfd%„t(¬«jd&d¬«tj.|d'd!ˆ ˆfd(„t(¬«jd&d¬«|j#d d ¬
«y))*u导入角色窗å£u 角色导入Ú800x600éú+r=Tr>r?)rr>rJrrriÚnsewrIrG©ÚrowÚcolumnÚstickyrBrCFrLrMrNÚnormal©ÚstaterU©r@rCu导入临时角色库éxcó&j«Sr^)Úconfirm_import)Ú
import_windowrs€€rrz*RoleLibrary.import_roles.<locals>.<lambda><sø€˜D×
Ô>r r\rFrYu åˆ†æžæ–‡ä»¶édcó(j«Sr^)Úanalyze_character_state)r‰rrs€€€rrz*RoleLibrary.import_roles.<locals>.<lambda>Esø€˜D×ÀjÔQr u加载character_state.txté có&j«Sr^)Úload_default_character_state©rrs€€rrz*RoleLibrary.import_roles.<locals>.<lambda>Nsø€˜D×=¸Jr rSu从文件导入có&j«Sr^)Úimport_from_filerÔs€€rrz*RoleLibrary.import_roles.<locals>.<lambda>Wsø€˜D×1°+Ô>r N)r*r+rr,r-Ú transientr3ÚliftÚupdate_idletasksÚ winfo_widthÚ winfo_heightÚwinfo_xÚwinfo_yrnror„ÚgridÚgrid_rowconfigureÚgrid_propagaterrwrtÚimport_roles_listrz) rÚi_widthÚi_heightrUrTrˆÚ
content_frameÚtext_boxÚ btn_framerÍr‰rs ` @@@rr…zRoleLibrary.import_rolessAû€äŸ¨¯ © Ó
Ø×јNÔ×јyÔ×Ñ § ¡ Ô×ÑÔ Ø×ÑÔð ×ר ר K‰K× Ñ Ó ! T§[¡[×%<Ñ%<Ó%>ÀÑ%HÈQÑ$NÑ NˆØ K‰K× Ñ Ó ! T§[¡[×%=Ñ%=Ó%?À(Ñ%JÈqÑ$PÑ PˆØ×Ñ  1 # Q q c˜—\\ 0ˆ
ؘV¨D°rÀˆÔŸ  ZÓ
Ø×Ñ ¨t¸'ÐÔ×*¨1°QÐ×*¨1°QЗ\‘\ 
ؘA a°¸VÈ!ˆÔ×$ Q¨qÐ×°!Ð×! —l‘l =Ó Ø×јQ q°¸fÈ1ÐÔ×% a°Ð×°1З>> +°FÄÔNˆØ
˜! A¨f¸1À1ˆ
Ô×Ñ ÐÔ"$ˆÔô—LL Ó,ˆ ؘC gˆÔ
Ø ØÜô 
÷ ‰$F ˆ

Ø ØØÝô 
÷ ‰$F ˆ

Ø ØÜô 
÷ ‰$G "ˆ

Ø ØÜô 
÷ ‰$G "ˆ
 ×°!Ð4r có>d}|j«D]>}t|tj«sŒ|j dd«j «}n|s#t
jdd|j¬«y tjj|jd«}tjj|«rotj|«D]W}tjj||«} tjj|«rtj |«ŒYtj&|d ¬ «t(d
|d} t+|j,| «}
|j/|
«} | s#t
jdd|j¬«y|j1|| «y#t"$r}t%d |d
|«Yd}~Œûd}~wwxYw#t"$r8}t
j2ddt5|«|j¬«Yd}~yd}~wwxYw)uQ分æžè§’è‰²çŠ¶æ€æ–‡ä»¶ï¼Œä½¿ç”¨LLMæå–角色信æ¯å¹¶ä¿å­˜åˆ°ä¸´æ—¶è§’色库Úú1.0Úendr™u未找到å¯åˆ†æžçš„内容rš临时角色库u 删除文件u 时出错: Tr7u!
<<待分æžå°è¯´æ–‡æœ¬å¼€å§‹>>
u
<<待分æžå°è¯´æ–‡æœ¬ç»“æŸ>>u未解æžåˆ°æœ‰æ•ˆè§’色信æ¯u 分æžå¤±è´¥uLLM分æžå‡ºé”™ï¼š)Úwinfo_childrenÚ
isinstancer*rraÚstriprrr"r#r$r%rÚisfileÚunlinkr³Úprintr:r r r)Ú_parse_llm_responseÚ_display_analyzed_rolesr¬r´) rrr‰ÚcontentÚwidgetÚ
target_dirÚfilenameÚ file_pathr¼ÚpromptÚresponseÚroless rz#RoleLibrary.analyze_character_state^àˆØ!×2ˆFܘ&¤#§.¡.Õ Ÿ*™* U¨EÓ:Ùð
Ü × " 8Ð-JÐSW×S^ÑS^Õ ð d䟟 d§n¡nÐ6GÓHˆJäw‰w~‰~˜)Ü "§
¡
¨:Ö 6HÜ "§¡§ ¡ ¨Z¸Ó BHÜŸ7™7Ÿ>™>¨)ÔŸI™I 0øð !7ô
K‰K˜
¨TÕ 0Ð0SÐT[ÐS\Ð\}Ð~ˆFÜ× Ñ ØóˆHð ×,¨XÓ6ˆÜ×& xÐ1QÐZ^×ZeÑZeÕð
× °UÕ ;øô'HÜ  ¨Y¨K°{À1À#ÐGûðHûô*ò dÜ × Ñ  Ð3EÄcÈ!ÃfÀXÐ1NÐW[×WbÑWb× cûð dúsJÁ:BGÃ<4F4Ä0A0GÆ!GÆ4 GÆ=GÇGÇGÇGÇ HÇ$.HÈHc
óð|j«D]}|j«Œtj|«}|j dd¬«i_t
j|«D]z}|jd«sŒt jj|«d}t jj||«}j|«}tj|«} | j ddd¬ «td¬
«}
tj| d |
d t ¬
«} | j dd¬«tj"| |d¬«} | j dd¬«|j%«D
cgc]\}
}|
dt'|«dŒ}}
}tj"| dj|«dd¬«}|j dd¬«|
||dœdœj
|<Œ}tj|«}|j dd¬«tj(|dˆfdt ¬«j d¬«tj(|d ˆfd!„t ¬«j d¬«y"cc}}
w)#u!显示临时角色库中的角色r=TrKrrUr¿rG©r@rCrB©Úvaluerèé©rXÚvariablerErPrFrYr
rWú | Úgray©rXrPÚ
text_colorrSr>©Únamer©ÚvarÚdatarÉõ全选có&jd«S©NT©Ú _toggle_allrs€rrz1RoleLibrary._display_temp_roles.<locals>.<lambda>¾óø€ T×%5Ñ%5°dÔ%;r rk©rHu å–æ¶ˆé€‰æ‹©có&jd«S©NFrrs€rrz1RoleLibrary._display_temp_roles.<locals>.<lambda>Àóø€ T×%5Ñ%5°eÔ%<r N)Údestroyr*rroÚcharacter_checkboxesr"rÚendswithr#Úsplitextr$Ú_parse_temp_role_filernrÚ CTkCheckBoxrwrvÚitemsÚlenrz)rrÚtemp_dirrõÚ scroll_frameÚ file_nameÚ role_namerørÚframer ÚcbÚlblÚattrsÚsummaryræs` rÚ_display_temp_roleszRoleLibrary._display_temp_rolesŒs$ø€ð×-ˆFØ N‰NÕ ð×-¨fÓ Ø×јv¨dÐÔ%'ˆÔŸ H×-ˆ×! ŸG™G×,¨YÓÑ: ÜŸG™GŸL™L¨°9Ó= ð"×7¸ ÓB
ôŸ  \Ó2Ø
 ¨!°!
Ô! tÔ,Ü—_‘_ U°¸cÈÔR^Ô_ؘV¨!Ô—ll 5¨yØ&=ô?à˜f¨1Ô6@×5EÑ5EÓ5G×H©c¨a°˜A˜3˜ A£˜x qÒHÑŸ,™, u°5·:±:¸eÓ3DØ*AØ06ô8ð   ÔØ%.¸8×)¨)Ó4ð;.ôF—LÓ.ˆ ؘC aˆÔ
i ;Ä,ô PßPTÑPTÐZ`ÐPTÔPaÜ
i <Ä<ô QßQUÑQUÐ[aÐQUÕQbùó#IsÅ8I2cóti}d} t|dd¬«5}|DŠj«ŠtˆfddD««rFdvrBdvrdnd }j|«d
jd«d j«}g||<Œmtˆfd d
D««sŒ‚dvrdnd}|sŒj|«d
j«}||j |«ŒÄ ddd«|S#1swY|SxYw#t
$r9}t
jddt|«|j¬«Yd}~|Sd}~wwxYw)uè§£æžä¸´æ—¶è§’色文件NÚutf-8©Úencodingc3ó&K|]}|vŒ
y­wr^©©Ú.0ÚprefixÚlines €rú <genexpr>z4RoleLibrary._parse_temp_role_file.<locals>.<genexpr>Ësøèø€ÒS¨f˜6 Tœ>ÑSùóƒ)õ ├──õ └──õ:r9r:rrc3ó&K|]}|vŒ
y­wr^r2r3s €rr7z4RoleLibrary._parse_temp_role_file.<locals>.<genexpr>Ïsøèø€Ò˜V tœ^Ñ_ùr8)õ│ ├──õ│ └──r=r>u è§£æžé”™è¯¯uè§£æžä¸´æ—¶æ–‡ä»¶å¤±è´¥ï¼šrš)
ÚopenrîÚanyÚsplitr”rr´r) rrÚ current_attrÚfr5Úitemr¼r6s @rrz!RoleLibrary._parse_temp_role_fileÂsHø€àˆ
؈ ð mܨwÔ
B¸Ÿ:™:<ÓSÐ8RÔSÐX]ÐaeÑXeØ0;¸tÑ0C¡È˜Ø'+§z¡z°&Ó'9¸!Ñ'<×'BÑ'BÀ5Ó'IÈ!Ñ'L×'RÑ'RÓ'T˜ Ø35˜
 Ó_Ð:^Ô_Ø5EÈÑ5MÑ!1ÐSc˜Ú'Ø#'§:¡:¨fÓ#5°aÑ#8×#>Ñ#>Ó#@˜& 4×;¸÷
BðÐ÷
BðÐûôò mÜ × Ñ  Ð3NÌsÐSTËvÈhÐ1WÐ`d×`kÑ`k× Ðûð músAC5•BC(Â
C(Â%8C(ÃC5Ã(C2Ã-C5Ã2C5Ã5 D7Ã>.D2Ä2D7có¶g}d}d}d}tjd«}tjd«}|jd«D]}|j«}tjd|«} | r4| j d«j
«}|j|idœ«Œ`|sŒc|j |«}
|
r1|
j«\} } | j
«}g|dd |<d}Œ§|j |«}
|
sŒ»|sŒ¾|
j«\} }|j
«}d
|vsd |vrntjd |d«}t|«dkDrI|d
j
«}|dj
«}|r|dd |j|d|«ŒW|sŒ[|r|dd |dxxd|z
cc<Œx|dd |j|«Œ”|S)uè§£æžLLM返回的角色数æ®Nu.^([├└]──)([\w\u4e00-\u9fa5]+)\s*[::]u^│\s+([├└]──)\s*(.*)Ú
u,^\s*([\u4e00-\u9fa5a-zA-Z0-9]+)\s*[::]\s*$rr éÿÿÿÿrú:r;õ[::]rz: u,)
ÚreÚcompilerAÚrstripÚmatchÚgrouprîr”Úgroupsr)rr˜rBÚcurrent_subattrÚattribute_patternÚ item_patternr6Ú
role_matchÚ
attr_matchr5Ú attr_nameÚ
item_matchrôÚ
subattr_matchrÿs rzRoleLibrary._parse_llm_responseØàˆØˆ ؈ ؈äŸJ™JÐ'XÓÜ—zzÐ"CÓ à—NN 4×(ˆDØ—;‘;“=ˆŸÐ"QÐSWÓXˆØ)×Ó: Ø  lÀ"ÑáØðÓ6ˆØ$.×$5Ñ$5Ó$7Ñ!˜ ØÓ0 Ø8:b ˜ Ñ5Ø"&Øð&×+¨DÓ1ˆšlØ",×"3Ñ"3Ó"5˜Ø!Ÿ-™-/ð˜'> U¨gÑ%5Ü$&§H¡H¨Y¸ÀÓ$C˜)¨AÒ-Ø*7¸Ñ*:×*@Ñ*@Ó*B˜Ø -¨aÑ 0× 6Ñ 6Ó 8˜Ù Ø! "™I 3°LÑA×HØ#2Ð"3°2°e°WÐ =ôñÙ˜b™   Ñ=¸AÀsÈ7È)À_јb™  ,Ñ ÑDÀWÖMð])ð^ˆ r c
ói_tj|«}|jdddd¬«|j dd¬«|j dd¬«|D]}tj |«}|jdd d¬
«td¬ «}tj|d |d
t¬«}|jdd¬«tj||dd¬«}|jdd¬«|dj«D
cgc]\} }
| dt|
«dŒ} } }
tj|dj| «dd¬«} | jdd¬«||dœj|d<Œtj |«}
|
jdd¬«tj|
dˆfdt¬ «jd¬!«tj|
d"ˆfd#„t¬ «jd¬!«y$cc}
} w)%u显示分æžåŽçš„角色列表r=TrGr?rrrirUr¿rrrFrYr
r
rWrrrrrrrSr>r rcó&jd«Srrrs€rrz5RoleLibrary._display_analyzed_roles.<locals>.<lambda>=rr rkruå选có&jd«Srrrs€rrz5RoleLibrary._display_analyzed_roles.<locals>.<lambda>?rr N)rr*rror„rnrrrwrvrrr$rz)rrr!Úroler$r r%r&r'r(r)r*s` rz#RoleLibrary._display_analyzed_rolesø€à$&ˆÔ×-¨fÓ Ø×јv¨d¸ÀÐÔ×& Ð×)¨!°AЈDÜ—L‘L Ó.ˆEØ J‰J˜C a¨aˆJÔ  4Ô(ˆCÜ ¨R¸#ÀRÌlÔ[ˆBØ G‰G˜ aˆGÔ —,,˜u¨4°©<Ø"9ô;ˆ H‰H˜& qˆ 26°lÑ1C×1IÑ1IÓ1K×L©#¨!¨A˜s˜!œC F˜8 1ÒLˆ—ll 5¨u¯z©z¸%Ó/@Ø&=Ø,2ô4ˆ
L‰L˜g¨BˆLÔ Øñ7ˆD× % d¨6¡lÓ 3ð+ô6—L‘L Ó.ˆ ؘC aˆÔ
i ;Ä,ô PßPTÑPTÐZ`ÐPTÔPaÜ
i <Ä<ô QßQUÑQUÐ[aÐQUÕQbùó%MsÄ HcóÜ|jj«D]O}|dj«}t|t«r|dj |«Œ;|dj | «ŒQy)u全选/å选æ“作r N)rrZraÚboolru)rÚselectr[Ú
current_states rrzRoleLibrary._toggle_allAsXà×6ˆDØ  ™KŸO™OÓ-ˆ˜&¤$ÔU  ÕU‘  MÐ 1Õ
7r cóÆd}tjdtjj d«|¬«}|sy d}|j d«rBdd lm}||«}d
j|jDcgc]}|jŒc}«}n't|d d ¬
«5}|j«}ddd«|j«D]B} t| tj «sŒ| j#dd«| j%d|«yycc}w#1swYŒdxYw#t&$r8}
t)j*ddt-|
«|j.¬«Yd}
~
yd}
~
wwxYw)u$从文件导入内容到å³ä¾§çª—å£))u 文本文件z*.txt)u
Word文档z*.docx)u 所有文件z*.*u选择è¦å¯¼å…¥çš„æ–‡ä»¶ú~)r,Ú
initialdirÚ filetypesNrèz.docxr)ÚDocumentrFr-r.r/u 导入失败uæ— æ³•è¯»å–æ–‡ä»¶ï¼šrš)rÚaskopenfilenamer"r#Ú
expanduserrÚdocxrdr$Ú
paragraphsrXr?Úreadrìr*rÚdeleteÚinsertr³rr´r) rrrcrdÚdocÚpararCs rzRoleLibrary.import_from_fileLs5ð
ˆ ô ×—w‘w×)¨#Óô
ˆ ñ Ø ð g؈×! ˜)ØŸ)™)¸3¿>¹>Ö$J°4 T§Y£YÒ$JÓKô˜) S°7Ô'¸Ÿf™fh&×6ܘf¤c§n¡nÕ—M‘M %¨Ô—M‘M %¨Ôñ 7ùò%K÷'ûôò gÜ × Ñ  Ð3HÌÈQËÈÐ1QÐZ^×ZeÑZe× fûð gúsM¼:DÁ6D DÂDÂ05DÃ&%DÄ DÄDÄDÄDÄ E Ä(.EÅE có”tjj|j«}tjj |d«}tjj |«s&t
jdd||j¬«y t|«}|j«D]}|j«Œd}|j«D] }t|tj«sŒ|}n|s2tj|dt¬«}|j!ddd d
d
¬ «|j#d ¬
«|j%dd«|j'd|«|j)dd¬«|j+dd¬«y#t,$r8}t
j.ddt1|«|j¬«Yd}~yd}~wwxYw)u.加载character_state.txt文件到å³ä¾§çª—å£zcharacter_state.txtr™u未找到文件: ršNrMrNrrGrriru加载文件失败: )r"r#r%r$rrr rr*rrwrtrjrkr„r´)rrr%s rz(RoleLibrary.load_default_character_statess~ô—GG—O‘O D§N¡NÓ3ˆ Ü—G‘G—LÐ,AÓBˆ äw‰w~‰~˜ × " 8Ð/@ÀÀ Ð-LÐUY×U`ÑU`Õ ð `ä  Ó*ˆ6ØÕ ðˆHØ6ܘf¤c§n¡nÕ%ð
ÜŸ>™>¨+¸ÔVØ
 !¨A°fÀ1È1
Ô × Ñ  XÐ Ô O‰O˜E 5Ô O‰O˜E  
× )¨!°AÐ × ,¨Q°qÐ 9øäò `Ü × Ñ  Ð-AÄ#ÀaÃ&ÀÐ+JÐSW×S^ÑS^× _ûð `ús ÂAFÃ0BFÆ GÆ.GÇGcótjj|jd«}tj|d¬« |j
j
«Dcgc]}|dj«r|dŒ}}|sStj|«}|jd«|j|«|j«tj|dt¬«jd d
¬ «tj |d |j"t¬
«jd
¬«|j%«|j'«}|j)«}|j+«|j'«|z
dzz}|j-«|j)«|z
dzz} |j/d|d| «|j1dd«y|D}
tjj||
dd«} |
ddg} |
dj3«D]X\}
}| j5d|
d«t7|«D]0\}}|t9|«dz
krdnd}| j5d||«Œ2ŒZt;| dd¬«5}|j=dj| ««ddd«ŒØ|j?«|j#«ycc}w#1swYŒ xYw#t@$r}|j#«Yd}~yd}~wwxYw)u'从临时角色库导入选中的角色rëTr7r r
ru请至少选择一个角色rWrr>)rBrCu确定rk©rCr¿rrNr
r;rr9r:õ│ Úwr.r/rF)!r"r#r$r%r:rrZrar*r+r,r×r3rvrwrorzrr-rrr”Ú enumeraterr?ÚwriteÚload_categoriesr³)rÚ role_dataÚselected_rolesÚ error_windowÚe_widthÚe_heightrUrTr[Ú dest_pathÚ
content_linesÚattrrÚirDr5rCs rzRoleLibrary.confirm_importô—WW—\‘\ $§.¡.Ð2CÓDˆ
Ü
Õ0 $àAE×AZÑAZ×AaÑAaÓAcö7°IØÑÓ7ˆ¨}Ó= Ø×" ×& × ˜\Ð0MÔT`ÔfÐlnÐuwÐ
˜À<×CWÑCWÔ^jÔk×pÐvxÐ×&×4Ø'×6Ø!×+¨}×/HÑ/HÓ/JÈWÑ/TÐYZÑ.ZÑZØ!×+¨}×/IÑ/IÓ/KÈhÑ/VÐ[\Ñ.\Ñ\Ø×¨!¨¨A¨a¨S ×
°AÔó'ÜŸG™GŸL™L¨¸¸ °~ÀTÐ5JÓK ð%)¨¡L Ð!5Ð 6
Ø#'¨ Ñ#5×#;Ñ#;Ö#=KD˜!×(¨9°T°F¸#Ð)>Ô?Ü#,¨UÖ#3™˜˜4Ø01´C¸³J¸q±LÒ0@¡Àk˜Ø,¨u°V°H¸T¸FÐ-CÕ$4ð$>ô˜) S°7Ô6¸—GG˜DŸI™I mÓ
× Ñ Ô × #ùòU7÷J6ûôò × #ûð $úsJÁK$ÁKÁ>EK$ÇB0K$Ê!KÊ'*K$ËK$ËK! ËK$Ë$ LË-LÌLcóštd«r jsytjddjdj¬«}|syt
j jjjjd«} t j|«t
j jjdjd«}t
j j|«rt j|«jj«jjd d
«tjd d j¬«Šjj!d
d«j!d
d«jj#dˆˆfd«y#t$$r†}tj&ddt)|«j¬«Šjj!d
d«j!d
d«jj#dˆˆfd«Yd}~yd}~wwxYw)u删除当å‰è§’色r˜Nu 确认删除u确定è¦åˆ é™¤è§’色 u å—?ršr9u角色已删除rrrcó`jjdd«jdd«gSrrs€€rrz1RoleLibrary.delete_current_role.<locals>.<lambda>ír ru删除失败:có`jjdd«jdd«gSrrs€€rrz1RoleLibrary.delete_current_role.<locals>.<lambda>òr )r˜rrr"r#r$r%r&Úremover«rqrjr­rr4r´)rÚ role_pathÚall_pathr¼s` @rr†zRoleLibrary.delete_current_roleÕù€ät˜^Ô,°D×4EÒ4EØ ä× Ð4°T×5FÑ5FÐ4GÀwÐOÐX\×XcÑXcôeˆáØ ä—G‘G—L‘LØ N‰N˜2°t×7HÑ7HÐ6IÈÐ4NóPˆ ð sÜ I‰I ä—w‘w—|‘|Ø ¨T×->Ñ->Ð,?¸tÐ*DóFˆw‰w~‰~˜— ‘ ˜(Ô × Ñ ˜t× × Ñ × $ U¨EÔ ×% hÐ0AÈ$Ï+É+ÔVˆ K‰K× " :¨qÔ N‰N˜:  K‰K× Ñ ˜cÔ#qÕ røÜò sÜ×& x°?Ä3ÀqÃ6À(Ð1KÐTX×T_ÑT_Ô`ˆ K‰K× " :¨qÔ N‰N˜:  K‰K× Ñ ˜cÔ#q× rûð  súsÂD(F;Æ; I
ÇA<IÉI
cóB|jj«dg}gd¢}|D}|jd|d«|jj «D}t |t j«sŒ|j|k(sŒ.|j «D]}t |t j«sŒ|j «D]R}t |t j«sŒ|j«j«}|sŒ?|jd|«ŒTŒ„Œ÷Œù|S)u构建角色文件内容r;©u物å“u能力u状æ€u主è¦è§’色间关系网uè§¦å‘æˆ–加深的事件r9r=) rrar”r*rnÚattribute_namer€)rÚattributes_orderrUÚblockÚchildrDÚ
entry_texts rÚ_build_role_contentzRoleLibrary._build_role_contentôà×/¨sÐÚã)ˆIØ N‰N˜Y y k°Ð ×?ܘe¤S§\¡\Õ2°u×7KÑ7KÈyÓ7Xà!&×!5Ñ!5Ö!7˜Ü% e¬S¯\©\Õ:Ø(-×(<Ñ(<Ö(> Ü#-¨d´C·L±LÕ#AØ15·±³×1AÑ1AÓ1C JÚ'1Ø(/¯©¸È
À|Ð7TÕ(Uñ )?ð"8ññ@ðˆr cóŠt|dd¬«5}|jdj|««ddd«y#1swYyxYw)uä¿å­˜è§’色文件rrr.r/rFN)r?rtr$)rr%rCs rÚ_save_role_filezRoleLibrary._save_role_file s:ä
)˜S¨7Ô
 (°qØ
G‰GD—II˜  (ús !9¹Acóng}tj|j«D]}tjj tjj |j|««sŒLtjj |j||d«}tjj
|«sŒš|dk(r`tjj |jd|d«}tjj|«sŒí|j|«Œÿ|j|«Œ|S)u9æ£€æŸ¥è§’è‰²åæ˜¯å¦é‡å¤ï¼Œé历整个角色文件夹rœr9) r"rr%r#r“r$r”)rÚnew_nameÚ conflictsr·r„s rÚ_check_role_name_conflictz%RoleLibrary._check_role_name_conflictàˆ äŸ
 4§>¡>×2ˆw‰w}‰}œRŸW™WŸ\™\¨$¯.©.¸(ÓŸG™GŸL™LØ—N‘N H°°
¸$Ð.?óA ä—77—>>  +ä#%§7¡7§<¡<Ø ŸN™N¨H¸¸
À$Ð6Gó$I˜äŸ7™7Ÿ>™>¨(Õ%×,¨XÕ"×Ö2ð!3ð"Ðr cóâtd«r jsyjj«j «}|sqt j ddj¬«Šjjdd«jdd«jjdˆˆfd „«y|jk7rO‰j|«}|r<t jd
d |d d
j|«zdzj¬«yj«}tjjj j"|d«} j%||«|jk7rXtjjj j"jd«}tj&||«|_j)j"«j+|«t j,ddj¬«y#t.$r8}t jd
dt1|«j¬«Yd}~yd}~wwxYw)uä¿å­˜å½“å‰ç¼–辑的角色r˜Nr™u角色åç§°ä¸èƒ½ä¸ºç©ºršrrrcó`jjdd«jdd«gSrrs€€rrz/RoleLibrary.save_current_role.<locals>.<lambda>/r rõ角色åç§° 'õ!' 已存在于以下分类中:
rFõ
请使用ä¸åŒçš„角色åç§°rœu角色已ä¿å­˜uä¿å­˜å¤±è´¥ï¼š)rrarrrr4rr$r"r#r%r&Úrenamer²Ú show_roler­r´)rrrr%s` @rr‡zRoleLibrary.save_current_role%sù€ät˜,°D×4EÒ4EØ à×ÙÜ×Ð3MÐVZ×VaÑVaÔbˆ K‰K× " :¨qÔ N‰N˜:  K‰K× Ñ ˜cÔ#qÔ ð  ×6°xÓ@ˆIÙÜ×$ XØ&4°X°JÐ>`Ð$aØ$(§I¡I¨iÓ$8ñ%9à$Fñ%GàOSÏ{É{õ\ðà×Ü—G‘G—L‘L §¡°×1GÑ1GØ$, :¨TÐ!2ó4ˆ ð [Ø × Ñ  ¨)Ô ˜4ן7™7Ÿ<™<¨¯©¸×8NÑ8NØ+/×+<Ñ+<Ð*=¸TÐ(BóDä ˜( IÔ!)ˆDÔ Ø × Ñ ˜t× N‰N˜8Ô × Ñ  Ð*;ÀDÇKÁKÖ PøÜò [Ü × Ñ  ¨_¼SÀ»V¸HÐ+EÈdÏkÉk× Zûð [úsÅCH-È- I.È6.I)É)I.cóÜ