00001 #include "astyle_widget.h"
00002
00003 #include <qradiobutton.h>
00004 #include <qtabwidget.h>
00005 #include <qmultilineedit.h>
00006 #include <qbuttongroup.h>
00007 #include <qcheckbox.h>
00008 #include <qspinbox.h>
00009
00010 #include <kconfig.h>
00011 #include <kapplication.h>
00012 #include <kdebug.h>
00013
00014 #include <kdevcore.h>
00015
00016
00017 AStyleWidget::AStyleWidget(QWidget *parent, const char *name)
00018 : AStyleConfig(parent, name)
00019 {
00020 connect(StyleGroup, SIGNAL(clicked(int)), this, SLOT(styleChanged(int)));
00021
00022
00023 KConfig *config = kapp->config();
00024 config->setGroup("AStyle");
00025
00026
00027 QString s = config->readEntry("Style");
00028 int id=0;
00029 if (s == "ANSI") id=1;
00030 if (s == "KR") id=2;
00031 if (s == "Linux") id=3;
00032 if (s == "GNU") id=4;
00033 if (s == "JAVA") id=5;
00034 StyleGroup->setButton(id);
00035 styleChanged(id);
00036
00037
00038 if (config->readEntry("Fill", "Tabs") == "Tabs")
00039 Fill_Tabs->setChecked(true);
00040 else
00041 Fill_Spaces->setChecked(true);
00042 Fill_SpaceCount->setValue(config->readNumEntry("FillSpaces",2));
00043
00044
00045 Indent_Switches->setChecked(config->readBoolEntry("IndentSwitches", false));
00046 Indent_Cases->setChecked(config->readBoolEntry("IndentCases", false));
00047 Indent_Classes->setChecked(config->readBoolEntry("IndentClasses", false));
00048 Indent_Brackets->setChecked(config->readBoolEntry("IndentBrackets", false));
00049 Indent_Namespaces->setChecked(config->readBoolEntry("IndentNamespaces", true));
00050 Indent_Labels->setChecked(config->readBoolEntry("IndentLabels", true));
00051
00052
00053 Continue_MaxStatement->setValue(config->readNumEntry("MaxStatement", 40));
00054 Continue_MinConditional->setValue(config->readNumEntry("MinConditional", -1));
00055
00056
00057 s = config->readEntry("Brackets", "Break");
00058 Brackets_Break->setChecked(s == "Break");
00059 Brackets_Attach->setChecked(s == "Attach");
00060 Brackets_Linux->setChecked(s == "Linux");
00061
00062
00063 Pad_Parentheses->setChecked(config->readBoolEntry("PadParentheses", false));
00064 Pad_Operators->setChecked(config->readBoolEntry("PadOperators", false));
00065
00066
00067 Keep_Statements->setChecked(config->readBoolEntry("KeepStatements", false));
00068 Keep_Blocks->setChecked(config->readBoolEntry("KeepBlocks", false));
00069 }
00070
00071
00072 AStyleWidget::~AStyleWidget()
00073 {
00074 }
00075
00076
00077 void AStyleWidget::accept()
00078 {
00079
00080 KConfig *config = kapp->config();
00081 config->setGroup("AStyle");
00082
00083
00084 if (Style_UserDefined->isChecked())
00085 config->writeEntry("Style", "UserDefined");
00086 else if (Style_ANSI->isChecked())
00087 config->writeEntry("Style", "ANSI");
00088 else if (Style_KR->isChecked())
00089 config->writeEntry("Style", "KR");
00090 else if (Style_Linux->isChecked())
00091 config->writeEntry("Style", "Linux");
00092 else if (Style_GNU->isChecked())
00093 config->writeEntry("Style", "GNU");
00094 else if (Style_JAVA->isChecked())
00095 config->writeEntry("Style", "JAVA");
00096
00097
00098 if (Fill_Tabs->isChecked())
00099 config->writeEntry("Fill", "Tabs");
00100 else
00101 config->writeEntry("Fill", "Spaces");
00102 config->writeEntry("FillSpaces", Fill_SpaceCount->value());
00103
00104
00105 config->writeEntry("IndentSwitches", Indent_Switches->isChecked());
00106 config->writeEntry("IndentCases", Indent_Cases->isChecked());
00107 config->writeEntry("IndentClasses", Indent_Classes->isChecked());
00108 config->writeEntry("IndentBrackets", Indent_Brackets->isChecked());
00109 config->writeEntry("IndentNamespaces", Indent_Namespaces->isChecked());
00110 config->writeEntry("IndentLabels", Indent_Labels->isChecked());
00111
00112
00113 config->writeEntry("MaxStatement", Continue_MaxStatement->value());
00114 config->writeEntry("MinConditional", Continue_MinConditional->value());
00115
00116
00117 if (Brackets_Break->isChecked())
00118 config->writeEntry("Brackets", "Break");
00119 else if (Brackets_Attach->isChecked())
00120 config->writeEntry("Brackets", "Attach");
00121 else
00122 config->writeEntry("Brackets", "Linux");
00123
00124
00125 config->writeEntry("PadParentheses", Pad_Parentheses->isChecked());
00126 config->writeEntry("PadOperators", Pad_Operators->isChecked());
00127
00128
00129 config->writeEntry("KeepStatements", Keep_Statements->isChecked());
00130 config->writeEntry("KeepBlocks", Keep_Blocks->isChecked());
00131
00132 config->sync();
00133 }
00134
00135
00136 void AStyleWidget::styleChanged(int id)
00137 {
00138 ConfigTabs->setTabEnabled(tab_2, id == 0);
00139 ConfigTabs->setTabEnabled(tab_3, id == 0);
00140
00141 StyleExample->clear();
00142
00143 switch (id)
00144 {
00145 case 0:
00146 break;
00147
00148 case 1:
00149 StyleExample->setText(""
00150 "namespace foospace\n"
00151 "{\n"
00152 " int Foo()\n"
00153 " {\n"
00154 " if (isBar)\n"
00155 " {\n"
00156 " bar();\n"
00157 " return 1;\n"
00158 " }\n"
00159 " else\n"
00160 " return 0;\n"
00161 " }\n"
00162 "}\n"
00163 "");
00164 break;
00165
00166 case 2:
00167 StyleExample->setText(""
00168 "namespace foospace {\n"
00169 " int Foo() {\n"
00170 " if (isBar) {\n"
00171 " bar();\n"
00172 " return 1;\n"
00173 " } else\n"
00174 " return 0;\n"
00175 " }\n"
00176 "}\n"
00177 "");
00178 break;
00179
00180 case 3:
00181 StyleExample->setText(""
00182 "namespace foospace\n"
00183 "{\n"
00184 " int Foo()\n"
00185 " {\n"
00186 " if (isBar) {\n"
00187 " bar();\n"
00188 " return 1;\n"
00189 " } else\n"
00190 " return 0;\n"
00191 " }\n"
00192 "}\n"
00193 "");
00194 break;
00195
00196 case 4:
00197 StyleExample->setText(""
00198 "namespace foospace\n"
00199 " {\n"
00200 " int Foo()\n"
00201 " {\n"
00202 " if (isBar)\n"
00203 " {\n"
00204 " bar();\n"
00205 " return 1;\n"
00206 " }\n"
00207 " else\n"
00208 " return 0;\n"
00209 " }\n"
00210 " }\n"
00211 "");
00212 break;
00213
00214 case 5:
00215 StyleExample->setText(""
00216 "class foospace {\n"
00217 " int Foo() {\n"
00218 " if (isBar) {\n"
00219 " bar();\n"
00220 " return 1;\n"
00221 " } else\n"
00222 " return 0;\n"
00223 " }\n"
00224 "}\n"
00225 "");
00226 }
00227 }
00228
00229
00230 #include "astyle_widget.moc"