void HexEditorCtrl::TagCreator( bool QuickTag ){ if( select->GetState() ){ TagElement *TE = new TagElement; TE->start=select->StartOffset; TE->end=select->EndOffset; srand ( time(NULL) ); //static keeps color values for next tag here! static wxColour last_tag_color = rand(); static wxColour last_font_color = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT ); TE->NoteClrData.SetColour( QuickTag ? rand() : last_tag_color ); TE->FontClrData.SetColour( last_font_color ); int a=wxID_SAVE; if( not QuickTag ){ TagDialog x( *TE, this ); a=x.ShowModal(); } if( a == wxID_SAVE ){ last_tag_color = TE->NoteClrData.GetColour(); last_font_color = TE->FontClrData.GetColour(); MainTagArray.Add( TE ); PreparePaintTAGs(); ClearPaint(); text_ctrl->RePaint(); hex_ctrl ->RePaint(); } //delete TE; NO! Don't delete this tags! } //event.Skip( true ); wxUpdateUIEvent eventx( TAG_CHANGE_EVENT ); GetEventHandler()->ProcessEvent( eventx ); }
void HexEditorCtrl::OnTagEdit( wxCommandEvent& event ){ TagElement *TAG; uint64_t pos = LastRightClickAt; #ifdef _DEBUG_TAG_ std::cout << " Tag Edit on " << pos << std::endl; #endif for( unsigned i = 0 ; i < MainTagArray.Count() ; i++ ){ TAG = MainTagArray.Item(i); if( TAG->isCover(pos) ){ TagHideAll(); //Hide first, or BUG by double hide... TagElement TAGtemp = *TAG; TagDialog *x=new TagDialog( TAGtemp, this ); switch( x->ShowModal() ){ case wxID_SAVE: *TAG = TAGtemp; PreparePaintTAGs(); ClearPaint(); text_ctrl->RePaint(); hex_ctrl ->RePaint(); break; case wxID_DELETE: delete TAG; MainTagArray.Remove(TAG); PreparePaintTAGs(); ClearPaint(); text_ctrl->RePaint(); hex_ctrl ->RePaint(); break; default: break; } } } wxUpdateUIEvent eventx( TAG_CHANGE_EVENT ); GetEventHandler()->ProcessEvent( eventx ); }