musredit 1.0.0
Loading...
Searching...
No Matches
PTextEdit.cpp File Reference

Implementation of the main window class for musredit. More...

#include <iostream>
#include <fstream>
#include <QString>
#include <QStringList>
#include <QTextEdit>
#include <QStatusBar>
#include <QAction>
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QTabWidget>
#include <QApplication>
#include <QFontDatabase>
#include <QComboBox>
#include <QLineEdit>
#include <QFileInfo>
#include <QFile>
#include <QFileDialog>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QColorDialog>
#include <QPainter>
#include <QMessageBox>
#include <QDialog>
#include <QTextCursor>
#include <QTextBlock>
#include <QTextDocumentFragment>
#include <QTextList>
#include <QProcess>
#include <QFileSystemWatcher>
#include <QDesktopServices>
#include <QUrl>
#include <QRegularExpression>
#include <QElapsedTimer>
#include <QThread>
#include <QtDebug>
#include "PTextEdit.h"
#include "PSubTextEdit.h"
#include "PAdmin.h"
#include "PFindDialog.h"
#include "PReplaceDialog.h"
#include "PReplaceConfirmationDialog.h"
#include "PFitOutputHandler.h"
#include "PDumpOutputHandler.h"
#include "PPrefsDialog.h"
#include "PGetMusrFTOptionsDialog.h"
#include "PMusrEditAbout.h"
#include "PMsr2DataDialog.h"
Include dependency graph for PTextEdit.cpp:

Go to the source code of this file.

Detailed Description

Implementation of the main window class for musredit.

This file provides the complete implementation of the PTextEdit class which serves as the main application window for musredit. It handles all user interactions including file operations, text editing, menu and toolbar actions, dialog management, external process execution, and integration with the musrfit analysis framework.

Key Implementation Areas:

  • Menu and Toolbar Setup: Configures all application menus (File, Edit, Text, Musr, Help) with appropriate icons, shortcuts, and signal-slot connections. Theme-aware icon selection supports both light and dark modes.
  • File Operations: Implements new file creation, opening, saving, closing, printing, and recent file tracking. Includes save-before-close prompts and file system change monitoring.
  • Text Editing: Provides comprehensive editing operations including undo/ redo, cut/copy/paste, select all, comment/uncomment, and font management.
  • Find and Replace: Implements full-featured search with options for case sensitivity, whole word matching, search direction, and scope (selection or entire document). Replace operations support interactive confirmation or batch processing.
  • MSR File Block Insertion: Delegates to PSubTextEdit for dialog-based insertion of all msr file block types (FITPARAMETER, THEORY, FUNCTIONS, RUN, COMMANDS, FOURIER, PLOT, STATISTIC).
  • External Tool Integration: Spawns and manages external processes:
    • musrfit: Fitting engine execution with output capture
    • musrview: Data visualization
    • musrWiz: Interactive msr file creation wizard
    • musrT0: Timing parameter determination
    • musrStep: Step size configuration
    • msr2data: Batch data conversion
    • mupp: Parameter evolution plotting
  • Tab Management: Implements multi-document interface with tab creation, switching, reordering, and closing. Maintains filename associations and tracks modification state for each tab.
  • File System Monitoring: Uses QFileSystemWatcher to detect external changes to open files, prompting user to reload when modifications occur.
  • Theme Detection: Automatically detects system theme (light/dark) and selects appropriate icon variants for optimal visibility.
  • Configuration Persistence: Loads and saves application settings via PAdmin including fonts, window dimensions, default paths, recent files, and theme preferences.
Author
Andreas Suter
Date
2010-2026
See also
PTextEdit.h for class interface documentation
PSubTextEdit for the text editor widget implementation
PAdmin for configuration management

Definition in file PTextEdit.cpp.