Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

FS#444 Macro recording/deleting improvement

  • Loading branch information...
commit c8c663e0ba23c3e408eaebea4dd9a873df0ba732 1 parent 4b1dc52
@vershov vershov authored
View
14 src/EditorFrame.cpp
@@ -247,6 +247,7 @@ BEGIN_EVENT_TABLE(EditorFrame, wxFrame)
EVT_MENU(MENU_MACRO_REC, EditorFrame::OnMenuMacroRec)
EVT_MENU(MENU_MACRO_PLAY, EditorFrame::OnMenuMacroPlay)
EVT_MENU(MENU_MACRO_EDIT, EditorFrame::OnMenuMacroEdit)
+ EVT_MENU(MENU_MACRO_CONTINUE, EditorFrame::OnMenuMacroContinue)
// Dynamic sub-menus
EVT_MENU_RANGE(1000, 1999, EditorFrame::OnSubmenuSyntax)
@@ -845,6 +846,7 @@ wxMenu* EditorFrame::GetBundleMenu() {
wxMenu *macroMenu = new wxMenu;
macroMenu->Append(MENU_MACRO_REC, _("&Start Recording"), _("Start Recording"));
+ macroMenu->Append(MENU_MACRO_CONTINUE, _("&Continue Recording"), _("Continue Macro recording"));
macroMenu->Append(MENU_MACRO_PLAY, _("&Play Macro"), _("Play Macro"));
macroMenu->Append(MENU_MACRO_EDIT, _("&Edit Macro"), _("Edit Macro"), wxITEM_CHECK);
@@ -2272,6 +2274,10 @@ void EditorFrame::OnOpeningMenu(wxMenuEvent& WXUNUSED(event)) {
if (m_macro.IsRecording()) macroRec->SetItemLabel(_("&Stop Recording"));
else macroRec->SetItemLabel(_("&Start Recording"));
}
+ wxMenuItem* macroCont = GetMenuBar()->FindItem(MENU_MACRO_CONTINUE);
+ if (macroCont) {
+ macroCont->Enable(!m_macro.IsRecording() && !m_macro.IsEmpty());
+ }
// We handle key events on our own, so disable accels (from menus)
//SetAcceleratorTable(wxNullAcceleratorTable);
@@ -2329,6 +2335,14 @@ void EditorFrame::OnMenuBundleAction(wxCommandEvent& event) {
}
void EditorFrame::OnMenuMacroRec(wxCommandEvent& WXUNUSED(event)) {
+ if (!m_macro.IsRecording()) {
+ // clean before start recording
+ m_macro.Clear();
+ }
+ m_macro.ToogleRecording();
+}
+
+void EditorFrame::OnMenuMacroContinue(wxCommandEvent& WXUNUSED(event)) {
m_macro.ToogleRecording();
}
View
6 src/EditorFrame.h
@@ -39,7 +39,6 @@
#include "IOpenTextmateURL.h"
#include "ITabPage.h"
-
class EditorCtrl;
struct EditorChangeState;
class ProjectPane;
@@ -182,7 +181,8 @@ class EditorFrame : public KeyHookable<wxFrame>,
MENU_MACRO_FUNCTIONS,
MENU_MACRO_REC,
MENU_MACRO_PLAY,
- MENU_MACRO_EDIT
+ MENU_MACRO_EDIT,
+ MENU_MACRO_CONTINUE
};
EditorFrame(CatalystWrapper cat, unsigned int frameId, const wxString& title, const wxRect& rect, TmSyntaxHandler& syntax_handler);
@@ -462,7 +462,7 @@ class EditorFrame : public KeyHookable<wxFrame>,
void OnMenuMacroRec(wxCommandEvent& event);
void OnMenuMacroPlay(wxCommandEvent& event);
void OnMenuMacroEdit(wxCommandEvent& event);
-
+ void OnMenuMacroContinue(wxCommandEvent& event);
void OnMenuKeyDiagnostics(wxCommandEvent& event);
void OnTabsShowDropdown(wxCommandEvent& event);
void OnEraseBackground(wxEraseEvent& event);
View
97 src/MacroPane.cpp
@@ -16,6 +16,18 @@
#include "EditorFrame.h"
#include <wx/artprov.h>
+// Icons
+#include "images/macropane/play_active.xpm"
+#include "images/macropane/stop_active.xpm"
+#include "images/macropane/delete_active.xpm"
+#include "images/macropane/delete_disabled.xpm"
+#include "images/macropane/save_active.xpm"
+#include "images/macropane/save_disabled.xpm"
+#include "images/macropane/arrow_up_active.xpm"
+#include "images/macropane/arrow_up_disabled.xpm"
+#include "images/macropane/arrow_down_active.xpm"
+#include "images/macropane/arrow_down_disabled.xpm"
+
// Ctrl id's
enum {
ID_CMDLIST = 100,
@@ -42,20 +54,43 @@ END_EVENT_TABLE()
MacroPane::MacroPane(EditorFrame& frame, wxWindow* parent, eMacro& macro)
: wxPanel(parent, wxID_ANY), m_parentFrame(frame), m_recState(false), m_macro(macro)
{
+ // Icons for buttons
+ const wxBitmap DeleteActiveBitmap(delete_active_xpm);
+ const wxBitmap DeleteDisabledBitmap(delete_disabled_xpm);
+ const wxBitmap SaveActiveBitmap(save_active_xpm);
+ const wxBitmap SaveDisabledBitmap(save_disabled_xpm);
+ const wxBitmap ArrowUpActiveBitmap(arrow_up_active_xpm);
+ const wxBitmap ArrowUpDisabledBitmap(arrow_up_disabled_xpm);
+ const wxBitmap ArrowDownActiveBitmap(arrow_down_active_xpm);
+ const wxBitmap ArrowDownDisabledBitmap(arrow_down_disabled_xpm);
+
// Create ctrls
- m_bitmapStartRec = wxArtProvider::GetBitmap(wxART_TICK_MARK, wxART_BUTTON);
- m_bitmapStopRec = wxArtProvider::GetBitmap(wxART_CROSS_MARK, wxART_BUTTON);
+ m_bitmapStartRec = wxBitmap(play_active_xpm);
+ m_bitmapStopRec = wxBitmap(stop_active_xpm);
m_buttonRec = new wxBitmapButton(this, ID_BUTTON_REC, m_bitmapStartRec);
- //m_buttonNew = new wxBitmapButton(this, ID_BUTTON_NEW, wxArtProvider::GetBitmap(wxART_NEW, wxART_BUTTON));
- m_buttonDel = new wxBitmapButton(this, ID_BUTTON_DEL, wxArtProvider::GetBitmap(wxART_DELETE, wxART_BUTTON));
- m_buttonUp = new wxBitmapButton(this, ID_BUTTON_UP, wxArtProvider::GetBitmap(wxART_GO_UP, wxART_BUTTON));
- m_buttonDown = new wxBitmapButton(this, ID_BUTTON_DOWN, wxArtProvider::GetBitmap(wxART_GO_DOWN, wxART_BUTTON));
- m_buttonSave = new wxBitmapButton(this, ID_BUTTON_SAVE, wxArtProvider::GetBitmap(wxART_FILE_SAVE, wxART_BUTTON));
+ m_buttonDel = new wxBitmapButton(this, ID_BUTTON_DEL, DeleteActiveBitmap);
+ if (m_buttonDel) {
+ m_buttonDel->SetToolTip(_("Remove current item\nUse SHIFT to remove all items"));
+ m_buttonDel->SetBitmapDisabled(DeleteDisabledBitmap);
+ }
+ m_buttonUp = new wxBitmapButton(this, ID_BUTTON_UP, ArrowUpActiveBitmap);
+ if (m_buttonUp) {
+ m_buttonUp->SetToolTip(_("Move item up"));
+ m_buttonUp->SetBitmapDisabled(ArrowUpDisabledBitmap);
+ }
+ m_buttonDown = new wxBitmapButton(this, ID_BUTTON_DOWN, ArrowDownActiveBitmap);
+ if (m_buttonDown) {
+ m_buttonDown->SetToolTip(_("Move item down"));
+ m_buttonDown->SetBitmapDisabled(ArrowDownDisabledBitmap);
+ }
+ m_buttonSave = new wxBitmapButton(this, ID_BUTTON_SAVE, SaveActiveBitmap);
+ if (m_buttonSave) {
+ m_buttonSave->SetToolTip(_("Save as Bundle Item\n(select in Bundle Editor)"));
+ m_buttonSave->SetBitmapDisabled(SaveDisabledBitmap);
+ }
m_cmdList = new wxListBox(this, ID_CMDLIST);
m_argsGrid = new wxGrid(this, ID_ARG_GRID);
- m_buttonSave->SetToolTip(_("Save as Bundle Item\n(select in Bundle Editor)"));
-
UpdateButtons();
// Configure grid
@@ -66,17 +101,16 @@ MacroPane::MacroPane(EditorFrame& frame, wxWindow* parent, eMacro& macro)
// Create Layout
wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
- wxBoxSizer *buttonSizer = new wxBoxSizer(wxHORIZONTAL);
- buttonSizer->Add(m_buttonRec, 0, wxALIGN_LEFT);
- buttonSizer->AddStretchSpacer();
- //buttonSizer->Add(m_buttonNew, 0, wxALIGN_RIGHT);
- buttonSizer->Add(m_buttonDel, 0, wxALIGN_RIGHT);
- buttonSizer->Add(m_buttonUp, 0, wxALIGN_RIGHT);
- buttonSizer->Add(m_buttonDown, 0, wxALIGN_RIGHT);
- buttonSizer->Add(m_buttonSave, 0, wxALIGN_RIGHT);
- mainSizer->Add(buttonSizer, 0, wxEXPAND);
- mainSizer->Add(m_cmdList, 3, wxEXPAND);
- mainSizer->Add(m_argsGrid, 1, wxEXPAND);
+ wxBoxSizer *buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+ buttonSizer->Add(m_buttonRec, 0, wxALIGN_LEFT);
+ buttonSizer->AddStretchSpacer();
+ buttonSizer->Add(m_buttonDel, 0, wxALIGN_RIGHT);
+ buttonSizer->Add(m_buttonUp, 0, wxALIGN_RIGHT);
+ buttonSizer->Add(m_buttonDown, 0, wxALIGN_RIGHT);
+ buttonSizer->Add(m_buttonSave, 0, wxALIGN_RIGHT);
+ mainSizer->Add(buttonSizer, 0, wxEXPAND);
+ mainSizer->Add(m_cmdList, 3, wxEXPAND);
+ mainSizer->Add(m_argsGrid, 1, wxEXPAND);
SetSizer(mainSizer);
}
@@ -84,12 +118,10 @@ MacroPane::MacroPane(EditorFrame& frame, wxWindow* parent, eMacro& macro)
void MacroPane::UpdateButtons() {
const int ndx = m_cmdList->GetSelection();
if (ndx == wxNOT_FOUND) {
- m_buttonDel->Disable();
m_buttonUp->Disable();
m_buttonDown->Disable();
}
else {
- m_buttonDel->Enable();
m_buttonUp->Enable(ndx > 0);
m_buttonDown->Enable(ndx+1 < (int)m_macro.GetCount());
}
@@ -133,18 +165,25 @@ void MacroPane::OnMacroChanged() {
}
void MacroPane::OnButtonRec(wxCommandEvent& WXUNUSED(evt)) {
- if (m_recState) m_macro.EndRecording();
- else {
+ if (m_recState) {
+ m_macro.EndRecording();
+ } else {
+ if (wxGetKeyState(WXK_SHIFT)) { // remove all macro items
+ m_macro.Clear();
+ }
m_macro.StartRecording();
m_parentFrame.FocusEditor();
}
}
void MacroPane::OnButtonDel(wxCommandEvent& WXUNUSED(evt)) {
- const int ndx = m_cmdList->GetSelection();
- if (ndx == wxNOT_FOUND) return;
-
- m_macro.Delete(ndx);
+ if (wxGetKeyState(WXK_SHIFT)) { // remove all macro items
+ m_macro.Clear();
+ } else { // remove only current item
+ const int ndx = m_cmdList->GetSelection();
+ if (ndx == wxNOT_FOUND) return;
+ m_macro.Delete(ndx);
+ }
}
void MacroPane::OnButtonUp(wxCommandEvent& WXUNUSED(evt)) {
@@ -202,7 +241,7 @@ void MacroPane::OnIdle(wxIdleEvent& WXUNUSED(evt)) {
else {
if (m_recState) {
m_buttonRec->SetBitmapLabel(m_bitmapStartRec);
- m_buttonRec->SetToolTip(_("Start Recording"));
+ m_buttonRec->SetToolTip(_("Macro recording\nUse SHIFT for new macro recording"));
m_recState = false;
}
}
View
1  src/MacroPane.h
@@ -48,7 +48,6 @@ class MacroPane : public wxPanel {
wxBitmap m_bitmapStartRec;
wxBitmap m_bitmapStopRec;
wxBitmapButton* m_buttonRec;
- wxBitmapButton* m_buttonNew;
wxBitmapButton* m_buttonDel;
wxBitmapButton* m_buttonUp;
wxBitmapButton* m_buttonDown;
View
32 src/images/macropane/arrow_down_active.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * arrow_down_active_xpm[] = {
+"16 16 13 1",
+" c None",
+". c #5D94BA",
+"+ c #81CBFF",
+"@ c #7EC8FD",
+"# c #7AC3FA",
+"$ c #75BEF6",
+"% c #A9D9F8",
+"& c #70B8F2",
+"* c #A4D5F6",
+"= c #6AB2EE",
+"- c #A0D1F4",
+"; c #65ACEA",
+"> c #9DCEF3",
+" ",
+" ",
+" ",
+" ..... ",
+" .+++. ",
+" .@@@. ",
+" .###. ",
+" ...$$$... ",
+" .%&&&&&%. ",
+" .*===*. ",
+" .-;-. ",
+" .>. ",
+" . ",
+" ",
+" ",
+" "};
View
32 src/images/macropane/arrow_down_disabled.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * arrow_down_disabled_xpm[] = {
+"16 16 13 1",
+" c None",
+". c #8B8B8B",
+"+ c #C0C0C0",
+"@ c #BDBDBD",
+"# c #BABABA",
+"$ c #B5B5B5",
+"% c #D0D0D0",
+"& c #B1B1B1",
+"* c #CDCDCD",
+"= c #ACACAC",
+"- c #CACACA",
+"; c #A7A7A7",
+"> c #C8C8C8",
+" ",
+" ",
+" ",
+" ..... ",
+" .+++. ",
+" .@@@. ",
+" .###. ",
+" ...$$$... ",
+" .%&&&&&%. ",
+" .*===*. ",
+" .-;-. ",
+" .>. ",
+" . ",
+" ",
+" ",
+" "};
View
30 src/images/macropane/arrow_up_active.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static char * arrow_up_active_xpm[] = {
+"16 16 11 1",
+" c None",
+". c #5D94BA",
+"+ c #81CBFF",
+"@ c #7EC8FD",
+"# c #7AC3FA",
+"$ c #BADFFB",
+"% c #75BEF6",
+"& c #70B8F2",
+"* c #6AB2EE",
+"= c #65ACEA",
+"- c #B0D3F3",
+" ",
+" ",
+" ",
+" . ",
+" .+. ",
+" .@@@. ",
+" .#####. ",
+" .$$%%%$$. ",
+" ...&&&... ",
+" .***. ",
+" .===. ",
+" .---. ",
+" ..... ",
+" ",
+" ",
+" "};
View
30 src/images/macropane/arrow_up_disabled.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static char * arrow_up_disabled_xpm[] = {
+"16 16 11 1",
+" c None",
+". c #8B8B8B",
+"+ c #C0C0C0",
+"@ c #BDBDBD",
+"# c #BABABA",
+"$ c #DADADA",
+"% c #B5B5B5",
+"& c #B1B1B1",
+"* c #ACACAC",
+"= c #A7A7A7",
+"- c #D1D1D1",
+" ",
+" ",
+" ",
+" . ",
+" .+. ",
+" .@@@. ",
+" .#####. ",
+" .$$%%%$$. ",
+" ...&&&... ",
+" .***. ",
+" .===. ",
+" .---. ",
+" ..... ",
+" ",
+" ",
+" "};
View
33 src/images/macropane/delete_active.xpm
@@ -0,0 +1,33 @@
+/* XPM */
+static char * delete_active_xpm[] = {
+"16 16 14 1",
+" c None",
+". c #B86464",
+"+ c #FF8181",
+"@ c #FDB3B3",
+"# c #FC7E7E",
+"$ c #FBB0B0",
+"% c #F87979",
+"& c #F37373",
+"* c #ED6D6D",
+"= c #E86666",
+"- c #F3A1A1",
+"; c #E36060",
+"> c #F19C9C",
+", c #EE9898",
+" ",
+" ",
+" ",
+" .. .. ",
+" .++. .++. ",
+" .@##..##@. ",
+" .$%%%%$. ",
+" .&&&&. ",
+" .****. ",
+" .==--==. ",
+" .;;>..>;;. ",
+" .,,. .,,. ",
+" .. .. ",
+" ",
+" ",
+" "};
View
33 src/images/macropane/delete_disabled.xpm
@@ -0,0 +1,33 @@
+/* XPM */
+static char * delete_disabled_xpm[] = {
+"16 16 14 1",
+" c None",
+". c #8E8E8E",
+"+ c #C0C0C0",
+"@ c #D8D8D8",
+"# c #BDBDBD",
+"$ c #D5D5D5",
+"% c #B8B8B8",
+"& c #B3B3B3",
+"* c #ADADAD",
+"= c #A7A7A7",
+"- c #CACACA",
+"; c #A1A1A1",
+"> c #C6C6C6",
+", c #C3C3C3",
+" ",
+" ",
+" ",
+" .. .. ",
+" .++. .++. ",
+" .@##..##@. ",
+" .$%%%%$. ",
+" .&&&&. ",
+" .****. ",
+" .==--==. ",
+" .;;>..>;;. ",
+" .,,. .,,. ",
+" .. .. ",
+" ",
+" ",
+" "};
View
100 src/images/macropane/play_active.xpm
@@ -0,0 +1,100 @@
+/* XPM */
+static char * play_active_xpm[] = {
+"16 16 81 1",
+" c None",
+". c #6BA1DB",
+"+ c #7DAFE1",
+"@ c #659ED9",
+"# c #A5DFF6",
+"$ c #95DFF7",
+"% c #85D9F5",
+"& c #6AA4DC",
+"* c #94DFF6",
+"= c #81D5F3",
+"- c #83D6F3",
+"; c #4783CD",
+"> c #92DBF5",
+", c #7ED1F1",
+"' c #7FD1F1",
+") c #83D8F9",
+"! c #7FD2F2",
+"~ c #69ABDF",
+"{ c #7ECEEF",
+"] c #7DCEF0",
+"^ c #86D8FB",
+"/ c #3F494E",
+"( c #73AFC8",
+"_ c #82D5F8",
+": c #7CCDEF",
+"< c #76C1EA",
+"[ c #78C8EE",
+"} c #79C8EE",
+"| c #87D5FB",
+"1 c #34302E",
+"2 c #363332",
+"3 c #4B585E",
+"4 c #76ADC7",
+"5 c #81D0F6",
+"6 c #73C1EB",
+"7 c #6FBDE9",
+"8 c #70BDE9",
+"9 c #83CDF6",
+"0 c #3D3937",
+"a c #424242",
+"b c #3C3734",
+"c c #67818F",
+"d c #73C0EC",
+"e c #68B1E3",
+"f c #65AFE3",
+"g c #65B0E3",
+"h c #7FC2F1",
+"i c #474442",
+"j c #494745",
+"k c #5D676F",
+"l c #7AAACC",
+"m c #70B8EA",
+"n c #64AFE3",
+"o c #5593D3",
+"p c #5FA8E0",
+"q c #7CBCEE",
+"r c #5F6468",
+"s c #7EA9C9",
+"t c #6EB3E8",
+"u c #5DA7E0",
+"v c #3867BA",
+"w c #68B0E4",
+"x c #59A0DD",
+"y c #5EA3DE",
+"z c #6FB0E6",
+"A c #579FDC",
+"B c #5AA1DD",
+"C c #3868BA",
+"D c #477DC5",
+"E c #62A9E0",
+"F c #549AD9",
+"G c #559BDA",
+"H c #4272BF",
+"I c #67AAE0",
+"J c #5CA1DD",
+"K c #5397D9",
+"L c #324D91",
+"M c #4572B8",
+"N c #4E81C5",
+"O c #4E80C5",
+"P c #334D90",
+" ",
+" ",
+" .++. ",
+" @#$%%$#@ ",
+" &*=----=*& ",
+" ;>,')'!!!,>; ",
+" ~{]^/(_:]]{~ ",
+" <[}|12345[[< ",
+" 67890aabcd76 ",
+" efghijklmnfe ",
+" oppqrstupppo ",
+" vwxyzABBBxwC ",
+" DEFGGGGFED ",
+" HIJKKJIH ",
+" LMNOMP ",
+" "};
View
45 src/images/macropane/save_active.xpm
@@ -0,0 +1,45 @@
+/* XPM */
+static char * save_active_xpm[] = {
+"16 16 26 1",
+" c None",
+". c #638DA9",
+"+ c #5B8DAF",
+"@ c #AEAEAE",
+"# c #D3EDFF",
+"$ c #9FBED0",
+"% c #FDFDFD",
+"& c #B5BAC1",
+"* c #ADDDFD",
+"= c #F8F8F8",
+"- c #808792",
+"; c #ABDAFD",
+"> c #F4F4F4",
+", c #A9D7FA",
+"' c #A6D4F9",
+") c #90C9F7",
+"! c #A4D1F7",
+"~ c #A1CEF5",
+"{ c #9DCBF3",
+"] c #FBFBFB",
+"^ c #C2C2C2",
+"/ c #9CC9F1",
+"( c #9AC7F0",
+"_ c #F5F5F5",
+": c #C2DFF6",
+"< c #F3F3F3",
+" ",
+" .+.@@@@@@@. ",
+" +#$%%%%&&%$+ ",
+" +*.====--=.*+ ",
+" +;.>>>>-->.;+ ",
+" +,.........,+ ",
+" +')))))))))'+ ",
+" +!.........!+ ",
+" +~.%%%%%%%.~+ ",
+" +{.]^^^^^].{+ ",
+" +/.=======./+ ",
+" +(._^^^^^_.(+ ",
+" +:.<<<<<<<.:+ ",
+" .+.@@@@@@@.+. ",
+" ",
+" "};
View
45 src/images/macropane/save_disabled.xpm
@@ -0,0 +1,45 @@
+/* XPM */
+static char * save_disabled_xpm[] = {
+"16 16 26 1",
+" c None",
+". c #868686",
+"+ c #858585",
+"@ c #AEAEAE",
+"# c #E9E9E9",
+"$ c #B7B7B7",
+"% c #FDFDFD",
+"& c #BBBBBB",
+"* c #D5D5D5",
+"= c #F8F8F8",
+"- c #898989",
+"; c #D4D4D4",
+"> c #F4F4F4",
+", c #D1D1D1",
+"' c #CFCFCF",
+") c #C3C3C3",
+"! c #CDCDCD",
+"~ c #CBCBCB",
+"{ c #C8C8C8",
+"] c #FBFBFB",
+"^ c #C2C2C2",
+"/ c #C6C6C6",
+"( c #C5C5C5",
+"_ c #F5F5F5",
+": c #DCDCDC",
+"< c #F3F3F3",
+" ",
+" .+.@@@@@@@. ",
+" +#$%%%%&&%$+ ",
+" +*.====--=.*+ ",
+" +;.>>>>-->.;+ ",
+" +,.........,+ ",
+" +')))))))))'+ ",
+" +!.........!+ ",
+" +~.%%%%%%%.~+ ",
+" +{.]^^^^^].{+ ",
+" +/.=======./+ ",
+" +(._^^^^^_.(+ ",
+" +:.<<<<<<<.:+ ",
+" .+.@@@@@@@.+. ",
+" ",
+" "};
View
48 src/images/macropane/stop_active.xpm
@@ -0,0 +1,48 @@
+/* XPM */
+static char * stop_active_xpm[] = {
+"16 16 29 1",
+" c None",
+". c #B93000",
+"+ c #B72F00",
+"@ c #B83304",
+"# c #EAA18E",
+"$ c #EAA28E",
+"% c #B33508",
+"& c #E1785B",
+"* c #DF7356",
+"= c #AE3408",
+"- c #E17456",
+"; c #DF6E50",
+"> c #A93208",
+", c #E17254",
+"' c #DE6D4E",
+") c #A4350C",
+"! c #D94E29",
+"~ c #D64A25",
+"{ c #9F330B",
+"] c #D84A25",
+"^ c #D64622",
+"/ c #9B320C",
+"( c #D8461F",
+"_ c #D5431D",
+": c #98300A",
+"< c #E15427",
+"[ c #DF5426",
+"} c #942D09",
+"| c #922C09",
+" ",
+" ",
+" ",
+" .++++++. ",
+" @#$$$$$$#@ ",
+" %&******&% ",
+" =-;;;;;;-= ",
+" >,'''''',> ",
+" )!~~~~~~!) ",
+" {]^^^^^^]{ ",
+" /(______(/ ",
+" :<[[[[[[<: ",
+" }||||||} ",
+" ",
+" ",
+" "};
Please sign in to comment.
Something went wrong with that request. Please try again.