/[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 2903 - (show annotations) (download) (as text)
Tue May 3 14:08:34 2016 UTC (7 years, 11 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3712 byte(s)
* Script Editor: altered keyboard shortcut Ctrl-X to Ctrl-Q (to avoid
  masking the common cut text shortcut).
* Script Editor: if editor is used in live-mode, inform the sampler that
  it needs to automatically reload the script after the script has been
  altered and applied with the script editor.
* Bumped version (1.0.0.svn13).

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 <gtkmm/uimanager.h>
16 #include <gtkmm/actiongroup.h>
17 #include "ManagedWindow.h"
18
19 // Should we use a very simple (and buggy) local NKSP syntax parser, or should
20 // we rather use the full featured NKSP syntax highlighting backend from
21 // liblinuxsampler for syntax highlighting of this text editor?
22 #if HAVE_LINUXSAMPLER
23 # define USE_LS_SCRIPTVM 1
24 #endif
25
26 #if USE_LS_SCRIPTVM
27 # include <linuxsampler/scriptvm/ScriptVM.h>
28 # include <linuxsampler/scriptvm/ScriptVMFactory.h>
29 #endif
30
31 class ScriptEditor : public ManagedWindow {
32 public:
33 ScriptEditor();
34 ~ScriptEditor();
35 void setScript(gig::Script* script);
36
37 sigc::signal<void, gig::Script*> signal_script_to_be_changed;
38 sigc::signal<void, gig::Script*> signal_script_changed;
39
40 // implementation for abstract methods of interface class "ManagedWindow"
41 virtual Settings::Property<int>* windowSettingX() { return &Settings::singleton()->scriptEditorWindowX; }
42 virtual Settings::Property<int>* windowSettingY() { return &Settings::singleton()->scriptEditorWindowY; }
43 virtual Settings::Property<int>* windowSettingWidth() { return &Settings::singleton()->scriptEditorWindowW; }
44 virtual Settings::Property<int>* windowSettingHeight() { return &Settings::singleton()->scriptEditorWindowH; }
45
46 protected:
47 Gtk::VBox m_vbox;
48 Gtk::HBox m_footerHBox;
49 Gtk::HBox m_statusHBox;
50 Gtk::HButtonBox m_buttonBox;
51 Gtk::ScrolledWindow m_scrolledWindow;
52 Glib::RefPtr<Gtk::TextBuffer> m_textBuffer;
53 Glib::RefPtr<Gtk::TextBuffer::TagTable> m_tagTable;
54 Glib::RefPtr<Gtk::TextBuffer::Tag> m_keywordTag;
55 Glib::RefPtr<Gtk::TextBuffer::Tag> m_eventTag;
56 Glib::RefPtr<Gtk::TextBuffer::Tag> m_variableTag;
57 Glib::RefPtr<Gtk::TextBuffer::Tag> m_functionTag;
58 Glib::RefPtr<Gtk::TextBuffer::Tag> m_numberTag;
59 Glib::RefPtr<Gtk::TextBuffer::Tag> m_stringTag;
60 Glib::RefPtr<Gtk::TextBuffer::Tag> m_commentTag;
61 Glib::RefPtr<Gtk::TextBuffer::Tag> m_preprocTag;
62 Glib::RefPtr<Gtk::TextBuffer::Tag> m_errorTag;
63 Glib::RefPtr<Gtk::TextBuffer::Tag> m_warningTag;
64 Gtk::TextView m_textView;
65 Gtk::Image m_statusImage;
66 Gtk::Label m_statusLabel;
67 Gtk::Button m_applyButton;
68 Gtk::Button m_cancelButton;
69
70 Glib::RefPtr<Gdk::Pixbuf> m_warningIcon;
71 Glib::RefPtr<Gdk::Pixbuf> m_errorIcon;
72 Glib::RefPtr<Gdk::Pixbuf> m_successIcon;
73
74 Glib::RefPtr<Gtk::ActionGroup> m_actionGroup;
75 Glib::RefPtr<Gtk::UIManager> m_uiManager;
76
77 gig::Script* m_script;
78 #if USE_LS_SCRIPTVM
79 LinuxSampler::ScriptVM* m_vm;
80 std::vector<LinuxSampler::ParserIssue> m_issues;
81 std::vector<LinuxSampler::ParserIssue> m_errors;
82 std::vector<LinuxSampler::ParserIssue> m_warnings;
83 #endif
84
85 bool isModified() const;
86 void onButtonCancel();
87 void onButtonApply();
88 void onWindowHide();
89 void onTextInserted(const Gtk::TextBuffer::iterator& it, const Glib::ustring& txt, int length);
90 void onTextErased(const Gtk::TextBuffer::iterator& itStart, const Gtk::TextBuffer::iterator& itEnd);
91 void onModifiedChanged();
92 #if USE_LS_SCRIPTVM
93 void updateSyntaxHighlightingByVM();
94 void updateParserIssuesByVM();
95 LinuxSampler::ScriptVM* GetScriptVM();
96 void updateIssueTooltip(GdkEventMotion* e);
97 void updateStatusBar();
98 #endif
99 bool on_motion_notify_event(GdkEventMotion* e);
100 bool onWindowDelete(GdkEventAny* e);
101 };
102
103 #endif // GIGEDIT_SCRIPTEDITOR_H

  ViewVC Help
Powered by ViewVC