Widget / Macro

Run macros.

by ill_favors

HTML

<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<script src="http://www.chilipeppr.com/js/require.js"></script>
<div id="com-chilipeppr-widget-macro" class="panel panel-default">
    <div class="panel-heading">

        <span class="panel-title" data-toggle="popover">Macros</span>

        <div class="btn-group pull-right" style="margin-right:0;">
            <div class="dropdown">
                <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
                <ul class="dropdown-menu dropdown-menu-main xdropdown-menu-right" role="menu">
                    <li role="presentation" class="dropdown-header recent-files">Recent Macros</li>
                    <li><a href="javascript:" class="recent-file-delete"><span class="glyphicon glyphicon-trash"></span> Clear Macros</a></li>
                    
                </ul>
            </div>
        </div>
        
        <div class="btn-toolbar pull-right" role="toolbar" style="margin-right:6px;">

            <div class="btn-group">
                <div class="dropdown">
                    <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown">Startup <span class="caret"></span></button>
                    <ul class="dropdown-menu" role="menu">
                        <li role="presentation" class="dropdown-header">Startup Macro (Add ?nostartup=true to URL to bypass)</li>
                        <li><a href="javascript:" class="com-chilipeppr-widget-macro-startup-load">Edit the Startup Macro</a></li>
                        <li><a href="javascript:" class="com-chilipeppr-widget-macro-startup-save">Save the Startup Macro</a></li>
                        <!-- <li role="presentation" class="divider com-chilipeppr-widget-macro-startup-save"></li> -->
                    </ul>
                </div>
                
            </div>
            
   ...

CSS

.lastModifyDate {
    color: silver;
}
#com-chilipeppr-widget-macro-body {
  
    padding:0;
}
#com-chilipeppr-widget-macro-body textarea {
     overflow: auto;
     width:100%;
    height:100%;
}
#com-chilipeppr-widget-macro-ftr {
    font-size:11px;
    padding:0;
    margin:0;
     overflow: auto;
}
#com-chilipeppr-widget-macro-status {
    overflow: auto;
    max-height:30px;
    background:none;
    background-color:#f5f5f5;
    border:none;
}

JavaScript

// Test this element. This code is auto-removed by the chilipeppr.load()
cprequire_test(["inline:com-chilipeppr-widget-macro"], function (macro) {
    console.log("test running of " + macro.id);
    macro.init();
        
} /*end_test*/ );


cpdefine("inline:com-chilipeppr-widget-macro", ["chilipeppr_ready"], function () {
    
    return {
        id: "com-chilipeppr-widget-macro",
        url: "http://fiddle.jshell.net/chilipeppr/ZJ5vV/show/light/",
        fiddleurl: "http://jsfiddle.net/chilipeppr/ZJ5vV/",
        name: "Widget / Macro",
        desc: "Run Javascript macros.",
        publish: {
        },
        subscribe: {},
        foreignPublish: {
        },
        foreignSubscribe: {
        },
        jscript: null, // contains the javascript macro that the user is working with
        init: function () {

            this.forkSetup();
            
            $('.com-chilipeppr-widget-macro-run').click(this.runMacro.bind(this));
            
            // saveMacro
            $('.com-chilipeppr-widget-macro-save').click(this.saveMacro.bind(this));
            
            // setup del files
            $('#com-chilipeppr-widget-macro .recent-file-delete').click( this.deleteRecentFiles.bind(this));

            this.buildRecentFileMenu();
            
            // make this object available in global namespace
            window['macro'] = this;
            console.log("made macro obj (this) available in global namepace so you can call macro.status(), etc:", macro);
            
            // capture ctrl+enter on textarea
            $('.com-chilipeppr-widget-macro-jscript').keypress(this.jscriptKeypress.bind(this));
            
            // samples
            this.setupSamples();
            
            this.makeTextareaAcceptTabs();
            
            // popovers
            $('#com-chilipeppr-widget-macro .panel-heading .btn').popover();
            
            // see if startup script
            this.setupStartup();
          ...