@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License *
* along with this program ; if not , write to the *
* Free Software Foundation , Inc . , *
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA . *
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA . *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <tqlayout.h>
@ -60,6 +60,9 @@ const TQString KcmGtk::GTK_RC_FILE(".gtkrc-2.0-kde-kde4");
const TQString KcmGtk : : KDE_RC_DIR ( KGlobal : : dirs ( ) - > localtdedir ( ) + " /env/ " ) ;
const TQString KcmGtk : : GTK_TQT_RC_FILE ( " gtk-qt-engine.rc.sh " ) ;
const TQString KcmGtk : : GTK3_INI_DIR ( TQDir : : homeDirPath ( ) + " /.config/gtk-3.0/ " ) ;
const TQString KcmGtk : : GTK3_INI_FILE ( " settings.ini " ) ;
/*typedef KGenericFactory<KcmGtk, TQWidget> KcmGtkFactory;
K_EXPORT_COMPONENT_FACTORY ( kcm_gtk , KcmGtkFactory ( " gtk " ) ) */
@ -183,6 +186,7 @@ KcmGtk::KcmGtk(TQWidget *parent, const char *name, const TQStringList&)
// Load the icons
KIconLoader iconLoader ;
widget - > styleIcon - > setPixmap ( iconLoader . loadIcon ( " style " , KIcon : : Desktop ) ) ;
widget - > styleIcon3 - > setPixmap ( iconLoader . loadIcon ( " style " , KIcon : : Desktop ) ) ;
widget - > fontIcon - > setPixmap ( iconLoader . loadIcon ( " fonts " , KIcon : : Desktop ) ) ;
widget - > firefoxIcon - > setPixmap ( iconLoader . loadIcon ( " firefox " , KIcon : : Desktop ) ) ;
widget - > keyboardIcon - > setPixmap ( iconLoader . loadIcon ( " keyboard " , KIcon : : Desktop ) ) ;
@ -193,14 +197,19 @@ KcmGtk::KcmGtk(TQWidget *parent, const char *name, const TQStringList&)
// Connect some signals
connect ( widget - > warning2 , TQT_SIGNAL ( leftClickedURL ( const TQString & ) ) , KApplication : : kApplication ( ) , TQT_SLOT ( invokeBrowser ( const TQString & ) ) ) ;
connect ( widget - > styleGroup , TQT_SIGNAL ( clicked ( int ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > warning5 , TQT_SIGNAL ( leftClickedURL ( const TQString & ) ) , KApplication : : kApplication ( ) , TQT_SLOT ( invokeBrowser ( const TQString & ) ) ) ;
connect ( widget - > styleGroup3 , TQT_SIGNAL ( clicked ( int ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > fontGroup , TQT_SIGNAL ( clicked ( int ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > styleBox , TQT_SIGNAL ( activated ( int ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > styleBox , TQT_SIGNAL ( activated ( int ) ) , TQT_SLOT ( styleChanged ( ) ) ) ;
connect ( widget - > styleBox3 , TQT_SIGNAL ( activated ( int ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > styleBox3 , TQT_SIGNAL ( activated ( int ) ) , TQT_SLOT ( styleChanged ( ) ) ) ;
connect ( widget - > emacsBox , TQT_SIGNAL ( toggled ( bool ) ) , TQT_SLOT ( itemChanged ( ) ) ) ;
connect ( widget - > fontChange , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( fontChangeClicked ( ) ) ) ;
connect ( widget - > firefoxFix , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( firefoxFixClicked ( ) ) ) ;
connect ( widget - > emacsDetails , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( emacsDetailsClicked ( ) ) ) ;
connect ( widget - > warning3 , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( searchPathsClicked ( ) ) ) ;
connect ( widget - > warning6 , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( searchPathsClicked ( ) ) ) ;
}
void KcmGtk : : getInstalledThemes ( )
@ -224,13 +233,44 @@ void KcmGtk::getInstalledThemes()
}
widget - > styleBox - > clear ( ) ;
widget - > styleBox - > insertStringList ( themes . keys ( ) ) ;
TQStringList otherStyles = themes . keys ( ) ;
otherStyles . remove ( otherStyles . find ( " Qt " ) ) ;
widget - > styleBox - > insertStringList ( otherStyles ) ;
bool installed = ( themes . find ( " Qt " ) ! = themes . end ( ) ) ;
widget - > styleKde - > setEnabled ( installed ) ;
widget - > warning1 - > setHidden ( installed ) ;
widget - > warning2 - > setHidden ( installed ) ;
widget - > warning3 - > setHidden ( installed ) ;
gtk3Themes . clear ( ) ;
for ( TQStringList : : Iterator it = gtkSearchPaths . begin ( ) ; it ! = gtkSearchPaths . end ( ) ; + + it )
{
TQString path = ( * it ) + " /share/themes/ " ;
TQDir dir ( path ) ;
TQStringList entryList = dir . entryList ( TQDir : : Dirs , TQDir : : Unsorted ) ;
for ( TQStringList : : Iterator it2 = entryList . begin ( ) ; it2 ! = entryList . end ( ) ; + + it2 )
{
if ( ( * it2 ) . startsWith ( " . " ) )
continue ;
if ( gtk3Themes . find ( * it2 ) ! = gtk3Themes . end ( ) )
continue ;
if ( ! TQFile : : exists ( path + ( * it2 ) + " /gtk-3.0/gtk.css " ) )
continue ;
gtk3Themes . insert ( ( * it2 ) , path + ( * it2 ) + " /gtk-3.0/gtk.css " ) ;
}
}
widget - > styleBox3 - > clear ( ) ;
TQStringList otherGtk3Styles = gtk3Themes . keys ( ) ;
otherGtk3Styles . remove ( otherGtk3Styles . find ( " tdegtk " ) ) ;
widget - > styleBox3 - > insertStringList ( otherGtk3Styles ) ;
bool gtk3installed = ( gtk3Themes . find ( " tdegtk " ) ! = gtk3Themes . end ( ) ) ;
widget - > styleKde3 - > setEnabled ( gtk3installed ) ;
widget - > warning4 - > setHidden ( gtk3installed ) ;
widget - > warning5 - > setHidden ( gtk3installed ) ;
widget - > warning6 - > setHidden ( gtk3installed ) ;
}
void KcmGtk : : itemChanged ( )
@ -306,10 +346,12 @@ void KcmGtk::load()
break ;
}
if ( usingQtEngine )
if ( usingQtEngine ) {
widget - > styleGroup - > setButton ( widget - > styleGroup - > id ( widget - > styleKde ) ) ;
else
}
else {
widget - > styleGroup - > setButton ( widget - > styleGroup - > id ( widget - > styleOther ) ) ;
}
}
font = parser . font ;
@ -324,6 +366,30 @@ void KcmGtk::load()
widget - > emacsBox - > setChecked ( parser . emacs ) ;
updateFontPreview ( ) ;
bool usingGtk3TQtEngine = false ;
if ( TQFile : : exists ( GTK3_INI_DIR + GTK3_INI_FILE ) ) {
TQString activeGtk3Style ;
KConfig gtk3Config ( GTK3_INI_DIR + GTK3_INI_FILE ) ;
gtk3Config . setGroup ( " Settings " ) ;
activeGtk3Style = gtk3Config . readEntry ( " gtk-theme-name " ) ;
if ( activeGtk3Style = = " tdegtk " ) {
usingGtk3TQtEngine = true ;
}
if ( usingGtk3TQtEngine ) {
widget - > styleGroup3 - > setButton ( widget - > styleGroup3 - > id ( widget - > styleKde3 ) ) ;
}
else {
widget - > styleGroup3 - > setButton ( widget - > styleGroup3 - > id ( widget - > styleOther3 ) ) ;
for ( int i = 0 ; i < widget - > styleBox3 - > count ( ) ; + + i ) {
if ( widget - > styleBox3 - > text ( i ) = = activeGtk3Style ) {
widget - > styleBox3 - > setCurrentItem ( i ) ;
break ;
}
}
}
}
}
@ -342,6 +408,9 @@ void KcmGtk::save()
TQString themeName = widget - > styleKde - > isChecked ( ) ? themes [ " Qt " ] : themes [ widget - > styleBox - > currentText ( ) ] ;
TQString themeNameShort = widget - > styleKde - > isChecked ( ) ? TQString ( " Qt " ) : widget - > styleBox - > currentText ( ) ;
TQString themeName3 = widget - > styleKde3 - > isChecked ( ) ? gtk3Themes [ " tdegtk " ] : gtk3Themes [ widget - > styleBox3 - > currentText ( ) ] ;
TQString themeNameShort3 = widget - > styleKde3 - > isChecked ( ) ? TQString ( " tdegtk " ) : widget - > styleBox3 - > currentText ( ) ;
stream < < " # This file was written by TDE \n " ;
stream < < " # You can edit it in the TDE control center, under \" GTK Styles and Fonts \" \n " ;
@ -438,7 +507,24 @@ void KcmGtk::save()
stream < < fileDataString ;
file . close ( ) ;
}
TQDir gtk3IniDir ;
if ( ! gtk3IniDir . exists ( GTK3_INI_DIR ) )
{
// Make sure the GTK INI dir exists
gtk3IniDir . mkdir ( GTK3_INI_DIR ) ;
}
TQFile gtk3IniFile ( GTK3_INI_DIR + GTK3_INI_FILE ) ;
gtk3IniFile . open ( IO_WriteOnly ) ;
TQTextStream gtk3IniStream ( & gtk3IniFile ) ;
gtk3IniStream < < " # This file was written by TDE \n " ;
gtk3IniStream < < " # You can edit it in the TDE control center, under \" GTK Styles and Fonts \" \n " ;
gtk3IniStream < < " \n " ;
gtk3IniStream < < " [Settings] \n " ;
gtk3IniStream < < " gtk-theme-name = " < < themeNameShort3 < < " \n " ;
gtk3IniFile . close ( ) ;
emit changed ( true ) ;
}