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();
...