11from PySide6 .QtCore import Qt , Signal
2- from PySide6 .QtWidgets import QWidget , QComboBox , QVBoxLayout , QCheckBox , QHBoxLayout , QLabel
2+ from PySide6 .QtWidgets import QWidget , QComboBox , QCheckBox , QFormLayout , QTextBrowser , QSizePolicy
33
4+ from pyqt_openai import G4F_PROVIDER_DEFAULT
45from pyqt_openai .config_loader import CONFIG_MANAGER
5- from pyqt_openai .globals import get_chat_model
66from pyqt_openai .lang .translations import LangClass
7+ from pyqt_openai .util .script import get_g4f_providers , get_g4f_models_by_provider , get_chat_model , get_g4f_models , \
8+ getSeparator
79
810
911class UsingG4FPage (QWidget ):
@@ -20,27 +22,39 @@ def __initVal(self):
2022 self .__model = CONFIG_MANAGER .get_general_property ('model' )
2123
2224 def __initUi (self ):
23- modelCmbBox = QComboBox ()
24- modelCmbBox .addItems (get_chat_model (is_g4f = True ))
25- modelCmbBox .setCurrentText (self .__model )
26- modelCmbBox .currentTextChanged .connect (self .__modelChanged )
25+ manualBrowser = QTextBrowser ()
26+ manualBrowser .setOpenExternalLinks (True )
27+ manualBrowser .setOpenLinks (True )
2728
28- lay = QHBoxLayout ()
29- lay .addWidget (QLabel (LangClass .TRANSLATIONS ['Model' ]))
30- lay .addWidget (modelCmbBox )
31- lay .setContentsMargins (0 , 0 , 0 , 0 )
29+ # TODO LANGUAGE
30+ manualBrowser .setHtml ('''
31+ <h2>Using GPT4Free (Free)</h2>
32+ <h3>Description</h3>
33+ <p>- Responses may often be slow or incomplete.</p>
34+ <p>- The response server may be unstable.</p>
35+ ''' )
36+ manualBrowser .setSizePolicy (QSizePolicy .Policy .Preferred , QSizePolicy .Policy .Preferred )
3237
33- selectModelWidget = QWidget ()
34- selectModelWidget .setLayout (lay )
38+ self .__modelCmbBox = QComboBox ()
39+ self .__modelCmbBox .addItems (get_chat_model (is_g4f = True ))
40+ self .__modelCmbBox .setCurrentText (self .__model )
41+ self .__modelCmbBox .currentTextChanged .connect (self .__modelChanged )
3542
3643 streamChkBox = QCheckBox ()
3744 streamChkBox .setChecked (self .__stream )
3845 streamChkBox .toggled .connect (self .__streamChecked )
3946 streamChkBox .setText (LangClass .TRANSLATIONS ['Stream' ])
4047
41- lay = QVBoxLayout ()
42- lay .addWidget (selectModelWidget )
43- lay .addWidget (streamChkBox )
48+ providerCmbBox = QComboBox ()
49+ providerCmbBox .addItems (get_g4f_providers (including_auto = True ))
50+ providerCmbBox .currentTextChanged .connect (self .__providerChanged )
51+
52+ lay = QFormLayout ()
53+ lay .addRow (manualBrowser )
54+ lay .addRow (getSeparator ('horizontal' ))
55+ lay .addRow ('Model' , self .__modelCmbBox )
56+ lay .addRow ('Provider' , providerCmbBox )
57+ lay .addRow (streamChkBox )
4458 lay .setAlignment (Qt .AlignmentFlag .AlignTop )
4559
4660 self .setLayout (lay )
@@ -51,4 +65,11 @@ def __modelChanged(self, v):
5165
5266 def __streamChecked (self , f ):
5367 self .__stream = f
54- CONFIG_MANAGER .set_general_property ('stream' , f )
68+ CONFIG_MANAGER .set_general_property ('stream' , f )
69+
70+ def __providerChanged (self , v ):
71+ self .__modelCmbBox .clear ()
72+ if v == G4F_PROVIDER_DEFAULT :
73+ self .__modelCmbBox .addItems (get_g4f_models ())
74+ else :
75+ self .__modelCmbBox .addItems (get_g4f_models_by_provider (v ))
0 commit comments