~ubuntu-branches/ubuntu/precise/kde-style-qtcurve/precise

« back to all changes in this revision

Viewing changes to common/config_file.c

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas, Jonathan Thomas, Harald Sitter
  • Date: 2009-06-10 17:01:24 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20090610170124-7w346g248vofffxk
Tags: 0.64.2-0ubuntu1
[ Jonathan Thomas ]
* New upstream release (LP: #385707)
* Use kde.mk from pkg-kde-tools
* Remove unnecessary build-dep on cmake, build-dep on the earliest version
  of kdelibs5-dev to depend on cmake

[ Harald Sitter ]
* Bump standards version to 3.8.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
85
85
            return IND_TINT;
86
86
        if(0==memcmp(str, "glow", 4))
87
87
            return IND_GLOW;
 
88
        if(0==memcmp(str, "darken", 6))
 
89
            return IND_DARKEN;
88
90
    }
89
91
 
90
92
    return def;
128
130
    {
129
131
        if(0==memcmp(str, "true", 4) || 0==memcmp(str, "colored", 7))
130
132
            return MO_COLORED;
 
133
        if(0==memcmp(str, "thickcolored", 12))
 
134
            return MO_COLORED_THICK;
131
135
        if(0==memcmp(str, "plastik", 7))
132
136
            return MO_PLASTIK;
133
137
        if(0==memcmp(str, "glow", 4))
169
173
        {
170
174
            int i=atoi(&str[14]);
171
175
 
172
 
            if(i>=1 && i<(QTC_NUM_CUSTOM_GRAD+1))
173
 
                return (EAppearance)(APPEARANCE_CUSTOM1+(i-1));
 
176
            i--;
 
177
            if(i>=0 && i<QTC_NUM_CUSTOM_GRAD)
 
178
                return (EAppearance)(APPEARANCE_CUSTOM1+i);
174
179
        }
175
180
    }
176
181
    return def;
177
182
}
178
183
 
179
 
static EShade toShade(const char *str, bool allowDarken, EShade def)
 
184
static EShade toShade(const char *str, bool allowDarken, EShade def, bool menuShade, color *col)
180
185
{
181
186
    if(str)
182
187
    {
183
188
        /* true/false is from 0.25... */
184
 
        if(0==memcmp(str, "true", 4) || 0==memcmp(str, "selected", 8))
 
189
        if((!menuShade && 0==memcmp(str, "true", 4)) || 0==memcmp(str, "selected", 8))
185
190
            return SHADE_BLEND_SELECTED;
186
191
        if(0==memcmp(str, "origselected", 12))
187
192
            return SHADE_SELECTED;
188
 
        if(allowDarken && 0==memcmp(str, "darken", 6))
 
193
        if(allowDarken && (0==memcmp(str, "darken", 6) || (menuShade && 0==memcmp(str, "true", 4))))
189
194
            return SHADE_DARKEN;
190
195
        if(0==memcmp(str, "custom", 6))
191
196
            return SHADE_CUSTOM;
 
197
        if('#'==str[0] && col)
 
198
        {
 
199
            setRgb(col, str);
 
200
            return SHADE_CUSTOM;
 
201
        }
192
202
        if(0==memcmp(str, "none", 4))
193
203
            return SHADE_NONE;
194
204
    }
260
270
            return SHADING_HSL;
261
271
        if(0==memcmp(str, "hsv", 3))
262
272
            return SHADING_HSV;
 
273
        if(0==memcmp(str, "hcy", 3))
 
274
            return SHADING_HCY;
263
275
    }
264
276
 
265
277
    return def;
320
332
    {
321
333
        if(0==memcmp(str, "standard", 8))
322
334
            return FOCUS_STANDARD;
323
 
        if(0==memcmp(str, "highlight", 9))
324
 
            return FOCUS_HIGHLIGHT;
325
 
        if(0==memcmp(str, "background", 10))
326
 
            return FOCUS_BACKGROUND;
 
335
        if(0==memcmp(str, "rect", 4) || 0==memcmp(str, "highlight", 9))
 
336
            return FOCUS_RECTANGLE;
327
337
        if(0==memcmp(str, "filled", 6))
328
338
            return FOCUS_FILLED;
329
339
        if(0==memcmp(str, "full", 4))
335
345
    return def;
336
346
}
337
347
 
 
348
static ETabMo toTabMo(const char *str, ETabMo def)
 
349
{
 
350
    if(str)
 
351
    {
 
352
        if(0==memcmp(str, "top", 3))
 
353
            return TAB_MO_TOP;
 
354
        if(0==memcmp(str, "bot", 3))
 
355
            return TAB_MO_BOTTOM;
 
356
        if(0==memcmp(str, "glow", 4))
 
357
            return TAB_MO_GLOW;
 
358
    }
 
359
 
 
360
    return def;
 
361
}
 
362
 
338
363
static EGradientBorder toGradientBorder(const char *str)
339
364
{
340
365
    if(str)
343
368
            return GB_LIGHT;
344
369
        if(0==memcmp(str, "none", 4))
345
370
            return GB_NONE;
 
371
        if(0==memcmp(str, "3dfull", 6))
 
372
            return GB_3D_FULL;
346
373
        if(0==memcmp(str, "3d", 2) || 0==memcmp(str, "false", 5))
347
374
            return GB_3D;
 
375
 
348
376
    }
349
377
    return GB_3D;
350
378
}
367
395
}
368
396
#endif
369
397
 
 
398
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
399
static ETitleBarIcon toTitlebarIcon(const char *str, ETitleBarIcon def)
 
400
{
 
401
    if(str)
 
402
    {
 
403
        if(0==memcmp(str, "none", 4))
 
404
            return TITLEBAR_ICON_NONE;
 
405
        if(0==memcmp(str, "menu", 4))
 
406
            return TITLEBAR_ICON_MENU_BUTTON;
 
407
        if(0==memcmp(str, "title", 5))
 
408
            return TITLEBAR_ICON_NEXT_TO_TITLE;
 
409
    }
 
410
    return def;
 
411
}
 
412
#endif
 
413
 
370
414
#endif
371
415
 
372
416
#ifdef CONFIG_WRITE
722
766
#define QTC_CFG_READ_LINE(ENTRY) \
723
767
    opts->ENTRY=toLine(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
724
768
 
725
 
#define QTC_CFG_READ_SHADE(ENTRY, AD) \
726
 
    opts->ENTRY=toShade(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), AD, def->ENTRY);
 
769
#define QTC_CFG_READ_SHADE(ENTRY, AD, MENU_STRIPE, COL) \
 
770
    opts->ENTRY=toShade(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), AD, def->ENTRY, MENU_STRIPE, COL);
727
771
 
728
772
#define QTC_CFG_READ_SCROLLBAR(ENTRY) \
729
773
    opts->ENTRY=toScrollbar(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
731
775
#define QTC_CFG_READ_EFFECT(ENTRY) \
732
776
    opts->ENTRY=toEffect(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
733
777
 
734
 
#ifdef QTC_CONFIG_DIALOG
735
 
#define QTC_CFG_READ_SHADING(ENTRY, UNUSED) \
 
778
#define QTC_CFG_READ_SHADING(ENTRY) \
736
779
    opts->ENTRY=toShading(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
737
 
#else
738
 
#define QTC_CFG_READ_SHADING(ENTRY, DEF) \
739
 
    ENTRY=toShading(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), DEF);
740
 
#endif
741
780
 
742
781
#define QTC_CFG_READ_ECOLOR(ENTRY) \
743
782
    opts->ENTRY=toEColor(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
745
784
#define QTC_CFG_READ_FOCUS(ENTRY) \
746
785
    opts->ENTRY=toFocus(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
747
786
 
 
787
#define QTC_CFG_READ_TAB_MO(ENTRY) \
 
788
    opts->ENTRY=toTabMo(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
789
 
748
790
#ifdef __cplusplus
749
791
#define QTC_CFG_READ_ALIGN(ENTRY) \
750
792
    opts->ENTRY=toAlign(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
751
793
#endif
752
794
 
 
795
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
796
#define QTC_CFG_READ_TB_ICON(ENTRY) \
 
797
    opts->ENTRY=toTitlebarIcon(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
798
#endif
 
799
    
753
800
static void checkAppearance(EAppearance *ap, Options *opts)
754
801
{
755
802
    if(*ap>=APPEARANCE_CUSTOM1 && *ap<(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD))
768
815
 
769
816
static void defaultSettings(Options *opts);
770
817
 
 
818
#ifndef __cplusplus
 
819
static void copyGradients(Options *src, Options *dest)
 
820
{
 
821
    if(src && dest && src!=dest)
 
822
    {
 
823
        int i;
 
824
 
 
825
        for(i=0; i<QTC_NUM_CUSTOM_GRAD; ++i)
 
826
            if(src->customGradient[i] && src->customGradient[i]->numStops>0)
 
827
            {
 
828
                dest->customGradient[i]=malloc(sizeof(Gradient));
 
829
                dest->customGradient[i]->numStops=src->customGradient[i]->numStops;
 
830
                dest->customGradient[i]->stops=malloc(sizeof(GradientStop) * dest->customGradient[i]->numStops*2);
 
831
                memcpy(dest->customGradient[i]->stops, src->customGradient[i]->stops,
 
832
                        sizeof(GradientStop) * dest->customGradient[i]->numStops*2);
 
833
                dest->customGradient[i]->border=src->customGradient[i]->border;
 
834
            }
 
835
            else
 
836
                dest->customGradient[i]=NULL;
 
837
    }
 
838
}
 
839
 
 
840
static void copyOpts(Options *src, Options *dest)
 
841
{
 
842
    if(src && dest && src!=dest)
 
843
    {
 
844
        memcpy(dest, src, sizeof(Options));
 
845
        memcpy(dest->customShades, src->customShades, sizeof(double)*NUM_STD_SHADES);
 
846
        copyGradients(src, dest);
 
847
    }
 
848
}
 
849
#endif
 
850
 
771
851
#ifdef __cplusplus
772
852
static bool readConfig(const QString &file, Options *opts, Options *defOpts=0L)
773
853
#else
826
906
 
827
907
            Options *def=&newOpts;
828
908
 
829
 
            opts->customGradient=def->customGradient;
 
909
            if(opts!=def)
 
910
                opts->customGradient=def->customGradient;
830
911
#else
831
 
            Options newOpts,
832
 
                    *def=defOpts ? defOpts : &newOpts;
 
912
            Options newOpts;
 
913
            Options *def=&newOpts;
833
914
 
834
 
            if(!defOpts)
835
 
                defaultSettings(def);
836
 
            for(i=0; i<QTC_NUM_CUSTOM_GRAD+1; ++i)
837
 
                if(def->customGradient[i] && def->customGradient[i]->numStops>0)
838
 
                {
839
 
                    opts->customGradient[i]=malloc(sizeof(Gradient));
840
 
                    opts->customGradient[i]->numStops=def->customGradient[i]->numStops;
841
 
                    opts->customGradient[i]->stops=malloc(sizeof(GradientStop) * opts->customGradient[i]->numStops*2);
842
 
                    memcpy(opts->customGradient[i]->stops, def->customGradient[i]->stops, sizeof(GradientStop) * opts->customGradient[i]->numStops*2);
843
 
                    opts->customGradient[i]->border=def->customGradient[i]->border;
844
 
                }
 
915
            if(defOpts)
 
916
                copyOpts(defOpts, &newOpts);
 
917
            else
 
918
                defaultSettings(&newOpts);
 
919
            if(opts!=def)
 
920
                copyGradients(def, opts);
845
921
#endif
846
922
            /* Check if the config file expects old default values... */
 
923
            if(version<QTC_MAKE_VERSION(0, 63))
 
924
            {
 
925
                def->tabMouseOver=TAB_MO_TOP;
 
926
                def->sliderStyle=SLIDER_TRIANGULAR;
 
927
#ifdef __cplusplus
 
928
                def->titlebarAlignment=ALIGN_LEFT;
 
929
#endif
 
930
            }
847
931
            if(version<QTC_MAKE_VERSION(0, 62))
848
932
            {
849
933
#ifdef __cplusplus
889
973
                opts->highlightTab=true;
890
974
            }
891
975
 
892
 
            opts->customShades[0]=0;
893
 
            if(QTC_USE_CUSTOM_SHADES(*def))
894
 
                memcpy(opts->customShades, def->customShades, sizeof(double)*NUM_STD_SHADES);
 
976
            if(opts!=def)
 
977
            {
 
978
                opts->customShades[0]=0;
 
979
                if(QTC_USE_CUSTOM_SHADES(*def))
 
980
                    memcpy(opts->customShades, def->customShades, sizeof(double)*NUM_STD_SHADES);
 
981
            }
895
982
 
896
983
            QTC_CFG_READ_NUM(passwordChar)
897
984
            QTC_CFG_READ_ROUND(round)
898
985
            QTC_CFG_READ_INT(highlightFactor)
 
986
            QTC_CFG_READ_INT(menuDelay)
899
987
            QTC_CFG_READ_INT_BOOL(lighterPopupMenuBgnd)
900
988
            QTC_CFG_READ_TB_BORDER(toolbarBorders)
901
989
            QTC_CFG_READ_APPEARANCE(appearance, false)
909
997
            QTC_CFG_READ_LINE(handles)
910
998
            QTC_CFG_READ_BOOL(highlightTab)
911
999
            QTC_CFG_READ_BOOL(colorSelTab)
912
 
            QTC_CFG_READ_SHADE(shadeSliders, false)
913
 
            QTC_CFG_READ_SHADE(shadeMenubars, true)
914
 
            QTC_CFG_READ_SHADE(shadeCheckRadio, false)
 
1000
            QTC_CFG_READ_BOOL(roundAllTabs)
 
1001
            QTC_CFG_READ_TAB_MO(tabMouseOver)
 
1002
            QTC_CFG_READ_SHADE(shadeSliders, true, false, &opts->customSlidersColor)
 
1003
            QTC_CFG_READ_SHADE(shadeMenubars, true, false, &opts->customMenubarsColor)
 
1004
            QTC_CFG_READ_SHADE(shadeCheckRadio, false, false, &opts->customCheckRadioColor)
915
1005
            QTC_CFG_READ_APPEARANCE(menubarAppearance, false)
916
1006
            QTC_CFG_READ_APPEARANCE(menuitemAppearance, true)
917
1007
            QTC_CFG_READ_APPEARANCE(toolbarAppearance, false)
926
1016
            QTC_CFG_READ_BOOL(useHighlightForMenu)
927
1017
            QTC_CFG_READ_BOOL(shadeMenubarOnlyWhenActive)
928
1018
            QTC_CFG_READ_BOOL(thinnerMenuItems)
929
 
            QTC_CFG_READ_COLOR(customSlidersColor)
930
 
            QTC_CFG_READ_COLOR(customMenubarsColor)
 
1019
            if(version<QTC_MAKE_VERSION(0, 63))
 
1020
            {
 
1021
                if(QTC_IS_BLACK(opts->customSlidersColor))
 
1022
                    QTC_CFG_READ_COLOR(customSlidersColor)
 
1023
                if(QTC_IS_BLACK(opts->customMenubarsColor))
 
1024
                    QTC_CFG_READ_COLOR(customMenubarsColor)
 
1025
                if(QTC_IS_BLACK(opts->customCheckRadioColor))
 
1026
                    QTC_CFG_READ_COLOR(customCheckRadioColor)
 
1027
            }
931
1028
            QTC_CFG_READ_COLOR(customMenuSelTextColor)
932
1029
            QTC_CFG_READ_COLOR(customMenuNormTextColor)
933
 
            QTC_CFG_READ_COLOR(customCheckRadioColor)
934
1030
            QTC_CFG_READ_SCROLLBAR(scrollbarType)
935
1031
            QTC_CFG_READ_EFFECT(buttonEffect)
936
1032
            QTC_CFG_READ_APPEARANCE(lvAppearance, false)
941
1037
            QTC_CFG_READ_APPEARANCE(progressGrooveAppearance, false)
942
1038
            QTC_CFG_READ_APPEARANCE(grooveAppearance, false)
943
1039
            QTC_CFG_READ_APPEARANCE(sunkenAppearance, false)
 
1040
            QTC_CFG_READ_APPEARANCE(sbarBgndAppearance, false)
 
1041
 
 
1042
            if(version<QTC_MAKE_VERSION(0, 63))
 
1043
                opts->sliderFill=IS_FLAT(opts->appearance) ? opts->grooveAppearance : APPEARANCE_GRADIENT;
 
1044
            else
 
1045
            {
 
1046
                QTC_CFG_READ_APPEARANCE(sliderFill, false)
 
1047
            }
944
1048
            QTC_CFG_READ_ECOLOR(progressGrooveColor)
945
1049
            QTC_CFG_READ_FOCUS(focus)
 
1050
            QTC_CFG_READ_BOOL(lvButton)
946
1051
            QTC_CFG_READ_BOOL(lvLines)
947
1052
            QTC_CFG_READ_BOOL(drawStatusBarFrames)
948
1053
            QTC_CFG_READ_BOOL(fillSlider)
956
1061
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
957
1062
            QTC_CFG_READ_BOOL(fadeLines)
958
1063
#endif
959
 
            QTC_CFG_READ_BOOL(inactiveHighlight)
960
1064
            QTC_CFG_READ_BOOL(colorMenubarMouseOver)
961
1065
            QTC_CFG_READ_BOOL(crHighlight)
962
1066
            QTC_CFG_READ_BOOL(crButton)
966
1070
            QTC_CFG_READ_BOOL(highlightScrollViews)
967
1071
            QTC_CFG_READ_BOOL(sunkenScrollViews)
968
1072
            QTC_CFG_READ_BOOL(flatSbarButtons)
 
1073
            QTC_CFG_READ_BOOL(popupBorder)
 
1074
            QTC_CFG_READ_BOOL(unifySpinBtns)
 
1075
            QTC_CFG_READ_BOOL(thinSbarGroove)
 
1076
            QTC_CFG_READ_BOOL(colorSliderMouseOver)
 
1077
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
1078
            QTC_CFG_READ_BOOL(titlebarBorder)
 
1079
            QTC_CFG_READ_INT(titlebarButtons)
 
1080
            QTC_CFG_READ_TB_ICON(titlebarIcon)
 
1081
#endif
969
1082
#if defined __cplusplus || defined QTC_GTK2_MENU_STRIPE
970
 
            QTC_CFG_READ_BOOL(menuStripe)
 
1083
            QTC_CFG_READ_SHADE(menuStripe, true, true, &opts->customMenuStripeColor)
971
1084
            QTC_CFG_READ_APPEARANCE(menuStripeAppearance, false)
 
1085
            if(version<QTC_MAKE_VERSION(0, 63) && QTC_IS_BLACK(opts->customMenuStripeColor))
 
1086
                QTC_CFG_READ_COLOR(customMenuStripeColor)
972
1087
#endif
 
1088
            QTC_CFG_READ_SHADE(comboBtn, true, false, &opts->customComboBtnColor);
973
1089
            QTC_CFG_READ_BOOL(gtkScrollViews)
974
1090
#ifdef __cplusplus
975
1091
            QTC_CFG_READ_ALIGN(titlebarAlignment)
1002
1118
            else if(APPEARANCE_RAISED==opts->inactiveTitlebarAppearance)
1003
1119
                opts->inactiveTitlebarAppearance=APPEARANCE_FLAT;
1004
1120
#endif
1005
 
            QTC_CFG_READ_SHADING(shading, shading);
 
1121
            QTC_CFG_READ_SHADING(shading);
1006
1122
 
1007
1123
#ifdef __cplusplus
 
1124
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
1125
            if(opts->titlebarButtons&QTC_TITLEBAR_BUTTON_COLOR)
 
1126
            {
 
1127
#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
1128
                QStringList cols(readStringEntry(cfg, "titlebarButtonColors").split(',', QString::SkipEmptyParts));
 
1129
#else
 
1130
                QStringList cols(QStringList::split(',', readStringEntry(cfg, "titlebarButtonColors")));
 
1131
#endif
 
1132
                if(NUM_TITLEBAR_BUTTONS==cols.count())
 
1133
                {
 
1134
                    QStringList::ConstIterator it(cols.begin()),
 
1135
                                               end(cols.end());
 
1136
                    TBCols                     cols;
 
1137
 
 
1138
                    for(int i=0; it!=end; ++it, ++i)
 
1139
                    {
 
1140
                        QColor col;
 
1141
                        setRgb(&col, QTC_LATIN1((*it)));
 
1142
                        cols[(ETitleBarButtons)i]=col;
 
1143
                    }
 
1144
                    opts->titlebarButtonColors=cols;
 
1145
                }
 
1146
                else
 
1147
                    opts->titlebarButtons&=~QTC_TITLEBAR_BUTTON_COLOR;
 
1148
            }
 
1149
#endif
 
1150
 
1008
1151
#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
1009
1152
            QStringList shades(readStringEntry(cfg, "customShades").split(',', QString::SkipEmptyParts));
1010
1153
#else
1023
1166
            if(!ok && shades.size())
1024
1167
                opts->customShades[0]=0;
1025
1168
 
1026
 
            for(i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD+1); ++i)
 
1169
            for(i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD); ++i)
1027
1170
            {
1028
1171
                QString gradKey;
1029
1172
 
1030
 
                if(i==QTC_NUM_CUSTOM_GRAD)
1031
 
                    gradKey="sunkengradient";
1032
 
                else
1033
 
                    gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
 
1173
                gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
1034
1174
 
1035
1175
#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
1036
1176
                QStringList vals(readStringEntry(cfg, gradKey).split(',', QString::SkipEmptyParts));
1110
1250
            }
1111
1251
            }
1112
1252
 
1113
 
            for(i=0; i<QTC_NUM_CUSTOM_GRAD+1; ++i)
 
1253
            for(i=0; i<QTC_NUM_CUSTOM_GRAD; ++i)
1114
1254
            {
1115
1255
                char gradKey[18];
1116
1256
                char *str;
1117
1257
 
1118
 
                if(i==QTC_NUM_CUSTOM_GRAD)
1119
 
                    sprintf(gradKey, "sunkengradient");
1120
 
                else
1121
 
                    sprintf(gradKey, "customgradient%d", i+1);
 
1258
                sprintf(gradKey, "customgradient%d", i+1);
1122
1259
                if((str=readStringEntry(cfg, gradKey)))
1123
1260
                {
1124
1261
                    int j,
1242
1379
            checkAppearance(&opts->progressGrooveAppearance, opts);
1243
1380
            checkAppearance(&opts->grooveAppearance, opts);
1244
1381
            checkAppearance(&opts->sunkenAppearance, opts);
 
1382
            checkAppearance(&opts->sbarBgndAppearance, opts);
 
1383
            checkAppearance(&opts->sliderFill, opts);
1245
1384
#ifndef __cplusplus
1246
1385
            releaseConfig(cfg);
1247
1386
#endif
1248
 
            if(SHADE_SELECTED==opts->shadeCheckRadio)
1249
 
                opts->shadeCheckRadio=SHADE_BLEND_SELECTED;
 
1387
            if(SHADE_BLEND_SELECTED==opts->shadeCheckRadio)
 
1388
                opts->shadeCheckRadio=SHADE_SELECTED;
1250
1389
 
1251
1390
            checkColor(&opts->shadeMenubars, &opts->customMenubarsColor);
1252
1391
            checkColor(&opts->shadeSliders, &opts->customSlidersColor);
1253
1392
            checkColor(&opts->shadeCheckRadio, &opts->customCheckRadioColor);
1254
 
 
 
1393
#if defined __cplusplus || defined QTC_GTK2_MENU_STRIPE
 
1394
            checkColor(&opts->menuStripe, &opts->customMenuStripeColor);
 
1395
#endif
 
1396
            checkColor(&opts->comboBtn, &opts->customComboBtnColor);
1255
1397
            if(APPEARANCE_BEVELLED==opts->toolbarAppearance)
1256
1398
                opts->toolbarAppearance=APPEARANCE_GRADIENT;
1257
1399
            else if(APPEARANCE_RAISED==opts->toolbarAppearance)
1286
1428
            if(opts->highlightFactor<MIN_HIGHLIGHT_FACTOR || opts->highlightFactor>MAX_HIGHLIGHT_FACTOR)
1287
1429
                opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR;
1288
1430
 
 
1431
            if(opts->menuDelay<MIN_MENU_DELAY || opts->menuDelay>MAX_MENU_DELAY)
 
1432
                opts->menuDelay=DEFAULT_MENU_DELAY;
 
1433
 
1289
1434
            if(opts->lighterPopupMenuBgnd>MAX_LIGHTER_POPUP_MENU)
1290
1435
                opts->lighterPopupMenuBgnd=DEF_POPUPMENU_LIGHT_FACTOR;
1291
1436
 
1317
1462
            if(opts->round>ROUND_EXTRA)
1318
1463
                opts->focus=FOCUS_LINE;
1319
1464
 
1320
 
            if(opts->round>ROUND_FULL && IND_COLORED==opts->defBtnIndicator)
1321
 
                opts->defBtnIndicator=IND_TINT;
1322
 
 
1323
1465
            if(opts->squareScrollViews || EFFECT_NONE==opts->buttonEffect)
1324
1466
                opts->sunkenScrollViews=false;
1325
1467
 
1333
1475
            {
1334
1476
                int i;
1335
1477
 
1336
 
                for(i=0; i<QTC_NUM_CUSTOM_GRAD+1; ++i)
 
1478
                for(i=0; i<QTC_NUM_CUSTOM_GRAD; ++i)
1337
1479
                    if(def->customGradient[i])
1338
1480
                        free(def->customGradient[i]);
1339
1481
            }
1348
1490
            else
1349
1491
                defaultSettings(opts);
1350
1492
#else
1351
 
            defaultSettings(opts);
 
1493
            if(defOpts)
 
1494
                copyOpts(defOpts, opts);
 
1495
            else
 
1496
                defaultSettings(opts);
1352
1497
#endif
1353
1498
            return true;
1354
1499
        }
1382
1527
#ifndef __cplusplus
1383
1528
    int i;
1384
1529
 
1385
 
    for(i=0; i<QTC_NUM_CUSTOM_GRAD+1; ++i)
 
1530
    for(i=0; i<QTC_NUM_CUSTOM_GRAD; ++i)
1386
1531
        opts->customGradient[i]=0L;
1387
1532
#else
1388
1533
    // Setup titlebar gradients...
1398
1543
    opts->contrast=7;
1399
1544
    opts->passwordChar=0x25CF;
1400
1545
    opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR;
 
1546
    opts->menuDelay=DEFAULT_MENU_DELAY;
1401
1547
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
1402
1548
    opts->round=ROUND_EXTRA;
1403
1549
    opts->fadeLines=true;
1409
1555
    opts->lighterPopupMenuBgnd=DEF_POPUPMENU_LIGHT_FACTOR;
1410
1556
    opts->animatedProgress=false;
1411
1557
    opts->stripedProgress=STRIPE_NONE;
1412
 
    opts->sliderStyle=SLIDER_TRIANGULAR;
 
1558
    opts->sliderStyle=SLIDER_PLAIN;
1413
1559
    opts->highlightTab=false;
1414
1560
    opts->colorSelTab=false;
 
1561
    opts->roundAllTabs=false;
 
1562
    opts->tabMouseOver=TAB_MO_BOTTOM;
1415
1563
    opts->embolden=false;
1416
1564
    opts->appearance=APPEARANCE_SOFT_GRADIENT;
1417
1565
    opts->lvAppearance=APPEARANCE_BEVELLED;
1426
1574
    opts->progressGrooveColor=ECOLOR_DARK;
1427
1575
    opts->grooveAppearance=APPEARANCE_INVERTED;
1428
1576
    opts->sunkenAppearance=APPEARANCE_SOFT_GRADIENT;
 
1577
    opts->sbarBgndAppearance=APPEARANCE_FLAT;
 
1578
    opts->sliderFill=APPEARANCE_GRADIENT;
1429
1579
    opts->defBtnIndicator=IND_GLOW;
1430
1580
    opts->sliderThumbs=LINE_FLAT;
1431
1581
    opts->handles=LINE_SUNKEN;
1445
1595
    opts->scrollbarType=SCROLLBAR_KDE;
1446
1596
    opts->buttonEffect=EFFECT_SHADOW;
1447
1597
    opts->focus=FOCUS_LINE;
 
1598
    opts->lvButton=false;
1448
1599
    opts->lvLines=false;
1449
1600
    opts->drawStatusBarFrames=false;
1450
1601
    opts->fillSlider=true;
1456
1607
    opts->framelessGroupBoxes=true;
1457
1608
    opts->groupBoxLine=true;
1458
1609
    opts->colorMenubarMouseOver=true;
1459
 
    opts->inactiveHighlight=false;
1460
1610
    opts->crHighlight=false;
1461
1611
    opts->crButton=true;
1462
1612
    opts->fillProgress=true;
1465
1615
    opts->highlightScrollViews=false;
1466
1616
    opts->sunkenScrollViews=true;
1467
1617
    opts->flatSbarButtons=true;
 
1618
    opts->popupBorder=true;
 
1619
    opts->unifySpinBtns=false;
 
1620
    opts->thinSbarGroove=false;
 
1621
    opts->colorSliderMouseOver=false;
 
1622
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
1623
    opts->titlebarBorder=true;
 
1624
    opts->titlebarButtons=QTC_TITLEBAR_BUTTON_HOVER_FRAME;
 
1625
    opts->titlebarIcon=TITLEBAR_ICON_MENU_BUTTON;
 
1626
#endif
1468
1627
#if defined __cplusplus || defined QTC_GTK2_MENU_STRIPE
1469
 
    opts->menuStripe=false;
 
1628
    opts->menuStripe=SHADE_NONE;
1470
1629
    opts->menuStripeAppearance=APPEARANCE_GRADIENT;
 
1630
    opts->customMenuStripeColor.setRgb(0, 0, 0);
1471
1631
#endif
1472
 
#ifdef QTC_CONFIG_DIALOG
1473
1632
    opts->shading=SHADING_HSL;
1474
 
#endif
1475
 
 
1476
1633
    opts->gtkScrollViews=false;
 
1634
    opts->comboBtn=SHADE_NONE;
1477
1635
#ifdef __cplusplus
1478
1636
    opts->stdSidebarButtons=false;
1479
1637
    opts->gtkComboMenus=false;
1483
1641
    opts->customMenuNormTextColor.setRgb(0, 0, 0);
1484
1642
    opts->customMenuSelTextColor.setRgb(0, 0, 0);
1485
1643
    opts->customCheckRadioColor.setRgb(0, 0, 0);
1486
 
    opts->titlebarAlignment=ALIGN_LEFT;
 
1644
    opts->customComboBtnColor.setRgb(0, 0, 0);
 
1645
    opts->titlebarAlignment=ALIGN_FULL_CENTER;
1487
1646
#else
1488
1647
/*
1489
1648
    opts->setDialogButtonOrder=false;
1493
1652
    opts->customMenuNormTextColor.red=opts->customMenuNormTextColor.green=opts->customMenuNormTextColor.blue=0;
1494
1653
    opts->customMenuSelTextColor.red=opts->customMenuSelTextColor.green=opts->customMenuSelTextColor.blue=0;
1495
1654
    opts->customCheckRadioColor.red=opts->customCheckRadioColor.green=opts->customCheckRadioColor.blue=0;
 
1655
    opts->customComboBtnColor.red=opts->customCheckRadioColor.green=opts->customCheckRadioColor.blue=0;
1496
1656
#endif
1497
1657
 
1498
1658
#if !defined __cplusplus || defined QTC_CONFIG_DIALOG
1537
1697
            return "tint";
1538
1698
        case IND_GLOW:
1539
1699
            return "glow";
 
1700
        case IND_DARKEN:
 
1701
            return "darken";
1540
1702
        default:
1541
1703
            return "colored";
1542
1704
    }
1582
1744
    {
1583
1745
        case MO_COLORED:
1584
1746
            return "colored";
 
1747
        case MO_COLORED_THICK:
 
1748
            return "thickcolored";
1585
1749
        case MO_NONE:
1586
1750
            return "none";
1587
1751
        case MO_GLOW:
1627
1791
    }
1628
1792
}
1629
1793
 
1630
 
static const char *toStr(EShade exp, bool dark, bool convertBlendSelToSel)
 
1794
static QString toStr(const QColor &col)
 
1795
{
 
1796
    QString colorStr;
 
1797
 
 
1798
    colorStr.sprintf("#%02X%02X%02X", col.red(), col.green(), col.blue());
 
1799
    return colorStr;
 
1800
}
 
1801
 
 
1802
static QString toStr(EShade exp, const QColor &col)
1631
1803
{
1632
1804
    switch(exp)
1633
1805
    {
1635
1807
        case SHADE_NONE:
1636
1808
            return "none";
1637
1809
        case SHADE_BLEND_SELECTED:
1638
 
            return dark || !convertBlendSelToSel ? "selected" : "origselected";
 
1810
            return "selected";
1639
1811
        case SHADE_CUSTOM:
1640
 
            return "custom";
1641
 
        /* case SHADE_SELECTED */
 
1812
            return toStr(col);
 
1813
        case SHADE_SELECTED:
 
1814
            return "origselected";
1642
1815
        case SHADE_DARKEN:
1643
 
            return dark ? "darken" : "origselected";
 
1816
            return "darken";
1644
1817
    }
1645
1818
}
1646
1819
 
1696
1869
 
1697
1870
inline const char * toStr(bool b) { return b ? "true" : "false"; }
1698
1871
 
1699
 
static QString toStr(const QColor &col)
1700
 
{
1701
 
    QString colorStr;
1702
 
 
1703
 
    colorStr.sprintf("#%02X%02X%02X", col.red(), col.green(), col.blue());
1704
 
    return colorStr;
1705
 
}
1706
 
 
1707
1872
static const char *toStr(EShading s)
1708
1873
{
1709
1874
    switch(s)
1715
1880
            return "hsl";
1716
1881
        case SHADING_HSV:
1717
1882
            return "hsv";
 
1883
        case SHADING_HCY:
 
1884
            return "hcy";
1718
1885
    }
1719
1886
}
1720
1887
 
1771
1938
        default:
1772
1939
        case FOCUS_STANDARD:
1773
1940
            return "standard";
1774
 
        case FOCUS_HIGHLIGHT:
1775
 
            return "highlight";
1776
 
        case FOCUS_BACKGROUND:
1777
 
            return "background";
 
1941
        case FOCUS_RECTANGLE:
 
1942
            return "rect";
1778
1943
        case FOCUS_FILLED:
1779
1944
            return "filled";
1780
1945
        case FOCUS_FULL:
1784
1949
    }
1785
1950
}
1786
1951
 
 
1952
static const char *toStr(ETabMo f)
 
1953
{
 
1954
    switch(f)
 
1955
    {
 
1956
        default:
 
1957
        case TAB_MO_BOTTOM:
 
1958
            return "bot";
 
1959
        case TAB_MO_TOP:
 
1960
            return "top";
 
1961
        case TAB_MO_GLOW:
 
1962
            return "glow";
 
1963
    }
 
1964
}
 
1965
 
1787
1966
static const char *toStr(EGradientBorder g)
1788
1967
{
1789
1968
    switch(g)
1792
1971
            return "none";
1793
1972
        case GB_LIGHT:
1794
1973
            return "light";
 
1974
        case GB_3D_FULL:
 
1975
            return "3dfull";
1795
1976
        default:
1796
1977
        case GB_3D:
1797
1978
            return "3d";
1814
1995
    }
1815
1996
}
1816
1997
 
 
1998
static const char * toStr(ETitleBarIcon icn)
 
1999
{
 
2000
    switch(icn)
 
2001
    {
 
2002
        case TITLEBAR_ICON_NONE:
 
2003
            return "none";
 
2004
        default:
 
2005
        case TITLEBAR_ICON_MENU_BUTTON:
 
2006
            return "menu";
 
2007
        case TITLEBAR_ICON_NEXT_TO_TITLE:
 
2008
            return "title";
 
2009
    }
 
2010
}
 
2011
 
1817
2012
#if QT_VERSION >= 0x040000
1818
2013
#include <QTextStream>
1819
2014
#define CFG config
1833
2028
    else \
1834
2029
        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, B));
1835
2030
 
1836
 
#define CFG_WRITE_ENTRY_SHADE(ENTRY, DARK, CONVERT_SHADE) \
1837
 
    if (!exportingStyle && def.ENTRY==opts.ENTRY) \
1838
 
        CFG.deleteEntry(#ENTRY); \
1839
 
    else \
1840
 
        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, DARK, CONVERT_SHADE));
1841
 
 
1842
2031
#define CFG_WRITE_ENTRY_NUM(ENTRY) \
1843
2032
    if (!exportingStyle && def.ENTRY==opts.ENTRY) \
1844
2033
        CFG.deleteEntry(#ENTRY); \
1845
2034
    else \
1846
2035
        CFG.writeEntry(#ENTRY, opts.ENTRY);
1847
2036
 
 
2037
#define CFG_WRITE_SHADE_ENTRY(ENTRY, COL) \
 
2038
    if (!exportingStyle && def.ENTRY==opts.ENTRY) \
 
2039
        CFG.deleteEntry(#ENTRY); \
 
2040
    else \
 
2041
        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, opts.COL));
 
2042
 
1848
2043
bool static writeConfig(KConfig *cfg, const Options &opts, const Options &def, bool exportingStyle=false)
1849
2044
{
1850
2045
    if(!cfg)
1877
2072
        CFG_WRITE_ENTRY_NUM(passwordChar)
1878
2073
        CFG_WRITE_ENTRY(round)
1879
2074
        CFG_WRITE_ENTRY_NUM(highlightFactor)
 
2075
        CFG_WRITE_ENTRY_NUM(menuDelay)
1880
2076
        CFG_WRITE_ENTRY(toolbarBorders)
1881
2077
        CFG_WRITE_ENTRY(appearance)
1882
2078
        CFG_WRITE_ENTRY(fixParentlessDialogs)
1890
2086
        CFG_WRITE_ENTRY_B(handles, true)
1891
2087
        CFG_WRITE_ENTRY(highlightTab)
1892
2088
        CFG_WRITE_ENTRY(colorSelTab)
1893
 
        CFG_WRITE_ENTRY_SHADE(shadeSliders, false, false)
1894
 
        CFG_WRITE_ENTRY_SHADE(shadeMenubars, true, false)
1895
 
        CFG_WRITE_ENTRY_SHADE(shadeCheckRadio, false, true)
 
2089
        CFG_WRITE_ENTRY(roundAllTabs)
 
2090
        CFG_WRITE_ENTRY(tabMouseOver)
1896
2091
        CFG_WRITE_ENTRY(menubarAppearance)
1897
2092
        CFG_WRITE_ENTRY(menuitemAppearance)
1898
2093
        CFG_WRITE_ENTRY(toolbarAppearance)
1906
2101
        CFG_WRITE_ENTRY(useHighlightForMenu)
1907
2102
        CFG_WRITE_ENTRY(shadeMenubarOnlyWhenActive)
1908
2103
        CFG_WRITE_ENTRY(thinnerMenuItems)
1909
 
        CFG_WRITE_ENTRY(customSlidersColor)
1910
 
        CFG_WRITE_ENTRY(customMenubarsColor)
 
2104
        CFG_WRITE_SHADE_ENTRY(shadeSliders, customSlidersColor)
 
2105
        CFG_WRITE_SHADE_ENTRY(shadeMenubars, customMenubarsColor)
1911
2106
        CFG_WRITE_ENTRY(customMenuSelTextColor)
1912
2107
        CFG_WRITE_ENTRY(customMenuNormTextColor)
1913
 
        CFG_WRITE_ENTRY(customCheckRadioColor)
 
2108
        CFG_WRITE_SHADE_ENTRY(shadeCheckRadio, customCheckRadioColor)
1914
2109
        CFG_WRITE_ENTRY(scrollbarType)
1915
2110
        CFG_WRITE_ENTRY(buttonEffect)
1916
2111
        CFG_WRITE_ENTRY(lvAppearance)
1921
2116
        CFG_WRITE_ENTRY(progressGrooveAppearance)
1922
2117
        CFG_WRITE_ENTRY(grooveAppearance)
1923
2118
        CFG_WRITE_ENTRY(sunkenAppearance)
 
2119
        CFG_WRITE_ENTRY(sbarBgndAppearance)
 
2120
        CFG_WRITE_ENTRY(sliderFill)
1924
2121
        CFG_WRITE_ENTRY(progressGrooveColor)
1925
2122
        CFG_WRITE_ENTRY(focus)
 
2123
        CFG_WRITE_ENTRY(lvButton)
1926
2124
        CFG_WRITE_ENTRY(lvLines)
1927
2125
        CFG_WRITE_ENTRY(drawStatusBarFrames)
1928
2126
        CFG_WRITE_ENTRY(fillSlider)
1934
2132
        CFG_WRITE_ENTRY(framelessGroupBoxes)
1935
2133
        CFG_WRITE_ENTRY(groupBoxLine)
1936
2134
        CFG_WRITE_ENTRY(fadeLines)
1937
 
        CFG_WRITE_ENTRY(inactiveHighlight)
1938
2135
        CFG_WRITE_ENTRY(crHighlight)
1939
2136
        CFG_WRITE_ENTRY(crButton)
1940
2137
        CFG_WRITE_ENTRY(fillProgress)
1943
2140
        CFG_WRITE_ENTRY(highlightScrollViews)
1944
2141
        CFG_WRITE_ENTRY(sunkenScrollViews)
1945
2142
        CFG_WRITE_ENTRY(flatSbarButtons)
1946
 
        CFG_WRITE_ENTRY(menuStripe)
 
2143
        CFG_WRITE_ENTRY(popupBorder)
 
2144
        CFG_WRITE_ENTRY(unifySpinBtns)
 
2145
        CFG_WRITE_ENTRY(thinSbarGroove)
 
2146
        CFG_WRITE_ENTRY(colorSliderMouseOver)
 
2147
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
 
2148
        CFG_WRITE_ENTRY(titlebarBorder)
 
2149
        CFG_WRITE_ENTRY_NUM(titlebarButtons)
 
2150
        CFG_WRITE_ENTRY(titlebarIcon)
 
2151
 
 
2152
        if(opts.titlebarButtons&QTC_TITLEBAR_BUTTON_COLOR && NUM_TITLEBAR_BUTTONS==opts.titlebarButtonColors.size())
 
2153
        {
 
2154
            QString     val;
 
2155
#if QT_VERSION >= 0x040000
 
2156
            QTextStream str(&val);
 
2157
#else
 
2158
            QTextStream str(&val, IO_WriteOnly);
 
2159
#endif
 
2160
            for(int i=0; i<NUM_TITLEBAR_BUTTONS; ++i)
 
2161
            {
 
2162
                TBCols::const_iterator c(opts.titlebarButtonColors.find((ETitleBarButtons)i));
 
2163
 
 
2164
                if(c!=opts.titlebarButtonColors.end())
 
2165
                {
 
2166
                    if(i)
 
2167
                        str << ',';
 
2168
                    str << toStr((*c).second);
 
2169
                }
 
2170
            }
 
2171
            CFG.writeEntry("titlebarButtonColors", val);
 
2172
        }
 
2173
        else
 
2174
            CFG.deleteEntry("titlebarButtonColors");
 
2175
#endif
 
2176
        CFG_WRITE_SHADE_ENTRY(menuStripe, customMenuStripeColor)
 
2177
        CFG_WRITE_SHADE_ENTRY(comboBtn, customComboBtnColor)
1947
2178
        CFG_WRITE_ENTRY(stdSidebarButtons)
1948
2179
        CFG_WRITE_ENTRY(titlebarAppearance)
1949
2180
        CFG_WRITE_ENTRY(inactiveTitlebarAppearance)
1956
2187
        CFG_WRITE_ENTRY(shading)
1957
2188
        CFG_WRITE_ENTRY(titlebarAlignment)
1958
2189
 
1959
 
        for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD+1); ++i)
 
2190
        for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD); ++i)
1960
2191
        {
1961
2192
            GradientCont::const_iterator cg(opts.customGradient.find((EAppearance)i));
1962
2193
            QString                      gradKey;
1963
2194
 
1964
 
            if(i==(APPEARANCE_CUSTOM1+QTC_NUM_CUSTOM_GRAD))
1965
 
                gradKey="sunkengradient";
1966
 
            else
1967
 
                gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
 
2195
            gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
1968
2196
 
1969
2197
            if(cg==opts.customGradient.end())
1970
2198
                CFG.deleteEntry(gradKey);
1985
2213
 
1986
2214
                    GradientStopCont                 stops((*cg).second.stops.fix());
1987
2215
                    GradientStopCont::const_iterator it(stops.begin()),
1988
 
                                                    end(stops.end());
 
2216
                                                     end(stops.end());
1989
2217
 
1990
2218
                    for(; it!=end; ++it)
1991
2219
                        str << ',' << (*it).pos << ',' << (*it).val;