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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2604 by schoenebeck, Sat Jun 7 22:34:31 2014 UTC revision 2903 by schoenebeck, Tue May 3 14:08:34 2016 UTC
# Line 1  Line 1 
1  /*  /*
2      Copyright (c) 2014 Christian Schoenebeck      Copyright (c) 2014-2016 Christian Schoenebeck
3            
4      This file is part of "gigedit" and released under the terms of the      This file is part of "gigedit" and released under the terms of the
5      GNU General Public License version 2.      GNU General Public License version 2.
# Line 10  Line 10 
10    
11  #include <gig.h>  #include <gig.h>
12  #include <gtkmm.h>  #include <gtkmm.h>
13    #include <config.h>
14  #include "compat.h"  #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 Gtk::Window {  class ScriptEditor : public ManagedWindow {
32  public:  public:
33      ScriptEditor();      ScriptEditor();
34     ~ScriptEditor();     ~ScriptEditor();
35      void setScript(gig::Script* script);      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:  protected:
47      Gtk::VBox m_vbox;      Gtk::VBox m_vbox;
48        Gtk::HBox m_footerHBox;
49        Gtk::HBox m_statusHBox;
50      Gtk::HButtonBox m_buttonBox;      Gtk::HButtonBox m_buttonBox;
51      Gtk::ScrolledWindow m_scrolledWindow;      Gtk::ScrolledWindow m_scrolledWindow;
52      Glib::RefPtr<Gtk::TextBuffer> m_textBuffer;      Glib::RefPtr<Gtk::TextBuffer> m_textBuffer;
53      Glib::RefPtr<Gtk::TextBuffer::TagTable> m_tagTable;      Glib::RefPtr<Gtk::TextBuffer::TagTable> m_tagTable;
54      Glib::RefPtr<Gtk::TextBuffer::Tag> m_keywordTag;      Glib::RefPtr<Gtk::TextBuffer::Tag> m_keywordTag;
55      Glib::RefPtr<Gtk::TextBuffer::Tag> m_eventTag;      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;      Gtk::TextView m_textView;
65        Gtk::Image m_statusImage;
66        Gtk::Label m_statusLabel;
67      Gtk::Button m_applyButton;      Gtk::Button m_applyButton;
68      Gtk::Button m_cancelButton;      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;      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();      void onButtonCancel();
87      void onButtonApply();      void onButtonApply();
88      void onWindowHide();      void onWindowHide();
89      void onTextInserted(const Gtk::TextBuffer::iterator& it, const Glib::ustring& txt, int length);      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);      void onTextErased(const Gtk::TextBuffer::iterator& itStart, const Gtk::TextBuffer::iterator& itEnd);
91      void onModifiedChanged();      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  #endif // GIGEDIT_SCRIPTEDITOR_H

Legend:
Removed from v.2604  
changed lines
  Added in v.2903

  ViewVC Help
Powered by ViewVC