view gui/src/editor/FileEditorTab.h @ 14690:ca733a66be7a gui

Fixed bug with not opening the editor when clicking a file from the file browser. Implemented watching the file on disk. * MainWindow: Simplified opening file request calls. * FileEditor: Added new slot that closes tabs without and index and made FileEditorTabs connect to it. * FileEditorTab: Added QFileSystemWatcher and fixed bug with setting modified status on m_modified. Implemented message boxes for the cases that a file has been removed, renamed und modified from outside.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Fri, 25 May 2012 23:56:31 +0200
parents 628eeaf879f7
children c952f1e35e50
line wrap: on
line source

/* OctaveGUI - A graphical user interface for Octave
 * Copyright (C) 2011 Jacob Dawid (jacob.dawid@googlemail.com)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef FILEEDITORTAB_H
#define FILEEDITORTAB_H

#include <Qsci/qsciscintilla.h>
#include <QWidget>
#include <QCloseEvent>
#include <QFileSystemWatcher>

class FileEditor;
class FileEditorTab : public QWidget
{
  Q_OBJECT
public:
  FileEditorTab (FileEditor *fileEditor);
  bool copyAvailable ();

public slots:
  void newTitle(bool modified);
  void handleCopyAvailable(bool enableCopy);
  void handleMarginClicked (int line, int margin, Qt::KeyboardModifiers state);
  void commentSelectedText ();
  void uncommentSelectedText ();
  void removeBookmark ();
  void toggleBookmark ();
  void nextBookmark ();
  void previousBookmark ();
  void cut ();
  void copy ();
  void paste ();
  void undo ();
  void redo ();

  void setModified (bool modified);

  bool openFile();
  void loadFile (QString fileName);
  void newFile ();
  bool saveFile ();
  bool saveFile(QString saveFileName);
  bool saveFileAs();
  void runFile ();

  void fileHasChanged (QString fileName);

signals:
  void fileNameChanged (QString fileName);
  void editorStateChanged ();
  void closeRequest ();

protected:
  void closeEvent (QCloseEvent *event);
  void setFileName (QString fileName);

private:
  void updateTrackedFile ();
  int checkFileModified (QString msg, int cancelButton);
  void doCommentSelectedText (bool comment);

  FileEditor *m_fileEditor;
  QsciScintilla *m_editArea;

  QString m_fileName;
  QString m_fileNameShort;

  bool m_longTitle;
  bool m_copyAvailable;

  QFileSystemWatcher m_fileSystemWatcher;
};

#endif // FILEEDITORTAB_H