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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3737 - (hide annotations) (download) (as text)
Sat Feb 1 20:39:39 2020 UTC (4 years, 3 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 5461 byte(s)
* NKSP: Added support for managing script 'patch' variables for each
  instrument; added a dedicated "Script" tab on right-hand side of Gigedit's
  main window with a list view to manage these variables.

* Bumped version (1.1.1.svn14).

1 schoenebeck 2604 /*
2 schoenebeck 3736 Copyright (c) 2014-2020 Christian Schoenebeck
3 schoenebeck 2604
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 schoenebeck 3068 #ifdef LIBGIG_HEADER_FILE
12     # include LIBGIG_HEADER_FILE(gig.h)
13     #else
14     # include <gig.h>
15     #endif
16    
17 schoenebeck 3364 #ifdef GTKMM_HEADER_FILE
18     # include GTKMM_HEADER_FILE(gtkmm.h)
19     #else
20     # include <gtkmm.h>
21     #endif
22 schoenebeck 3068 #if HAVE_CONFIG_H
23     # include <config.h>
24     #endif
25 schoenebeck 2604 #include "compat.h"
26 schoenebeck 3364
27     #if USE_GTKMM_BUILDER
28     # include <gtkmm/builder.h>
29     #else
30     # include <gtkmm/uimanager.h> // deprecated in gtkmm >= 3.21.4
31     #endif
32    
33     #if USE_GLIB_ACTION
34     # include <giomm/simpleactiongroup.h>
35     #else
36     # include <gtkmm/actiongroup.h>
37     #endif
38    
39 schoenebeck 2893 #include "ManagedWindow.h"
40 schoenebeck 2604
41 schoenebeck 2886 // Should we use a very simple (and buggy) local NKSP syntax parser, or should
42 schoenebeck 2899 // we rather use the full featured NKSP syntax highlighting backend from
43 schoenebeck 2886 // liblinuxsampler for syntax highlighting of this text editor?
44     #if HAVE_LINUXSAMPLER
45     # define USE_LS_SCRIPTVM 1
46     #endif
47    
48     #if USE_LS_SCRIPTVM
49 schoenebeck 3068 # ifdef LIBLINUXSAMPLER_HEADER_FILE
50     # include LIBLINUXSAMPLER_HEADER_FILE(scriptvm/ScriptVM.h)
51     # include LIBLINUXSAMPLER_HEADER_FILE(scriptvm/ScriptVMFactory.h)
52 schoenebeck 3737 # include LIBLINUXSAMPLER_HEADER_FILE(common/optional.h)
53 schoenebeck 3068 # else
54     # include <linuxsampler/scriptvm/ScriptVM.h>
55     # include <linuxsampler/scriptvm/ScriptVMFactory.h>
56 schoenebeck 3737 # include <linuxsampler/common/optional.h>
57 schoenebeck 3068 # endif
58 schoenebeck 2886 #endif
59    
60 schoenebeck 2893 class ScriptEditor : public ManagedWindow {
61 schoenebeck 2604 public:
62     ScriptEditor();
63     ~ScriptEditor();
64     void setScript(gig::Script* script);
65 schoenebeck 2893
66 schoenebeck 2903 sigc::signal<void, gig::Script*> signal_script_to_be_changed;
67     sigc::signal<void, gig::Script*> signal_script_changed;
68    
69 schoenebeck 2893 // implementation for abstract methods of interface class "ManagedWindow"
70     virtual Settings::Property<int>* windowSettingX() { return &Settings::singleton()->scriptEditorWindowX; }
71     virtual Settings::Property<int>* windowSettingY() { return &Settings::singleton()->scriptEditorWindowY; }
72     virtual Settings::Property<int>* windowSettingWidth() { return &Settings::singleton()->scriptEditorWindowW; }
73     virtual Settings::Property<int>* windowSettingHeight() { return &Settings::singleton()->scriptEditorWindowH; }
74    
75 schoenebeck 2604 protected:
76 schoenebeck 3364 VBox m_vbox;
77     HBox m_footerHBox;
78     HBox m_statusHBox;
79     HButtonBox m_buttonBox;
80 schoenebeck 2604 Gtk::ScrolledWindow m_scrolledWindow;
81 schoenebeck 3364 HBox m_textViewHBox;
82 schoenebeck 3310 Glib::RefPtr<Gtk::TextBuffer> m_lineNrBuffer;
83 schoenebeck 2604 Glib::RefPtr<Gtk::TextBuffer> m_textBuffer;
84     Glib::RefPtr<Gtk::TextBuffer::TagTable> m_tagTable;
85     Glib::RefPtr<Gtk::TextBuffer::Tag> m_keywordTag;
86     Glib::RefPtr<Gtk::TextBuffer::Tag> m_eventTag;
87 schoenebeck 2886 Glib::RefPtr<Gtk::TextBuffer::Tag> m_variableTag;
88     Glib::RefPtr<Gtk::TextBuffer::Tag> m_functionTag;
89     Glib::RefPtr<Gtk::TextBuffer::Tag> m_numberTag;
90     Glib::RefPtr<Gtk::TextBuffer::Tag> m_stringTag;
91 schoenebeck 3736 Glib::RefPtr<Gtk::TextBuffer::Tag> m_patchTag;
92 schoenebeck 2886 Glib::RefPtr<Gtk::TextBuffer::Tag> m_commentTag;
93     Glib::RefPtr<Gtk::TextBuffer::Tag> m_preprocTag;
94 schoenebeck 2890 Glib::RefPtr<Gtk::TextBuffer::Tag> m_errorTag;
95     Glib::RefPtr<Gtk::TextBuffer::Tag> m_warningTag;
96 schoenebeck 3286 Glib::RefPtr<Gtk::TextBuffer::Tag> m_preprocCommentTag;
97 schoenebeck 3310 Glib::RefPtr<Gtk::TextBuffer::Tag> m_lineNrTag;
98 schoenebeck 3566 Glib::RefPtr<Gtk::TextBuffer::Tag> m_metricTag;
99     Glib::RefPtr<Gtk::TextBuffer::Tag> m_stdUnitTag;
100 schoenebeck 3310 Gtk::TextView m_lineNrView;
101     Gtk::TextView m_lineNrTextViewSpacer;
102 schoenebeck 2604 Gtk::TextView m_textView;
103 schoenebeck 2899 Gtk::Image m_statusImage;
104     Gtk::Label m_statusLabel;
105 schoenebeck 2604 Gtk::Button m_applyButton;
106     Gtk::Button m_cancelButton;
107    
108 schoenebeck 3364 #if GTKMM_MAJOR_VERSION > 3 || (GTKMM_MAJOR_VERSION == 3 && GTKMM_MINOR_VERSION >= 20)
109     Glib::RefPtr<Gtk::CssProvider> m_css;
110     #endif
111    
112 schoenebeck 2899 Glib::RefPtr<Gdk::Pixbuf> m_warningIcon;
113     Glib::RefPtr<Gdk::Pixbuf> m_errorIcon;
114     Glib::RefPtr<Gdk::Pixbuf> m_successIcon;
115    
116 schoenebeck 3364 #if USE_GLIB_ACTION
117     Glib::RefPtr<Gio::SimpleActionGroup> m_actionGroup;
118     #else
119 schoenebeck 2901 Glib::RefPtr<Gtk::ActionGroup> m_actionGroup;
120 schoenebeck 3364 #endif
121     #if USE_GTKMM_BUILDER
122     Glib::RefPtr<Gtk::Builder> m_uiManager;
123     #else
124 schoenebeck 2901 Glib::RefPtr<Gtk::UIManager> m_uiManager;
125 schoenebeck 3364 #endif
126 schoenebeck 2901
127 schoenebeck 2604 gig::Script* m_script;
128 schoenebeck 2886 #if USE_LS_SCRIPTVM
129     LinuxSampler::ScriptVM* m_vm;
130 schoenebeck 2896 std::vector<LinuxSampler::ParserIssue> m_issues;
131 schoenebeck 2899 std::vector<LinuxSampler::ParserIssue> m_errors;
132     std::vector<LinuxSampler::ParserIssue> m_warnings;
133 schoenebeck 3286 std::vector<LinuxSampler::CodeBlock> m_preprocComments;
134 schoenebeck 2886 #endif
135    
136 schoenebeck 2898 bool isModified() const;
137 schoenebeck 2604 void onButtonCancel();
138     void onButtonApply();
139     void onWindowHide();
140     void onTextInserted(const Gtk::TextBuffer::iterator& it, const Glib::ustring& txt, int length);
141     void onTextErased(const Gtk::TextBuffer::iterator& itStart, const Gtk::TextBuffer::iterator& itEnd);
142     void onModifiedChanged();
143 schoenebeck 2886 #if USE_LS_SCRIPTVM
144     void updateSyntaxHighlightingByVM();
145 schoenebeck 2890 void updateParserIssuesByVM();
146     LinuxSampler::ScriptVM* GetScriptVM();
147 schoenebeck 2897 void updateIssueTooltip(GdkEventMotion* e);
148 schoenebeck 2899 void updateStatusBar();
149 schoenebeck 2886 #endif
150 schoenebeck 2897 bool on_motion_notify_event(GdkEventMotion* e);
151 schoenebeck 3364 #if GTKMM_MAJOR_VERSION > 3 || (GTKMM_MAJOR_VERSION == 3 && (GTKMM_MINOR_VERSION > 91 || (GTKMM_MINOR_VERSION == 91 && GTKMM_MICRO_VERSION >= 2))) // GTKMM >= 3.91.2
152     bool onWindowDelete(Gdk::Event& e);
153     #endif
154     bool onWindowDeleteP(GdkEventAny* e);
155 schoenebeck 2956 void onMenuChangeFontSize();
156     int currentFontSize() const;
157     void setFontSize(int size, bool save);
158 schoenebeck 3310 void updateLineNumbers();
159 schoenebeck 2604 };
160    
161     #endif // GIGEDIT_SCRIPTEDITOR_H

  ViewVC Help
Powered by ViewVC