projectoptions.ui.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /****************************************************************************
  2. ** ui.h extension file, included from the uic-generated form implementation.
  3. **
  4. ** If you want to add, delete, or rename functions or slots, use
  5. ** Qt Designer to update this file, preserving your code.
  6. **
  7. ** You should not define a constructor or destructor in this file.
  8. ** Instead, write your code in functions called init() and destroy().
  9. ** These will automatically be called by the form's constructor and
  10. ** destructor.
  11. *****************************************************************************/
  12. #include <qaccel.h>
  13. #include <kmessagebox.h>
  14. #include <kurl.h>
  15. #include "tpr.h"
  16. extern tprSettings settings;
  17. #define UnwrapLabel(theQLabel) ((theQLabel)->setAlignment((theQLabel)->alignment()&~WordBreak))
  18. //Qt automatically sets RichText labels to have word wrap, which makes labels with underlines in them look bad. This simply undoes the wrapping.
  19. //accelerators that need to be destroyed at the end
  20. QAccel *altO;
  21. QAccel *altC;
  22. void ProjectOptions::init()
  23. {
  24. Boolean isregular;
  25. //Qt automatically sets QLabels to wrapped when they are RichText. This undoes this change.
  26. UnwrapLabel(LOncalcVariableName_1);
  27. UnwrapLabel(LOncalcVariableName_2);
  28. //Toggle controls to match settings.
  29. //Tab: General
  30. OncalcVariableName_1->setText(settings.data_var);
  31. if (settings.copy_data_var)
  32. {
  33. if (settings.copy_data_var_arc)
  34. CreateCopyIfArchived->toggle();
  35. else
  36. CreateCopyAlways->toggle();
  37. }
  38. OncalcVariableName_2->setText(settings.pack_name);
  39. isregular=TRUE;
  40. if (settings.fargo)
  41. FargoProgram->toggle(),isregular=FALSE;
  42. if (settings.flash_os)
  43. FlashOperatingSystem->toggle(),isregular=FALSE;
  44. if (settings.archive)
  45. FunctionArchive->toggle(),isregular=FALSE;
  46. if (isregular)
  47. {
  48. if (settings.use_data_var)
  49. {
  50. ExternalDataVariable->toggle();
  51. LOncalcVariableName_1->setEnabled(TRUE);
  52. OncalcVariableName_1->setEnabled(TRUE);
  53. LCreateCopyNever->setEnabled(TRUE);
  54. CreateCopyNever->setEnabled(TRUE);
  55. CreateCopyIfArchived->setEnabled(TRUE);
  56. CreateCopyAlways->setEnabled(TRUE);
  57. }
  58. if (settings.pack)
  59. {
  60. CompressProgram->toggle();
  61. LOncalcVariableName_2->setEnabled(TRUE);
  62. OncalcVariableName_2->setEnabled(TRUE);
  63. }
  64. }
  65. else
  66. {
  67. ExternalDataVariable->setEnabled(FALSE);
  68. CompressProgram->setEnabled(FALSE);
  69. }
  70. //Update stuff
  71. CheckOncalcNames();
  72. UpdateVisibilities();
  73. //Create accelerators for text boxes manually
  74. altO=new QAccel(PO_TabWidget->page(0));
  75. altO->connectItem(altO->insertItem(ALT+Key_O),OncalcVariableName_1,SLOT(setFocus()));
  76. altC=new QAccel(PO_TabWidget->page(0));
  77. altC->connectItem(altC->insertItem(ALT+Key_C),OncalcVariableName_2,SLOT(setFocus()));
  78. }
  79. void ProjectOptions::destroy()
  80. {
  81. delete(altO);
  82. delete(altC);
  83. if (result()!=QDialog::Accepted)
  84. return;
  85. //Save settings
  86. //Tab: General
  87. settings.fargo=FALSE;
  88. settings.flash_os=FALSE;
  89. settings.archive=FALSE;
  90. settings.use_data_var=FALSE;
  91. settings.pack=FALSE;
  92. if (FargoProgram->isOn())
  93. settings.fargo=TRUE;
  94. else if (FlashOperatingSystem->isOn())
  95. settings.flash_os=TRUE;
  96. else if (FunctionArchive->isOn())
  97. settings.archive=TRUE;
  98. else if (RegularProgram->isOn()) //the original TIGCC IDE automatically unchecked External data variable and Compress program when you toggled away from Regular Program, so we will only consider these two if Regular Program is toggled
  99. {
  100. if (ExternalDataVariable->isOn())
  101. settings.use_data_var=TRUE;
  102. if (CompressProgram->isOn())
  103. settings.pack=TRUE;
  104. }
  105. //Subselections for External data variable and Compress program are always preserved.
  106. settings.data_var=OncalcVariableName_1->text();
  107. settings.copy_data_var_arc=FALSE;
  108. if (CreateCopyNever->isOn())
  109. settings.copy_data_var=FALSE;
  110. else
  111. {
  112. settings.copy_data_var=TRUE;
  113. if (CreateCopyIfArchived->isOn())
  114. settings.copy_data_var_arc=TRUE;
  115. }
  116. settings.pack_name=OncalcVariableName_2->text();
  117. }
  118. void ProjectOptions::RegularProgramToggle()
  119. {
  120. int state;
  121. state=RegularProgram->isOn()?TRUE:FALSE;
  122. if (!state)
  123. {
  124. if (ExternalDataVariable->isOn())
  125. ExternalDataVariable->toggle();
  126. if (CompressProgram->isOn())
  127. CompressProgram->toggle();
  128. }
  129. ExternalDataVariable->setEnabled(state);
  130. CompressProgram->setEnabled(state);
  131. ExternalDataVariableToggle();
  132. CompressProgramToggle();
  133. }
  134. void ProjectOptions::ExternalDataVariableToggle()
  135. {
  136. int state;
  137. state=ExternalDataVariable->isOn()?TRUE:FALSE;
  138. LOncalcVariableName_1->setEnabled(state);
  139. OncalcVariableName_1->setEnabled(state);
  140. LCreateCopyNever->setEnabled(state);
  141. CreateCopyNever->setEnabled(state);
  142. CreateCopyIfArchived->setEnabled(state);
  143. CreateCopyAlways->setEnabled(state);
  144. CheckOncalcNames();
  145. }
  146. void ProjectOptions::CompressProgramToggle()
  147. {
  148. int state;
  149. state=CompressProgram->isOn()?TRUE:FALSE;
  150. LOncalcVariableName_2->setEnabled(state);
  151. OncalcVariableName_2->setEnabled(state);
  152. CheckOncalcNames();
  153. }
  154. void ProjectOptions::CheckOncalcNames()
  155. {
  156. const QString &edvname=OncalcVariableName_1->text();
  157. const QString &compname=OncalcVariableName_2->text();
  158. Boolean edvon=OncalcVariableName_1->isEnabled();
  159. Boolean compon=OncalcVariableName_2->isEnabled();
  160. if ((edvon&&edvname.isEmpty()) || (compon&&compname.isEmpty()) || (edvon&&compon&&!edvname.compare(compname)))
  161. {
  162. buttonOk->setEnabled(FALSE);
  163. }
  164. else
  165. {
  166. buttonOk->setEnabled(TRUE);
  167. }
  168. }
  169. void ProjectOptions::UpdateVisibilities()
  170. {
  171. Boolean regularprogram=RegularProgram->isOn();
  172. Boolean functionarchive=FunctionArchive->isOn();
  173. if (regularprogram)
  174. ProgramOptions->show();
  175. else
  176. ProgramOptions->hide();
  177. PO_TabWidget->setTabEnabled(PO_TabWidget->page(2),!functionarchive);
  178. PO_TabWidget->setTabEnabled(PO_TabWidget->page(3),!functionarchive);
  179. }