チェンジセット 2857

差分発生行の前後
無視リスト:
コミット日時:
2009/07/01 03:15:39 (9 ヶ月前)
コミッタ:
tasuku
ログメッセージ:

* pikokakiko: OffGao?さんの修正点を取り込む。undo/redo/font/pause。サンプルURLの変更は認めない。

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/trunk/ChangeLog

    r2856 r2857  
    22 
    33  * gunyarapaint: ��̒��S�_������o�X�����Ƃ����B�����Əd�����ȁ[�B 
     4  * pikokakiko: OffGao����C���_��荞�ށBundo/redo/font/pause�B�T���v��URL�̕ύX�͔F�߂Ȃ��B 
    45 
    562009-06-08  Tasuku SUENAGA <a at razil.jp> 
  • as3/gunyarapaint/trunk/picokakiko/src/picokakiko.as

    r2745 r2857  
    1 import com.txt_nifty.sketch.flmml.MMLEvent; 
     1import com.txt_nifty.sketch.flmml.MMLEvent; 
    22 
    33import mx.controls.Alert; 
     
    66import mx.utils.StringUtil; 
    77import mx.events.ResizeEvent; 
     8import mx.managers.PopUpManager; 
     9import mx.core.IFlexDisplayObject; 
     10import flash.events.KeyboardEvent; 
     11import flash.net.SharedObject; 
    812 
    913import org.libspark.nicopedia.Com; 
     14 
     15import picosetting; 
    1016 
    1117private var mmlId:uint; 
     
    1622private var m_timer:Timer; 
    1723 
     24private const UNDO_MAX:int = 64; 
     25private var mmlUndoBuffer:Vector.<String> = new Vector.<String>(UNDO_MAX); 
     26private var undoCount:int = 0; 
     27private var changeCount:int = 0; 
     28 
     29private var setting_window:picosetting = new picosetting(); 
     30 
     31private var local:SharedObject; 
     32 
    1833public function init():void { 
     34  // for test 
     35  //parameters['mmlUrl'] = 'http://dic.nicovideo.jp/mml/714'; 
    1936  if (parameters['mmlUrl']) { 
    2037    var url:String = parameters['mmlUrl']; 
     
    4057  this.addEventListener(ResizeEvent.RESIZE, appResizeHandler); 
    4158 
     59  //アンドゥバッファのクリア 
     60  var i:int; 
     61  for (i = 0; i < UNDO_MAX ; i++) { 
     62    mmlUndoBuffer[i] = ""; 
     63  } 
     64 
     65  //フォント設定の読み込み 
     66  local = SharedObject.getLocal("picosetting"); 
     67  if (!local.data.fontname) { 
     68    local.data.fontname = mml.getStyle("fontFamily"); 
     69  } 
     70  if (!local.data.fontsize) { 
     71    local.data.fontsize = mml.getStyle("fontSize"); 
     72  } 
     73  mml.setStyle("fontFamily",local.data.fontname); 
     74  mml.setStyle("fontSize",local.data.fontsize); 
     75   
     76  updateUndoRedoButton(); 
     77   
    4278  playButton.addEventListener(FlexEvent.BUTTON_DOWN, playButtonHandler); 
    4379  stopButton.addEventListener(FlexEvent.BUTTON_DOWN, stopButtonHandler); 
     80  pauseButton.addEventListener(FlexEvent.BUTTON_DOWN, pauseButtonHandler); 
     81  undoButton.addEventListener(FlexEvent.BUTTON_DOWN, undoButtonHandler); 
     82  redoButton.addEventListener(FlexEvent.BUTTON_DOWN, redoButtonHandler); 
     83  fontButton.addEventListener(FlexEvent.BUTTON_DOWN, fontButtonHandler); 
    4484  postPicoButton.addEventListener(FlexEvent.BUTTON_DOWN, postPicoButtonHandler); 
    4585} 
     
    4888  mml_warnings.text = mml_player.getWarnings(); 
    4989  stopButton.enabled = true; 
     90  pauseButton.enabled = true; 
    5091  played = true; 
    5192} 
     
    5495  playButton.enabled = true; 
    5596  stopButton.enabled = false; 
     97  pauseButton.enabled = false; 
    5698  m_timer.reset(); 
    5799} 
     
    59101private function mmlChangeHandler(e:Event):void { 
    60102  played = false; 
     103  if (stopButton.enabled) { 
     104    this.stopButtonHandler(e); 
     105  } 
     106 
     107  var i:int; 
     108  var j:int; 
     109  if (undoCount != 0) { 
     110    for (i = 0; i < UNDO_MAX-undoCount ; i++) { 
     111      mmlUndoBuffer[i] = mmlUndoBuffer[i + undoCount]; 
     112    } 
     113    for (j = i-1; i < UNDO_MAX ; i++) { 
     114      mmlUndoBuffer[i] = mmlUndoBuffer[j]; 
     115    } 
     116  undoCount = 0; 
     117  } 
     118  for (i = UNDO_MAX-2; i >= 0 ; i--) { 
     119    mmlUndoBuffer[i + 1] = mmlUndoBuffer[i]; 
     120  } 
     121  mmlUndoBuffer[0] = mml.text; 
     122  changeCount++; 
     123  if (changeCount >= UNDO_MAX) changeCount = UNDO_MAX-1; 
     124   
     125  updateUndoRedoButton(); 
     126  /*TEST 
     127  mml_warnings.text = changeCount+"\n"; 
     128    for (i = 0; i < UNDO_MAX ; i++) { 
     129      mml_warnings.text += mmlUndoBuffer[i]+"\n"; 
     130    } 
     131  */ 
     132} 
     133 
     134private function mmlKeyDownHandler(e:KeyboardEvent):void 
     135{ 
     136  if (e.ctrlKey) 
     137  { 
     138    if (e.keyCode == 90)// Z 
     139    { 
     140    if (e.shiftKey) { 
     141      mmlRedo(); 
     142      }else { 
     143      mmlUndo(); 
     144    } 
     145    }   
     146  } 
     147  if (e.keyCode == 113)// F2 
     148  { 
     149  mmlUndo(); 
     150  }   
     151  if (e.keyCode == 114)// F3 
     152  { 
     153  mmlRedo(); 
     154  }   
    61155} 
    62156 
     
    65159  mml.enabled = true; 
    66160  playButton.enabled = true; 
     161  var i:int; 
     162  for (i = 0; i < UNDO_MAX ; i++) { 
     163    mmlUndoBuffer[i] = mml.text; 
     164  } 
    67165} 
    68166 
     
    81179} 
    82180 
     181private function mmlUndo():void { 
     182  if(changeCount >0){ 
     183      undoCount++; changeCount--; 
     184      mml.text = mmlUndoBuffer[undoCount]; 
     185  } 
     186  updateUndoRedoButton(); 
     187    played = false; 
     188} 
     189 
     190private function mmlRedo():void { 
     191  undoCount--; 
     192  if (undoCount < 0) undoCount = 0; 
     193  else { 
     194    changeCount++; 
     195    mml.text = mmlUndoBuffer[undoCount]; 
     196  } 
     197  updateUndoRedoButton(); 
     198    played = false; 
     199} 
     200 
     201private function updateUndoRedoButton():void { 
     202  if (undoCount == 0) { 
     203    redoButton.enabled = false; 
     204  }else { 
     205    redoButton.enabled = true; 
     206  } 
     207  if (changeCount == 0) { 
     208    undoButton.enabled = false; 
     209  }else { 
     210    undoButton.enabled = true; 
     211  } 
     212} 
     213 
    83214private function playButtonHandler(evt:Event):void { 
     215  m_timer.reset(); 
     216  mml_player.stop(); 
     217  mml_player.play(mml.text); 
     218  pauseButton.label = '一時停止';     
     219} 
     220 
     221private function pauseButtonHandler(evt:Event):void { 
    84222  if (mml_player.isPlaying()) { 
    85223    mml_player.pause(); 
    86     playButton.label = 'ピコ再生'; 
     224    pauseButton.label = 'ピコ再開'; 
    87225    m_timer.stop(); 
    88226  } else { 
    89     if (mml_player.isPaused()) { 
    90       m_timer.start(); 
    91     } 
    92227    mml_player.play(mml.text); 
    93     playButton.label = 'ピコ停止';     
    94   } 
     228    m_timer.start(); 
     229    pauseButton.label = '一時停止';     
     230  } 
     231
     232 
     233private function undoButtonHandler(evt:Event):void { 
     234  mmlUndo(); 
     235
     236 
     237private function redoButtonHandler(evt:Event):void { 
     238  mmlRedo(); 
     239
     240 
     241private function fontButtonHandler(evt:Event):void { 
     242  PopUpManager.addPopUp(setting_window, this, true); 
     243  PopUpManager.centerPopUp(setting_window); 
     244 
     245  setting_window.fontname.text = mml.getStyle("fontFamily"); 
     246  setting_window.fontsize.text = mml.getStyle("fontSize"); 
     247  setting_window.okButton.addEventListener(FlexEvent.BUTTON_DOWN, settingOKHandler); 
     248
     249 
     250private function settingOKHandler(evt:Event):void { 
     251  local.data.fontname = setting_window.fontname.text; 
     252  local.data.fontsize = setting_window.fontsize.text; 
     253   
     254  mml.setStyle("fontFamily",local.data.fontname); 
     255  mml.setStyle("fontSize",local.data.fontsize); 
     256   
     257  PopUpManager.removePopUp(setting_window); 
    95258} 
    96259 
     
    99262  mml_player.stop(); 
    100263  stopButton.enabled = false; 
    101   playButton.label = 'ピコ再生'; 
     264  pauseButton.enabled = false; 
     265  pauseButton.label = '一時停止';     
    102266} 
    103267 
  • as3/gunyarapaint/trunk/picokakiko/src/picokakiko.mxml

    r2745 r2857  
    1616  </mx:RegExpValidator> 
    1717  <mx:VBox width="100%" height="100%"> 
    18     <mx:Canvas> 
    19       <mx:Label x="28" y="7" text="名前"/> 
    20       <mx:TextInput id="fromTextInput" x="61" y="3" maxChars="32" fontSize="14" width="154"/> 
    21       <mx:CheckBox id="watchlistCheckBox" x="223" y="5" label="ウォッチリストに登録"/> 
    22       <mx:Label x="10" y="51" text="書き込み"/> 
    23       <mx:TextArea id="messageTextArea" x="61" y="31" width="557" height="62" fontSize="14"> 
    24         <mx:text></mx:text> 
     18    <mx:VDividedBox width="100%" height="100%"> 
     19    <mx:VBox width="100%" height="168"> 
     20    <mx:HBox> 
     21      <mx:Canvas width="5" /> 
     22      <mx:Canvas> 
     23        <mx:Label text="名前" y="4" textAlign="right" width="50"/> 
     24      </mx:Canvas> 
     25      <mx:TextInput id="fromTextInput" maxChars="32" fontSize="14" width="154"/> 
     26      <mx:Canvas> 
     27        <mx:CheckBox id="watchlistCheckBox" y="3" label="ウォッチリストに登録"/> 
     28      </mx:Canvas> 
     29    </mx:HBox> 
     30    <mx:HBox width="100%" height="100%"> 
     31      <mx:Canvas width="5" /> 
     32      <mx:Canvas> 
     33        <mx:Label text="書き込み" y="4" textAlign="right" width="50"/> 
     34      </mx:Canvas> 
     35      <mx:TextArea id="messageTextArea" width="100%" height="100%" fontSize="14"> 
     36      <mx:text></mx:text> 
    2537      </mx:TextArea> 
    26       <mx:TextInput id="jasracTextInput" x="61" y="95" maxChars="285" fontSize="14" width="355"/> 
    27       <mx:Label x="14" y="127" text="タイトル"/> 
     38      <mx:Canvas width="5" /> 
     39    </mx:HBox> 
     40    <mx:HBox> 
     41      <mx:Canvas> 
     42        <mx:Label text="JASRAC" y="0" textAlign="right" width="63"/> 
     43        <mx:Label text="作品コード" y="10" textAlign="right" width="63"/> 
     44      </mx:Canvas> 
     45      <mx:TextInput id="jasracTextInput" maxChars="285" fontSize="14" width="355"/> 
     46      <mx:Canvas> 
     47        <mx:Label text="ハイフン無し 複数の場合にはスペース区切りで" y="4"/>    
     48      </mx:Canvas> 
     49    </mx:HBox> 
     50    <mx:HBox> 
     51      <mx:Canvas width="5" /> 
     52      <mx:Canvas> 
     53        <mx:Label text="タイトル" y="4" textAlign="right" width="50"/> 
     54      </mx:Canvas> 
    2855      <mx:TextInput id="titleTextInput" x="61" y="123" maxChars="64" fontSize="14" width="355"/> 
    29       <mx:Label text="JASRAC" x="10" y="93"/> 
    30       <mx:Label text="作品コード" x="10" y="103"/> 
    31       <mx:Label text="ハイフン無し 複数の場合にはスペース区切りで" x="419" y="101"/>       
    32     </mx:Canvas> 
     56    </mx:HBox> 
     57    </mx:VBox> 
     58    <mx:HBox width="100%" height="100%"> 
    3359    <mx:VDividedBox x="10" y="153" width="100%" height="100%"> 
    3460      <mx:HBox width="100%" height="80%"> 
    35         <mx:Canvas width="5" /> 
    36         <mx:VBox> 
    37           <mx:Label text="ピコ文字"/> 
    38           <mx:Label text="(MML)"/> 
    39         </mx:VBox> 
    40         <mx:TextArea id="mml" width="100%" height="100%" fontSize="14" change="mmlChangeHandler(event)" fontFamily="_typewriter"/> 
    41         <mx:Canvas width="5" /> 
     61          <mx:Canvas width="0" /> 
     62      <mx:VBox> 
     63        <mx:Label text="ピコ文字" textAlign="right" width="55"/> 
     64        <mx:Label text="(MML)" textAlign="right" width="55"/> 
     65          <mx:Button id="undoButton" label="Undo" width="55"/> 
     66          <mx:Button id="redoButton" label="Redo" width="55"/> 
     67          <mx:Button id="fontButton" label="Font" width="55"/> 
     68      </mx:VBox> 
     69      <mx:TextArea id="mml" width="100%" height="100%" fontSize="14" keyDown="mmlKeyDownHandler(event)" change="mmlChangeHandler(event)" fontFamily="_typewriter"/> 
     70      <mx:Canvas width="5" /> 
    4271      </mx:HBox> 
    4372      <mx:HBox width="100%" height="20%"> 
    44         <mx:Canvas width="5" /> 
    45         <mx:Label text="ピコ警告"/> 
    46         <mx:TextArea id="mml_warnings" width="100%" height="100%" editable="false"/> 
    47         <mx:Canvas width="5" /> 
     73      <mx:Canvas width="5" /> 
     74      <mx:Label text="ピコ警告" textAlign="right" width="50"/> 
     75      <mx:TextArea id="mml_warnings" width="100%" height="100%" editable="false"/> 
     76      <mx:Canvas width="5" /> 
    4877      </mx:HBox> 
    4978    </mx:VDividedBox> 
     79    </mx:HBox> 
     80  </mx:VDividedBox> 
    5081    <mx:Canvas> 
    51       <mx:Button id="playButton" label="ピコ再生" x="10" y="6"/> 
    52       <mx:Button id="stopButton" label="ピコ止め" x="85" y="6" enabled="false"/> 
     82      <mx:Button id="playButton" label="ピコ再生" x="10" y="6" width="69"/> 
     83      <mx:Button id="pauseButton" label="一時停止" x="80" y="6" width="69"/> 
     84      <mx:Button id="stopButton" label="ピコ停止" x="150" y="6" width="69" enabled="false"/> 
    5385      <mx:HSlider 
    5486        id="hSlider" minimum="0" maximum="127" value="100" 
    55                   dataTipPlacement="top" tickColor="black" snapInterval="1" 
    56                   allowTrackClick="true" liveDragging="true" 
    57                   change="mml_player.setMasterVolume(hSlider.value);" x="203" y="5" dataTipPrecision="0"/> 
    58       <mx:Label x="160" y="8" text="ピコ音量"/> 
     87        dataTipPlacement="top" tickColor="black" snapInterval="1" 
     88        allowTrackClick="true" liveDragging="true" 
     89        change="mml_player.setMasterVolume(hSlider.value);" x="248" y="5" dataTipPrecision="0"/> 
     90      <mx:Label x="225" y="8" text="音量"/> 
    5991      <mx:Label x="512" y="33" text="Powered by FlMML"/> 
    6092      <mx:Button id="postPicoButton" x="512" y="6" label="ピコカキコする!" enabled="false" fillAlphas="[1.0, 1.0]" fillColors="[#FFFFFF, #FF9999]"/> 
    6193      <flmml:FlMML id="mml_player"/> 
    62       <mx:Label id="bufferingLabel" x="371" y="8" text="バッファリング: ..." width="122"/> 
    63       <mx:Label x="10" y="33" text="ver.2009052901"/> 
     94      <mx:Label id="bufferingLabel" x="411" y="8" text="バッファリング: ..." width="122"/> 
     95      <mx:Label x="10" y="33" text="ver.2009070101"/> 
    6496    </mx:Canvas> 
    6597  </mx:VBox> 
  • as3/gunyarapaint/trunk/picokakiko/src/picoplayer.mxml

    r2745 r2857  
    155155  <mx:HSlider 
    156156    id="volumeHSlider" minimum="0" maximum="127" value="100" 
    157               dataTipPlacement="top" tickColor="black" snapInterval="1" 
    158               allowTrackClick="true" liveDragging="true" 
    159               change="changeMasterVolume(volumeHSlider.value);" x="29" y="0" width="59" dataTipPrecision="0"/> 
     157    dataTipPlacement="top" tickColor="black" snapInterval="1" 
     158    allowTrackClick="true" liveDragging="true" 
     159    change="changeMasterVolume(volumeHSlider.value);" x="29" y="0" width="59" dataTipPrecision="0"/> 
    160160</mx:Application>