[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [PATCH] kcolordialog
From: Jarosław_Staniek <js () iidea ! pl>
Date: 2005-04-23 22:46:53
Message-ID: 426ADEDB.3080108 () iidea ! pl
[Download RAW message or body]
- win32-only: make it works with a fake copy of rgb.txt
copied to $KDEDIR/share/config/colors/x11/
- general fix: make all names starting with uppercase character
for better sorting (usable for "normal" users)
OK?
--
regards / pozdrawiam,
Jaroslaw Staniek / OpenOffice Polska / Kexi Team
http://www.openoffice.com.pl | http://www.kexi-project.org
KDElibs/Windows: http://wiki.kde.org/tiki-index.php?page=KDElibs+for+win32
["kcolordialog.patch" (text/plain)]
Index: kcolordialog.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kcolordialog.cpp,v
retrieving revision 1.127
diff -u -r1.127 kcolordialog.cpp
--- kcolordialog.cpp 15 Dec 2004 11:00:29 -0000 1.127
+++ kcolordialog.cpp 23 Apr 2005 22:42:19 -0000
@@ -45,6 +45,7 @@
#include <qpushbutton.h>
#include <qspinbox.h>
#include <qtimer.h>
+#include <qdir.h>
#include <kapplication.h>
#include <kconfig.h>
@@ -57,6 +58,7 @@
#include <kseparator.h>
#include <kpalette.h>
#include <kimageeffect.h>
+#include <kstandarddirs.h>
#include "kcolordialog.h"
#include "kcolordrag.h"
@@ -597,6 +599,7 @@
}
+#ifndef Q_WS_WIN
static const char * const *namedColorFilePath( void )
{
//
@@ -614,9 +617,54 @@
};
return path;
}
+#endif
+bool
+KPaletteTable::tryReadNamedColors( const QString& palfname )
+{
+ QFile paletteFile( palfname );
+ if( !paletteFile.open( IO_ReadOnly ) )
+ {
+ return false;
+ }
+ QString line;
+ QStringList list;
+ while( paletteFile.readLine( line, 100 ) != -1 )
+ {
+ int red, green, blue;
+ int pos = 0;
+
+ if( sscanf(line.ascii(), "%d %d %d%n", &red, &green, &blue, &pos ) == 3 )
+ {
+ //
+ // Remove duplicates. Every name with a space and every name
+ // that start with "gray".
+ //
+ QString name = line.mid(pos).stripWhiteSpace();
+ if (!name.isEmpty())
+ name[0] = name[0].upper(); //1st letter opper case for mor human-friendly sorting
+ if( name.isEmpty() || name.find(' ') != -1 ||
+ name.find( "gray" ) != -1 || name.find( "grey" ) != -1 )
+ {
+ continue;
+ }
+
+ const QColor color ( red, green, blue );
+ if ( color.isValid() )
+ {
+ const QString colorName( i18n("color", name.latin1() ) );
+ list.append( colorName );
+ d->m_namedColorMap[ colorName ] = color;
+ }
+ }
+ }
+
+ list.sort();
+ mNamedColorList->insertStringList( list );
+ return true;
+}
void
KPaletteTable::readNamedColor( void )
@@ -632,49 +680,19 @@
// Code somewhat inspired by KPalette.
//
+#ifdef Q_WS_WIN
+ // for win32 we cannot rely on having X11 installed,
+ // so we're assuming a copy of palette file can be saved
+ // as $KDEDIR/share/config/colors/x11/rgb.txt
+# define WIN32_X11_COLOR_SUBPATH "colors/x11/rgb.txt"
+ QString palfname = ::locate("config", WIN32_X11_COLOR_SUBPATH);
+ if (!palfname.isEmpty())
+ tryReadNamedColors( palfname );
+#else
const char * const *path = namedColorFilePath();
- for( int i=0; path[i]; ++i )
- {
- QFile paletteFile( path[i] );
- if( !paletteFile.open( IO_ReadOnly ) )
- {
- continue;
- }
-
- QString line;
- QStringList list;
- while( paletteFile.readLine( line, 100 ) != -1 )
- {
- int red, green, blue;
- int pos = 0;
-
- if( sscanf(line.ascii(), "%d %d %d%n", &red, &green, &blue, &pos ) == 3 )
- {
- //
- // Remove duplicates. Every name with a space and every name
- // that start with "gray".
- //
- QString name = line.mid(pos).stripWhiteSpace();
- if( name.isNull() || name.find(' ') != -1 ||
- name.find( "gray" ) != -1 || name.find( "grey" ) != -1 )
- {
- continue;
- }
-
- const QColor color ( red, green, blue );
- if ( color.isValid() )
- {
- const QString colorName( i18n("color", name.latin1() ) );
- list.append( colorName );
- d->m_namedColorMap[ colorName ] = color;
- }
- }
- }
-
- list.sort();
- mNamedColorList->insertStringList( list );
- break;
- }
+ for( int i=0; path[i] && !tryReadNamedColors( QString::fromLatin1(path[i]) ); ++i )
+ ;
+#endif
if( mNamedColorList->count() == 0 )
{
@@ -699,12 +717,20 @@
"Unable to read X11 RGB color strings. The following "
"file location(s) were examined:\n");
+#ifdef Q_WS_WIN
+ QStringList list( KGlobal::dirs()->resourceDirs("config") );
+ for( QStringList::ConstIterator it = list.constBegin(); it!=list.constEnd(); ++it )
+ {
+ msg += (QDir::convertSeparators(*it + WIN32_X11_COLOR_SUBPATH) + "\n");
+ }
+#else
const char * const *path = namedColorFilePath();
for( int i=0; path[i]; ++i )
{
msg += path[i];
msg += "\n";
}
+#endif
KMessageBox::sorry( this, msg );
}
}
Index: kcolordialog.h
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kcolordialog.h,v
retrieving revision 1.64
diff -u -r1.64 kcolordialog.h
--- kcolordialog.h 10 Oct 2004 12:41:55 -0000 1.64
+++ kcolordialog.h 23 Apr 2005 22:42:19 -0000
@@ -235,6 +235,7 @@
private:
virtual void setPalette(const QPalette& p) { QWidget::setPalette(p); }
+ bool tryReadNamedColors( const QString& palfname );
protected:
virtual void virtual_hook( int id, void* data );
private:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic