/[svn]/gigedit/trunk/src/gigedit/scripteditor.h
ViewVC logotype

Contents of /gigedit/trunk/src/gigedit/scripteditor.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2897 - (show annotations) (download) (as text)
Sun May 1 20:20:06 2016 UTC (4 years, 8 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 2972 byte(s)
* Script Editor: Reverted previous commit regarding error/warning
  icons, since Gtk seems not to be appropriate for handling icons
  correctly that way.
* Script Editor: Show precise parser error/warning messages as tooltip
  when the mouse points over the respective location in the script's
  source code.
* Bumped version (1.0.0.svn9).

1 /*
2 Copyright (c) 2014-2016 Christian Schoenebeck
3
4 This file is part of "gigedit" and released under the terms of the
5 GNU General Public License version 2.
6 */
7
8 #ifndef GIGEDIT_SCRIPTEDITOR_H
9 #define GIGEDIT_SCRIPTEDITOR_H
10
11 #include <gig.h>
12 #include <gtkmm.h>
13 #include <config.h>
14 #include "compat.h"
15 #include "ManagedWindow.h"
16
17 // Should we use a very simple (and buggy) local NKSP syntax parser, or should
18 // we rather use the full features NKSP syntax highlighting backend from
19 // liblinuxsampler for syntax highlighting of this text editor?
20 #if HAVE_LINUXSAMPLER
21 # define USE_LS_SCRIPTVM 1
22 #endif
23
24 #if USE_LS_SCRIPTVM
25 # include <linuxsampler/scriptvm/ScriptVM.h>
26 # include <linuxsampler/scriptvm/ScriptVMFactory.h>
27 #endif
28
29 class ScriptEditor : public ManagedWindow {
30 public:
31 ScriptEditor();
32 ~ScriptEditor();
33 void setScript(gig::Script* script);
34
35 // implementation for abstract methods of interface class "ManagedWindow"
36 virtual Settings::Property<int>* windowSettingX() { return &Settings::singleton()->scriptEditorWindowX; }
37 virtual Settings::Property<int>* windowSettingY() { return &Settings::singleton()->scriptEditorWindowY; }
38 virtual Settings::Property<int>* windowSettingWidth() { return &Settings::singleton()->scriptEditorWindowW; }
39 virtual Settings::Property<int>* windowSettingHeight() { return &Settings::singleton()->scriptEditorWindowH; }
40
41 protected:
42 Gtk::VBox m_vbox;
43 Gtk::HButtonBox m_buttonBox;
44 Gtk::ScrolledWindow m_scrolledWindow;
45 Glib::RefPtr<Gtk::TextBuffer> m_textBuffer;
46 Glib::RefPtr<Gtk::TextBuffer::TagTable> m_tagTable;
47 Glib::RefPtr<Gtk::TextBuffer::Tag> m_keywordTag;
48 Glib::RefPtr<Gtk::TextBuffer::Tag> m_eventTag;
49 Glib::RefPtr<Gtk::TextBuffer::Tag> m_variableTag;
50 Glib::RefPtr<Gtk::TextBuffer::Tag> m_functionTag;
51 Glib::RefPtr<Gtk::TextBuffer::Tag> m_numberTag;
52 Glib::RefPtr<Gtk::TextBuffer::Tag> m_stringTag;
53 Glib::RefPtr<Gtk::TextBuffer::Tag> m_commentTag;
54 Glib::RefPtr<Gtk::TextBuffer::Tag> m_preprocTag;
55 Glib::RefPtr<Gtk::TextBuffer::Tag> m_errorTag;
56 Glib::RefPtr<Gtk::TextBuffer::Tag> m_warningTag;
57 Gtk::TextView m_textView;
58 Gtk::Button m_applyButton;
59 Gtk::Button m_cancelButton;
60
61 gig::Script* m_script;
62 #if USE_LS_SCRIPTVM
63 LinuxSampler::ScriptVM* m_vm;
64 std::vector<LinuxSampler::ParserIssue> m_issues;
65 #endif
66
67 void onButtonCancel();
68 void onButtonApply();
69 void onWindowHide();
70 void onTextInserted(const Gtk::TextBuffer::iterator& it, const Glib::ustring& txt, int length);
71 void onTextErased(const Gtk::TextBuffer::iterator& itStart, const Gtk::TextBuffer::iterator& itEnd);
72 void onModifiedChanged();
73 #if USE_LS_SCRIPTVM
74 void updateSyntaxHighlightingByVM();
75 void updateParserIssuesByVM();
76 LinuxSampler::ScriptVM* GetScriptVM();
77 void updateIssueTooltip(GdkEventMotion* e);
78 #endif
79 bool on_motion_notify_event(GdkEventMotion* e);
80 };
81
82 #endif // GIGEDIT_SCRIPTEDITOR_H

  ViewVC Help
Powered by ViewVC