1 2 /**************************************************************************** 3 ** 4 ** Copyright (C) 2011 Christian B. Huebschle & George M. Sheldrick 5 ** All rights reserved. 6 ** Contact: chuebsch@moliso.de 7 ** 8 ** This file is part of the ShelXle 9 ** 10 ** This file may be used under the terms of the GNU Lesser 11 ** General Public License version 2.1 as published by the Free Software 12 ** Foundation and appearing in the file COPYING included in the 13 ** packaging of this file. Please review the following information to 14 ** ensure the GNU Lesser General Public License version 2.1 requirements 15 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 16 ** 17 ** 18 ****************************************************************************/ 19 #ifndef WINDOW_H 20 #define WINDOW_H 21 #include <locale.h> 22 #include <QtGui> 23 #include <QtNetwork> 24 #include "chgl.h" 25 #include "highlighter.h" 26 #include "codeeditor.h" 27 #include "eacDlg.h" 28 #include "qpeakview.h" 29 #include "psewidget.h" 30 #include "dragdropatomsdlg.h" 31 #include "historywidget.h" 32 #include "savehistorywidget.h" 33 #include "fourxle.h" 34 #include "fcvsfo.h" 35 #include "itsme.h" 36 #ifndef nullptr 37 #define nullptr nullptr 38 #endif 39 #ifndef fmin 40 #define fmin(x, y) (((x) < (y)) ? (x) : (y)) 41 #endif 42 #if defined _MSC_VER && _MSC_VER == 1500 43 #define round(x) (x<0?ceil((x)-0.5):floor((x)+0.5)) 44 #endif 45 #undef vc7hack1 46 #ifdef _MSC_VER 47 #include <float.h> 48 #define std_isfinite _finite 49 #define vc7hack1 1 50 #else 51 #define std_isfinite std::isfinite 52 #endif 53 54 #ifndef FONTFAM 55 #if defined Q_WS_WIN || defined Q_OS_WIN 56 #define FONTFAM "Droid Sans Mono" 57 #elif defined Q_WS_MAC || defined Q_OS_MAC 58 #define FONTFAM "Monaco" 59 #else 60 #define FONTFAM "Droid Sans Mono" 61 #endif 62 #endif 63 64 #include "calculator.h" 65 #include "dsrgui.h" 66 #include "listfile.h" 67 #define SX_LINE_LENGTH 80 68 69 /*! \brief Window is the main window class of ShelXle most of the magic happens here ;-) 70 * 71 */ 72 73 class Window : public QMainWindow { 74 Q_OBJECT 75 public: 76 Window(); 77 virtual ~Window(); 78 //bool scroller; 79 static int Version();//!< This return the actual Revision 80 bool restraintsOrConstraints(); 81 int MaxNumberOfPeaks; programName()82 static QString programName(){return QString(PROGRAM_NAME);}//!<get the actual programname 83 ChGL *chgl; 84 QDockWidget *dock, *renamDock, *qPeakDock, *histDock; 85 QDockWidget *shxEditorDock,*shxOutputDock,*infotainmentDock; 86 QAction *enterRenameMode; 87 QAction *showQPeakLegend; 88 QAction *openAct; 89 QAction *screenshotAct; 90 QAction *objExport; 91 QAction *tubeStyle; 92 QAction *ballStyle; 93 QAction *separateLabelFile; 94 QAction *toggleOrthoView; 95 QAction *belocube; 96 QAction *actionUniq; 97 QAction *actionSearch; 98 QAction *actionNext; 99 QAction *actionPrev; 100 QAction *actionSave; 101 QAction *actionSaveAs; 102 QAction *actionUndo; 103 QAction *actionRedo; 104 QAction *actionCut; 105 QAction *actionCopy; 106 QAction *actionPaste; 107 QAction *actionQPeakLimit; 108 QAction *actionHFix; 109 QAction *wghtRefineAct; 110 QAction *actionEP; 111 QAction *actionEM; 112 QAction *togAtom; 113 QAction *togBond; 114 QAction *togLabel; 115 QAction *togUnit; 116 QAction *togElli; 117 QAction *togHBond; 118 QAction *togBackGr; 119 QAction *togDepthCueing; 120 QAction *killQs; 121 QAction *killHs; 122 QAction *astdlg; 123 QAction *equivHighlighting; 124 QAction *wghtAct; 125 QAction *sinaAct; 126 QAction *recalcSDM; 127 QAction *renamUpdateAct; 128 QAction *cntrPlot; 129 QAction *useNativeDlg; 130 QAction *darkTheme; 131 QAction *symmElementsAct; 132 QTextBrowser *brs; 133 QProcess *runffmpeg; 134 QLineEdit *ffmpegedt,*mp4file; 135 QString fffn; 136 QLabel *ffl; 137 QString oldFileName; 138 QProgressBar *bar; 139 QPushButton *closeFF ; 140 QDialog *extraOutput; 141 142 QToolBar *editToolBar,//!< Edit toolbar (redo undo copy cut and paste...) 143 *refineToolBar,//!< WGHTrefine, autoHFIX, +kill Hs, kill Qs, refine XL and anis refine 144 *bottomToolBar,//!< selection toolbar with context specific content. 145 *fito,//!< File toolbar 146 *vito,//!< View toolbar to toggle bonds atoms etc... 147 *extraTB; //!< External programs can be startet from here. 148 QMenu *runMenu;//!< the SHELX menu where you also run XL and do convientent stuff with the res file. 149 QMenu *fileMenu, //!< file menu including the save history 150 *editMenu, //!< standart edit menu 151 *dialogMenu, //!< settings menu 152 *viewMenu, //!< View menu 153 *packMenu, //!< Packing, growing, fusing etc... 154 *extraMenu;//!< add and start external programs... 155 QToolButton *zoomIn; 156 QToolButton *zoomOut; 157 QToolButton *homeMe; 158 QToolButton *quickReLoadButton; 159 QCheckBox *sr_same; 160 QCheckBox *sr_simu; 161 QCheckBox *sr_rigu; 162 bool notRefine; 163 int tbiconSize; 164 QHash<QString,QVariant> myHash;//!< This Hash connects recent file names with cursor positions. So that files are opened always at the same position. 165 QAction *refineAct; 166 QAction *refineActAnis; 167 QAction *refineActActa; 168 QAction *clearVoro; 169 FourXle *fxle;//!<The fourier map object. 170 // QList<V3> orte; 171 // QList<V3> normalen,nnn; 172 // QList<QColor> farben; 173 // int zoff,yoff,xoff; 174 // QList<int> sfac;//!<List of Scattering factors. 175 QList<double> fvar;//!<List of Free Variables. 176 QMap<int,int> fvarCntr;//!<Free Variable counter QMap. 177 bool isLabelInUse();//!< Checks if the current Label in the reaname dialog is in use. \returns true if Label is already in use. 178 QString dirName; //!< Full path of the currently opened file (including file name). 179 QString actionInfo; setFocus(bool b)180 void setFocus(bool b){focusSet=b;} isFocusSet()181 bool isFocusSet() {return focusSet;} 182 int getFvarCntr(int fvar);//!< returns the number of uses of a free variable. 183 int firstAtomLine; 184 int extraIndex; 185 bool finWasPressed; 186 QAction *ydleStart; 187 QAction *ydleStop; 188 QSpinBox *lpart; 189 QSpinBox *rpart; 190 191 signals: 192 void fileLoaded(void); 193 void pipeStatus(const QString& s); //!<changes the statusbar text to s @param s text for the status bar 194 void movedByUser(); 195 196 public slots: 197 void qinitres(); 198 void addNewScatteringFactor(int oz);//!<Adds a new scattering factor to the SFAC / UNIT list. 199 void addDissorderedMethyl();//!<Adds rotation dissordered hydroghen atoms to a R-C carbon atom. (methyl group) AFIX 127. 200 void addMethyl();//!<Adds hydroghen atoms to a R-C carbon atom. (methyl group) AFIX 137. 201 void addHydroxyl();//!<Adds hydroghen atoms to a O-X oxygen atom. (hydroxyl group) AFIX 148. 202 void addH43(); 203 void addH23(); 204 void addH93(); 205 void addH163(); 206 void addHnonplanarAminR2(); 207 void addHnonplanarAminR1(); 208 void addMoreQPeaks();//!<Creates Q-Peaks from the Fo-Fc map. 209 void adoptEditToolBar(bool b);//editToolbar is child of shxMW or the MainWindow 210 void aula();//!< Auto Labeling 211 void autoHFix();//!<Automatically adds H atoms and AFIX instructions to the file uses the Fo-Fc map. 212 void brwsIcon();//!< Select an alternative icon for external program 213 void changeFixes(int i);//!< Variable that should not be refined get a 10 added. 214 void changeEditorFont();//!<Changes the Editor font via an font dialog. 215 void changeElemetofLabel(const QString &pse);//!<NextLabel of rename mode consists of labelPSE labelIndex labelSuffix, this changes the LabelPSE to pse. @param pse next labelPSE. 216 void changeElement();//!<Changes the element of an atom (chgl->ImeanThisAtom) to an other scattering factor (acation->data) 217 void changeIconSize();//!<Changes the size of the tool bar icons. 218 void changeInvRad(double r); 219 void changePlaneTransparence(double t); 220 void changeQPeakLimit();//!<Maximum number of Q-peaks created by addMoreQPeaks 221 void changeIndexofLabel(const int i);//!<NextLabel of rename mode consists of labelPSE labelIndex labelSuffix, this changes the LabelIndex to pse. @param i next labelIndex. For i < 0 no number in label. 222 void changeLabelFont();//!<Changes the font of the on screen Labels of the atoms. 223 void changeResiPart();//!< change the resi or part of selected atoms. 224 void changeScalefactor();//!<Changes the screen shot scale factor. 225 void changeSuffixofLabel(const QString &fix);//!<NextLabel of rename mode consists of labelPSE labelIndex labelSuffix, this changes the labelSuffix @param fix next labelSuffix. 226 void checkForUpdates();//!<Checks via the internet if new versions of ShelXle are availabe. 227 void clipboardDataChanged();//!<Enables the paste action if something is in the clipboard. 228 void clearStructure(); 229 void closeEvent(QCloseEvent *event);//!<Tidys everything up and stores settings before closing the ShelXle app. 230 void configBeLos();//!< Configure BEDE LONE Objects style 231 void darkEdit(); 232 void brwsEPS(); 233 void everyPointOne(); 234 void everyAIM(); 235 void contourPlot(); 236 void nocontourPlot(); 237 void colorButtonDialog(); 238 void convergeWght();//!<Tries to refine until the wheighting scheme converges. 239 bool compareWGHTS(QString w1, QString w2, double tolerance = 0.001);//!<Compare 2 WGHT strings by value 240 void complete();//!<forces the display list to be updated. 241 void configureBottomToolbar();//!<Changes the look and feel and position of the Selection Tool Bar. 242 void copySymmMate();//!<copies the fractional coordinates of a symmetry generated part -n atom in the file. 243 void createCentroid();//!<creates a centroid dummy atom which can be used for restraints and measurements. 244 void deleteAllH();//!<Deletes all Hydrogen atoms and associated AFIX instructions. 245 void deleteAllQ();//!<Deletes all Q-Peaks. 246 void deleteSelectedAtoms();//!<Deletes all selected atoms. 247 void displayResiduals(XLOutputParser &lfo, QString s);//!<Displays the residuals from SHELXL in a clear way 248 int duplicates();//!<searches for identical labeled Atoms and add them to a list. 249 void editorIsVisible(bool);//!is Editor really visble 250 void effuenf();//!<F5 recalculates the display lists sets the focus to the openGL widget and raises it on top. 251 void expandAll();//!<Expands all contacts . 252 void extraSettings();//!<A dialog to add/edit exteral programs started from ShelXle with or without arguments. 253 void extraSettingsLast();//!<A dialog to add/edit exteral programs started from ShelXle with or without arguments. 254 void exportCoordinates();//!<Exports all visible atoms to an extra file. 255 void exportCC();//!< Export coordinates to computational chemistry program inputs like Gaussian or Turbomol 256 void exportFMaps(); 257 void fileNative(); 258 bool fileSave(bool spell=true, bool loadafter=true);//!<saves the editor content to the current file. @param spell disable spell checking during save @param loadafter disable reloading of file. 259 bool fileSaveAs();//!<Saves the editor content to a specified file. 260 void fillCell();//!<Uses symmetry until the unit cell box is full. 261 void showSearch();//!< shows the search and repleace for the editor. 262 void findNext();//!<Find next (F3) functionality of search and replace in the editor. 263 void findPrev();//!<Find previous functionality of search and replace in the editor. 264 void findInStructure(const QString &info);//!<the atom with the matching orgiginal line gets centered and selected.@param info original line content. 265 void openIncludeFile(const QString &info); 266 void finXL();//!Finish XL by name.fin 267 void fixIt();//!< Fix some parameters from being refined. 268 void foversusfc();//!< Shows a duialog to analyse and omit outlier reflections. 269 void fuse();//!< show only the asymetric unit. 270 void grossRC(const QString &text);//!< Capitalizes the text and sets the resiResiClass text to text @param text new text for resiResiClass. 271 void grow();//!< completes the molecule by symmetry. 272 void growQPeaks(bool qpg);//!< applies symmetrie operations used for the main structure also for the Q-Peaks. 273 void hereAreMyKeys(); 274 void hideToolz(bool b);//!< Hides all tool bars. 275 void hintLhide();//!< Hides a hint in the reaname mode for ever. 276 void idleRotStart(); 277 void idleRotStop(); 278 void incResiNr(); 279 void decResiNr(); 280 void infoKanalNews(const QString& s);//!< passes a string to the Info widget. @param s a new text for the info widget. 281 void inheritLabels();//!< opens an inherit labels dialog. 282 void insertSADI(int selected); //!< Insert SADI restraint into ins file 283 void insertTwin(); 284 void invert();//!< inverts the structure and changes ot the right enantiomorph space group. 285 // inline int Intersect( double& vm, double& vp ){ return vm*vp <= 0.0 && (vm<0.0 || vp<0.0); }//!< 286 void isUpToDate(QNetworkReply* antwort);//!< Interpretes the network reply for the check for updates (manual version) 287 void jnk();//!< Julian Henn and Kathrin Meindl frcatal dimension analisis 288 void jumpToAtom(int index);//!< if rename mode is visible the atom at index gets renamed if not the cursor of the editor is pointed to the specified atom. 289 void linkHelp();//!< Show a Link to the online help. 290 void loadAFile();//!< (re)loads the file specified in dirName. 291 void loadFile(QString fileName);//!< loads the file with the specified path the listfile is also loaded. @param fileName path to the res / ins file. 292 void load_sheldrick(QString fileName, QString &inhalt);//!< Loads a shelx file from a string. You have to take care that the file is valid beforehand. 293 bool quickReLoad(QString fn, QString &cont);//!< Updates a structure after refinement or save With keeping grow and hide states unchanged. If differences are to large false is returned 1/19/2021 294 void loadLst();//!< loads the .lst file if it exists. 295 void loadrefres();//!< loads the refinement results from the res file. 296 void loadThisFile();//!< loads a file from an QAction with path as Action data. 297 298 void makeVoro(); 299 void clearVoros(); 300 void moveSymmMate();//!< Moves the specified symmetry generated atom to the asymmetric unit. 301 void moveSymmMateSel();//!< Moves selected symmetry generated atoms to the asymmetric unit. 302 void obj(); 303 void omitRfl(); 304 void openFile();//!< Open res file dialog 305 void openRecentFile();//!< opens a recently used file 306 void openSaveHistory();//!< sows the save history dialog 307 void outputIsVisible(bool);//!< is Output really visble 308 void packInLimits();//!< Pack inside given limits (eg multiple unit cells) 309 // bool peakcomp(MyAtom &a1,MyAtom &a2); 310 void raiseTaff();// show visual refinement output 311 void raiseTaz();// show text refinement output 312 void redoRename();//!<if redo is clicked and it was a rename a rename is redone. 313 void removeExtra(QAbstractButton *button);//!<removes an external program from the menu / tool bar. 314 void renameRNchanged(int ii);//!< Residue Number of rename mode is changed to ii @param ii residue number. 315 void renameThisAtom();//!< The label of the specified atom is used to feed the inputs of rename mode and the latter is opened. 316 void renameThisAtom(int index);//!< specified atom is renamed as given by rename mode 317 void rename2ThisAtom(int index);//!< tries to find an apropriate H label 318 void renamUpdate(bool vis);//!<rename mode gets shown or hidden. @param vis visibitity of rename mode. 319 void replyFinished(QNetworkReply* antwort);//!<Interpretes the network reply for the check for updates (automatic version) 320 void resiSelectorCheck();//!<updates the 'Residue Finder' when the text cursor moves. 321 void rotd();//!< rotates down 322 void rotl();//!< rotates left 323 void rotr();//!< rotates right 324 void rotu();//!< rotates up 325 void rufmode();//!< new labels can not be duplicates if this mode is on 326 void runShelXL();//!< copies res to ins file and runs shelxl 327 void runExtra();//!< runs rexternal programs 328 void runXLWGHT();//!< runs shelxl for convergeWght. 329 void saveScene();//!< saves a srceen shot of the OpenGL widget 330 void savePovRay(); 331 void savePovInc(QString povName); 332 void sdm();//!< the shortest distance matrix is (re)calculated and the structure is grown 333 void selectInStructure(const QString &info);//!< selects all atoms found in selected text in the structure @params info seleted text. 334 void shredCIF();//!< runs shredcif and loads ins/res file 335 void selectParts();//!< selects atoms for 'Part Selector' 336 void setShelxlOptions();//!< sets path and command line options for ShelXl executable. 337 void setShelxlPath();//!< sets path for ShelXl executable 338 void setExtraPath();//!<sets path for an external program 339 void setDefaultPath();//!<when the first recent file does not exists then open dialog starts here 340 void selOmitG5(); 341 void selOmitG10(); 342 void updateExtraIcon();//!< redraws the icon preview 343 void sColorDLG(); 344 void setSDMLimit();//!< max atoms in au to skip sdm calculation 345 void setMonoQ(bool vis);//!<sets monochome modus for Q-Peaks to vis @param vis mochrome mode of Q-Peaks. 346 void shxActUpdate(bool vis);//!< the editor tool bar gets visible when the editor is visible. 347 void shxOPTUpdate(bool vis);//!< the editor tool bar gets visible when the editor is visible. 348 void sina();//!< ANIS backwards is SINA! makes specified, selected or all atoms isotrop again with uiso = 0.05 349 // void springSlider(); 350 void spellCheck();//!< a syntax check for the res file. 351 void closeSR(bool vis); 352 void splitRotate(); 353 QString strippedName(const QString &fullFileName);//!< the file name without the path is retrned \returns the filename without path. @param total file path. 354 void styleDialog();//!< Atom style dialog is shown. 355 void symmElements(bool b); 356 void symmetryManager();//!< a symmetry manager is shown 357 void testMerohedral(); 358 void toggDocWid(bool weg);//!< hides Text Windows 359 void toggleEQHighlighting(bool);//!< toggles higlighting of symmetry generated atoms. 360 void toggleFullScreen(); 361 void toggleHFSAO(bool on); 362 void togOMIT(bool b); 363 void togSop(bool b); 364 void togSel(bool b); 365 void toggleOrtho(bool ov);//!< toggles orthographic and perspective projection. 366 void undoRename();//!<if undo is clicked and it was a rename a rename is undone. 367 void uniq();//!< moves centers of gravity of all molecules into the unit cell box. !does not heal scrambled molecules! 368 void unique();//!< !does ?not? heal scrambled molecules! 369 void updateLabel();//!< the rename mode is updated 370 void updateLC();//!<updates the Lines and Columns display. 371 void updateRecentFileActions();//!<updates the recent file list 372 void updateScaleDlg();//!< recalculates scale factor with and heigth of the screen shot scale factor dialog 373 void updateSelectResi();//!< updates the ResiFinder ComboBox for each editor line starting with RESI a new item is issued . 374 void updateSM1();//!< for the symmetry manager dialog 375 void updateSM2();//!< for the symmetry manager dialog 376 void updateSM3(const QUrl link);//!< for the symmetry manager dialog 377 void updateSM4(QString s);//!< for the symmetry manager dialog 378 void updateStatusBar(const QString& s) ; //!<changes the statusbar text to s @param s text for the status bar 379 void updateTieFreeVar();//!< if the occupancy factor should be tied to a free variable the rename mode 380 void updateTwinTest(); 381 void updateXLput();//!< the output view for the shelxl run is updated 382 void updateExtraOutput();//!< the output view for the external program is updated. 383 void updateExtraSettings(int index);//!< the external programs dialog gets updated. 384 void updateExtraSettings();//!< the external programs dialog gets updated. 385 void wasDelete();//!< for undo redo fuctionality of atom deletion. 386 void worstReflections(); 387 void setFFMPEGEXE(); 388 void setMP4(); 389 void updateOutput(); 390 void makeRotMovi(); 391 void split(); 392 void notsplit(); 393 void wasRename();//!< for undo redo fuctionality of atom renameing. 394 void withdrawres();//!< discard the results of the refinement. Copies back the ins file to the res file and loads that. 395 void zoomin(); //!< zoomes in 396 void zoomout();//!< zoomes out 397 void calculator(); //!< A dialog to work with resolution and 1,3 distances via the angle 398 void create_DSRGui(); //!< A dialog for DSR 399 void insertDSRLine(QString dsrline, int position, QVector<int> previousLine); 400 void dsrClosed(); 401 void aboutXLE();//!<Shows the about dialog of ShelXle. 402 CEnvironment lonesome(QString s,int startNummer);//!< calculates LONE objects 403 void beloWriteCube();//bello braf! 404 static int isacommand(QString command); 405 void displayDisagreeableRestraints(); 406 void defineBarray(); 407 protected: 408 void paintEvent(QPaintEvent *event); 409 void moveEvent(QMoveEvent *event); 410 void dragEnterEvent(QDragEnterEvent *event); 411 void dropEvent(QDropEvent *event); 412 private: 413 bool focusSet; 414 bool fullscreen; 415 int wght_cycls; //!< Number of cycles during the wght refinement. 416 int ls_cycls; //!< Number of least-squares cycles during L.S. or CGLS refinement. 417 bool nowaste;// start labeling always at 1 418 QNetworkAccessManager *net; 419 QNetworkReply *reply; 420 V3 urs; 421 QString altText,popel;//popel is original line of old rotation center rotze 422 PSEWidget *psew; 423 QSpinBox *symmIntBx; 424 QSpinBox *symmXBx; 425 QSpinBox *symmYBx; 426 QSpinBox *symmZBx; 427 QSpinBox *symmFrgBx; 428 QLineEdit *prosaSymm; 429 QTimer prosaTimer; 430 QTextBrowser *OrtepCodesbrowser; 431 QLabel *shortestDistanceLabel; 432 QPushButton *willpse; 433 QPushButton *beloColorButton; 434 435 bool machPlatz,FehlerTeufel; 436 int hhh; 437 // QSlider *zoomer; 438 // QTimer *sliderTimer; 439 QSignalMapper *dsm; 440 HistoryWidget *hw; 441 double range,weight; 442 int falschAtom; 443 QCompleter *completer; 444 QString labelPSE,labelSuffix,nextLabel,title; 445 int labelIndex; 446 QLabel *nextNameL, *hintL; 447 QCheckBox *rufModeBox,*indexIncr; 448 QSpinBox *resiNrSpin; 449 QSpinBox *indexSpin; 450 QSpinBox *partSpin; 451 QSpinBox *spinSelectPart; 452 QCheckBox *inculdePartNull; 453 QCheckBox *selectPart; 454 QLabel *tieOccL; 455 QComboBox *tieType; 456 QLabel *tieFVNrL; 457 QSpinBox *tieFVNr; 458 QLabel *tieUsedL; 459 QDoubleSpinBox *tieFix; 460 QString FFTErrorString; 461 QComboBox *sufixBox; 462 QLineEdit *resiResiClass; 463 QComboBox *resiResiClassCB; 464 QPeakView *qpv; 465 CEnvironment undoAtom,redoAtom,deletedAtom,restoredAtom; 466 QList<int> undoAtomIndex,redoAtomIndex,gehtMichAn,gehtMichAn2; 467 int altursize; 468 int mode; 469 QMenu *recentFilesMenu,*stereoMenu,*moveMenu,*helpMenu,*sortMenu; 470 QActionGroup *stereoGroup,*tubeGroup,*sortGroup; 471 enum { MaxRecentFiles = 20 }; 472 QAction *recentFileActs[MaxRecentFiles]; 473 bool otherOpenFiles,doNotAnnoyMe; 474 Molecule mole; 475 QSpinBox *widthBox; 476 QSpinBox *heightBox; 477 QDoubleSpinBox *scalefBox; 478 QDoubleSpinBox *cStepBx; 479 QDialog *scalDlg; 480 QTextBrowser *infoKanal; 481 QRadioButton *pserbt[110]; 482 QGroupBox *sfacBox; 483 double scalePic; 484 QString saveName,fvarinfo; 485 QProcess *shelxl,*extraProc; 486 QTextEdit *extraOutPut; 487 CodeEditor *editor , *xlPutor; 488 QString shelxlPath, shelxlArgs; 489 bool useMyBArray; //! If set to true, the b-array is not automatically set by ShelXle 490 QStringList extraProgramNames,extraProgramPaths,extraOptions,extraExt2; 491 QList<Qt::CheckState> extraArguments,extraExtensions, extraDetach, extraResIns, extraOpenFileDialogBefore, extraIconOverlay; 492 QLineEdit *extraPath,*extraName,*extraAltExtEdit,*extraArgumentsEdit,*shxPath,*shxOptions; 493 QList<int> extraOverlayPointSize; 494 QSpinBox *iovlPointSize; 495 QComboBox *pgms; 496 QToolButton *extraFakeButton; 497 QString altExtraIconPath; 498 QStringList altExtraIconPaths; 499 QDockWidget *helpDock; 500 // QWebView *hilfe; 501 //QTextBrowser *hilfe; 502 QWidget *shx_group; 503 QMainWindow *shxMW; 504 QVBoxLayout *sss; 505 QVBoxLayout *hwl; 506 QHBoxLayout *nlt; 507 QGroupBox *renameBox ; 508 QVBoxLayout *rnla; 509 QLabel *nliL,*resiResiClassL,*resiNrSpinL,*partSpinL; 510 QHBoxLayout *sfacla; 511 QScrollArea *qsa,*qsa2; 512 QAction *zm_stereo, *pe_stereo, *xe_stereo, *an_stereo, *hw_stereo, *no_stereo; 513 QAction *fcvsfoAct, *calcAct, *dsrAct; 514 QAction *soact; 515 QString shredCIFPath; 516 QAction *backColor,*labelColor; 517 QVBoxLayout *lt; 518 QLabel *sLabel, *fvused; 519 QCheckBox *qGrowPeak,*search4duplicates; 520 QTimer *hidwillpse; 521 522 QLabel *indexL,*sufixL; 523 QLabel *scalwla, *scalhla, *scalsla, *header; 524 QDialogButtonBox *buttonBoxRN; 525 QHBoxLayout *indexla; 526 QStringList alpha; 527 QGridLayout *scalla; 528 //QHBoxLayout *slt2; 529 QVBoxLayout *vlt, *resid_layout; 530 QTextEdit *resid_label; //! display the refinement residuals 531 QTextEdit *restr_table; //! display the bad restraints 532 //RenderPlot *plot; 533 LstData listf_info; 534 QGroupBox *resid_gb; 535 QGroupBox *gp;QHBoxLayout *rhla,*rhla2; 536 QHBoxLayout *buttomLt; 537 QPushButton *showLst; 538 QIcon extraIcon; 539 QCheckBox *useArgument; 540 QCheckBox *omitExtension; 541 QCheckBox *detach; 542 QCheckBox *copyResIns; 543 QCheckBox *openFileDialogBefore; 544 QCheckBox *iconOverlay; 545 QSize ediSize; 546 QPoint ediPos; 547 QLabel *lineColumn; 548 QGroupBox *navibox,*refineButtonBox,*refineButtonBox2; 549 QPushButton *stoppRefinement,*finishRefinement; 550 QPushButton *loadRes; 551 QPushButton *withdraw; 552 QPushButton *pro7; 553 QPushButton *stoppRefinement2,*finishRefinement2;// this is for infotainment dock 554 QPushButton *loadRes2; 555 QPushButton *withdraw2; 556 QToolButton *spellCheckact,*spellCheckact2; 557 QSettings *vis_settings; 558 void shx_editor(QString filename);//16.10.2019: title is class glabal variable. no need to give it as parameter her 559 double getNumber(double v,const QList<double> fv,double uiso);//to be changed! 560 double getNumber(double v,const QList<double> fv,int idx,int &fixFlag);//to be changed! 561 MyAtom findOH(V3 donor, V3 acceptor,int dindex,QStringList alab); 562 bool maybeSave(); 563 bool maybeSave2(); 564 bool startFused; 565 Calculator *calcmenu; 566 DSRGui *dsr; 567 QString pngName;//output file of povray export 568 QScrollArea *qsaPNG ; 569 570 QList<bool> twinRedundant; 571 QList<bool> twinDone; 572 QDialog *twinDlg; 573 double rvalue2beat, wr2value2beat; 574 QVBoxLayout *twinvbl; 575 QGroupBox *twingpx; 576 QLabel *twinpatlab; 577 //QGroupBox *gpx =new QGroupBox("Posible twin laws for this structure:",twinDlg); 578 //QVBoxLayout *vbl = new QVBoxLayout(); 579 //QString selectedRestraintsAtoms(QString buffer, QList<MyAtom> selected, QString resiSpec, bool exclude_H=false); 580 581 }; 582 #endif 583 584