亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcmdwin.cpp

?? 在linux下多媒體開發實例linux下多媒體開發
?? CPP
字號:
//  tcmdwin.cpp// command window functions#include <string.h>#include <errno.h>#include <v/vnotice.h>#include <v/vutil.h>#include <v/vfilesel.h>#include <v/vprinter.h>#include <v/vynreply.h>#include "tcmdwin.h"#include "tchord.h"#include "tutils.h"typedef char string[255];// local symbolsconst ItemVal m_play    = 100;const ItemVal m_chord   = 101;const ItemVal m_rotated = 102;const ItemVal m_notes   = 103;const ItemVal m_status  = 104;static vMenu FileMenu[] ={  {"New", M_New, notSens, notChk, noKeyLbl, noKey, noSub},  {"Load...", M_Open, isSens, notChk, noKeyLbl, noKey, noSub},  {"Save", M_Save, notSens, notChk, noKeyLbl, noKey, noSub},  {"Save As...", M_SaveAs, notSens, notChk, noKeyLbl, noKey, noSub},  {"Print...", M_Print, notSens, notChk, noKeyLbl, noKey, noSub},#ifdef vDEBUG  {"-", M_Line, notSens, notChk, noKeyLbl, noKey, noSub},  {"Debug...", M_SetDebug, isSens, notChk, noKeyLbl, noKey, noSub},#endif  {"-", M_Line, notSens, notChk, noKeyLbl, noKey, noSub},  {"Exit", M_Exit, isSens, notChk, noKeyLbl, noKey, noSub},  {NULL}};static vMenu EditMenu[] ={  {"Undo", M_UnDo, notSens, notChk, noKeyLbl, noKey, noSub},   {"Clear", M_Clear, notSens, notChk, noKeyLbl, noKey, noSub},   {"Cut", M_Cut, notSens, notChk, noKeyLbl, noKey, noSub},   {"Copy", M_Copy, notSens, notChk, noKeyLbl, noKey, noSub},   {"Paste", M_Paste, notSens, notChk, noKeyLbl, noKey, noSub},   {NULL}};static vMenu OptionsMenu[] ={  {"Rotated", m_rotated, notSens, notChk, noKeyLbl, noKey, noSub},   {"Show Notes", m_notes, isSens, isChk, noKeyLbl, noKey, noSub},   {NULL}};static vMenu HelpMenu[] ={  {"About...", M_About, isSens, notChk, noKeyLbl, noKey, noSub},   {NULL}};vMenu StandardMenu[] ={  {"File", M_File, isSens, notUsed, notUsed, noKey, &FileMenu[0]},   {"Edit", M_Edit, isSens, notUsed, notUsed, noKey, &EditMenu[0]},   {"Options", M_Options, isSens, notUsed, notUsed, noKey, &OptionsMenu[0]},   {"Help", M_Help, isSens, notUsed, notUsed, noKey, &HelpMenu[0]},  {NULL}};// list of chords, initially emptychordList_t chord_list = { 0 };// last file loaded or savedstatic char filename[100] = "";// database of chordstutChords chords;static CommandObject CommandBar[] ={  {C_Label, M_None, M_None, "Chord:", NoList, CA_None,   isSens, NoFrame, 0, 0},  {C_ComboBox, m_chord, m_chord, "Chord", (void*)chord_list, CA_Text,   notSens, NoFrame, 0, 0},  {C_Blank, M_None, M_None, "  ", NoList, CA_None,   notSens, NoFrame, 0, 0},  {C_Button, m_play, m_play, "Play", NoList, CA_None,   notSens, NoFrame, 0, 0},  {C_EndOfList, 0, 0, 0, 0, CA_None, 0, 0, 0}};static vStatus StatBar[] ={  {"No file loaded", m_status, CA_None, isSens, 0},  {0, 0, 0, 0, 0}};tCmdWindow::tCmdWindow(char* name, int height, int width) :  vCmdWindow(name, height, width){  UserDebug1(Constructor, "tCmdWindow::tCmdWindow(%s) Constructor\n", name)  myMenu = new vMenuPane(StandardMenu);  AddPane(myMenu);  myCanvas = new tCanvasPane;  AddPane(myCanvas);  myCmdPane = new vCommandPane(CommandBar);  AddPane(myCmdPane);  myStatus = new vStatusPane(StatBar);  AddPane(myStatus);  ShowWindow();}tCmdWindow::~tCmdWindow(){  UserDebug(Destructor, "tCmdWindow::~tCmdWindow() destructor\n")  delete myMenu;  delete myCanvas;  delete myStatus;  delete myCmdPane;}void tCmdWindow::WindowCommand(ItemVal id, ItemVal val, CmdType cType){  UserDebug1(CmdEvents, "tCmdWindow:WindowCommand(%d)\n", id)  vNoticeDialog note(this);  switch (id)    {      // File Menu commands    case M_New:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_New)\n")	vYNReplyDialog yesNo(this);	int ans = yesNo.AskYN("Do you want to clear the loaded chords?");	if (ans == 1) {	  chord_list[0] = 0;	  SetValue(m_chord, 0, ChangeList);	  SetString(m_status, "No file loaded");	  SetValue(m_chord, notSens, Sensitive);	  SetValue(m_play, notSens, Sensitive);	  SetValue(M_Save, notSens, Sensitive);	  SetValue(M_SaveAs, notSens, Sensitive);	  SetValue(M_Print, notSens, Sensitive);	  SetValue(M_New, notSens, Sensitive);	  strings_t strings = {0,0,0,0,0,0};	  myCanvas->DrawChord(strings, GetValue(m_notes));	}	break;      }          case M_Open:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_Open)\n")	vFileSelect fsel(this);	static char* filter[] = { "*.db", "*", 0 };	int fI = 0;	int ans = fsel.FileSelect("Load File", filename, 99, filter, fI);		if (ans && *filename) {	  int status = chords.load(filename);	  if (status == -1) {	    string s;	    sprintf(s, "Unable to load file\n`%s'\n%s",		    filename, strerror(errno));	    note.Notice(s);	  } else {	    chords.chordNames(chord_list);	    SetValue(m_chord, 0, ChangeList); // notify that list has changed	    SetValue(m_chord, 0, Value); // select first item in list	    string s;	    sprintf(s, "File: %s", BaseName(filename));	    SetString(m_status, s);	    SetValue(m_chord, isSens, Sensitive);	    SetValue(m_play, isSens, Sensitive);	    SetValue(M_Save, isSens, Sensitive);	    SetValue(M_SaveAs, isSens, Sensitive);	    SetValue(M_Print, isSens, Sensitive);	    SetValue(M_New, isSens, Sensitive);	    strings_t strings;	    chords.fingering(chord_list[GetValue(m_chord)], strings);	    myCanvas->DrawChord(strings, GetValue(m_notes));	  }	} else {	  note.Notice("No file selected.");	}	break;      }          case M_Save:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_Save)\n")        // see if file exists by trying to open for reading	  fstream fs(filename, ios::in);	if (!fs.bad()) {	  fs.close();	  vYNReplyDialog yesNo(this);	  int ans = yesNo.AskYN("File already exists. Okay to overwrite?");	  if (ans != 1) {	    break;	  }	}	int status = chords.save(filename);	if (status == -1) {	  string s;	  sprintf(s, "Unable to save file\n`%s'\n%s",		  filename, strerror(errno));	  note.Notice(s);	}	break;      }    case M_SaveAs:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_SaveAs)\n")	vFileSelect fsel(this);	static char* filter[] = { "*", 0 };	int fI = 0;	int ans = fsel.FileSelect("Save As", filename, 99, filter, fI);	if (ans && *filename) {	  int status = chords.save(filename);	  if (status == -1) {	    string s;	    sprintf(s, "Unable to save file\n`%s'\n%s",		    filename, strerror(errno));	    note.Notice(s);	  } else {	    string s;	    sprintf(s, "File: %s", BaseName(filename));	    SetString(m_status, s);	  }	} else {	  note.Notice("No file name selected.");	}	break;      }          case M_Print:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_Print)\n")	vPrinter printer;	int status = printer.Setup();	if (status) {	  note.Notice("Printing is not yet implemented.");	}	break;      }      #ifdef vDEBUG    case M_SetDebug:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_SetDebug)\n")	vDebugDialog debug(this);	debug.SetDebug();	break;      }#endif          case M_Exit:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_Exit)\n")	theApp->Exit();	break;      }          // Edit Menu commands    case M_UnDo:      break;    case M_Clear:      break;    case M_Cut:      break;          case M_Copy:      break;    case M_Paste:      break;	    // Options Menu commands    case m_rotated:      // not implemented yet      break;    case m_notes:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(m_notes)\n")      	ItemVal curval = GetValue(id); // Get current status	SetValue(m_notes, !curval, Checked); // Toggle check	if (chord_list[0] != 0) {	  strings_t strings;	  chords.fingering(chord_list[GetValue(m_chord)], strings);	  myCanvas->DrawChord(strings, GetValue(m_notes));	}	break;      }    // Help Menu commands    case M_About:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(M_About)\n")	vNoticeDialog note(this, "About");	note.Notice(		    "Guitar Tutor version 1.0\n"		    "by Jeff Tranter for the\n"		    "Linux Multimedia Guide\n"		    );	break;      }          // Command Bar commands    case m_chord:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(m_chord)\n")	strings_t strings;	chords.fingering(chord_list[val], strings);	myCanvas->DrawChord(strings, GetValue(m_notes));	break;      }    case m_play:      {	UserDebug(CmdEvents, "tCmdWindow:WindowCommand(m_play)\n")	int index = GetValue(m_chord);	UserDebug1(CmdEvents,		   "tCmdWindow:WindowCommand() playing chord %s\n",		   chord_list[index]);	int status = chords.play(chord_list[index]);	if (status == -1) {	  string s;	  sprintf(s, "Unable to play chord `%s'\n%s",		  chord_list[index], strerror(errno));	  note.Notice(s);	}	break;      }    default:      vCmdWindow::WindowCommand(id, val, cType);      break;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人vr18sexvr| 男男成人高潮片免费网站| 丰满白嫩尤物一区二区| 久久女同精品一区二区| 国产一区二区在线免费观看| 久久综合999| 国产成人午夜精品5599 | 亚洲成人资源在线| 色偷偷一区二区三区| 亚洲一区二区三区四区在线观看 | 欧美午夜一区二区三区| 亚州成人在线电影| 欧美大片一区二区| 成人网男人的天堂| 一区二区三区在线免费观看 | 不卡影院免费观看| 亚洲精品久久久久久国产精华液 | 成人黄色免费短视频| 亚洲色图欧洲色图| 欧美色图免费看| 韩国av一区二区三区| 亚洲色图视频网| 欧美一级午夜免费电影| 成人污污视频在线观看| 亚洲国产婷婷综合在线精品| 欧美xxxx在线观看| 97久久精品人人做人人爽| 亚洲国产日产av| 久久久精品天堂| 欧美日韩视频专区在线播放| 国产盗摄精品一区二区三区在线| 亚洲男人天堂av网| 久久夜色精品一区| 在线观看国产日韩| 国产一区久久久| 亚洲成a人片在线不卡一二三区| 欧美成人三级电影在线| 91久久精品一区二区二区| 激情成人午夜视频| 亚洲一区电影777| 中文字幕 久热精品 视频在线| 欧美视频在线一区二区三区 | 中文字幕一区二区三区在线播放 | 韩国v欧美v日本v亚洲v| 亚洲亚洲精品在线观看| 日本一区二区电影| 欧美一级夜夜爽| 欧美综合一区二区| bt7086福利一区国产| 久久精品av麻豆的观看方式| 亚洲永久免费av| 亚洲欧洲国产日韩| 国产偷国产偷精品高清尤物| 欧美一区二区三区免费视频| 91网站在线观看视频| 国产一区91精品张津瑜| 丝袜a∨在线一区二区三区不卡| ...中文天堂在线一区| 久久久久九九视频| 欧美tk丨vk视频| 这里只有精品99re| 欧美三片在线视频观看| 制服.丝袜.亚洲.另类.中文| 一本大道综合伊人精品热热| 99久久婷婷国产| 成人蜜臀av电影| 国产91丝袜在线播放九色| 美国毛片一区二区三区| 日韩成人午夜精品| 亚洲韩国精品一区| 亚洲电影一区二区| 一区二区三区欧美视频| 亚洲裸体xxx| 亚洲人成网站影音先锋播放| 国产精品国产自产拍在线| 国产精品日产欧美久久久久| 国产精品国产馆在线真实露脸| 国产天堂亚洲国产碰碰| 中文字幕精品—区二区四季| 日本一区二区三区免费乱视频| 久久久99免费| 中文字幕av在线一区二区三区| 国产女人aaa级久久久级| 国产情人综合久久777777| 国产欧美一区视频| 国产精品日日摸夜夜摸av| 亚洲天堂av一区| 悠悠色在线精品| 亚洲成人在线免费| 蜜臀av一区二区在线观看| 老司机免费视频一区二区三区| 国产剧情一区二区| 成人av午夜影院| 色欧美日韩亚洲| 91精品国产高清一区二区三区 | 亚洲一区二区精品3399| 亚洲18女电影在线观看| 捆绑紧缚一区二区三区视频| 精品一区二区三区在线播放| 国产精品香蕉一区二区三区| 成人国产电影网| 色综合久久中文综合久久97| 欧美日韩一区视频| 久久婷婷久久一区二区三区| 国产精品国产三级国产普通话蜜臀| 亚洲色图清纯唯美| 日本v片在线高清不卡在线观看| 国产在线一区观看| www.欧美色图| 欧美日韩一区中文字幕| www成人在线观看| 国产精品第五页| 免费成人av在线| 北岛玲一区二区三区四区| 欧美视频一区二区三区四区 | 午夜电影一区二区| 精品一区免费av| 色美美综合视频| 日韩视频在线一区二区| 国产精品色呦呦| 天堂午夜影视日韩欧美一区二区| 国产精品白丝av| 欧美视频一区二区在线观看| 国产亚洲精品7777| 亚洲第一福利视频在线| 国产91精品一区二区麻豆网站| 欧美性受xxxx黑人xyx性爽| 久久美女高清视频| 亚洲成人一区二区| 97超碰欧美中文字幕| 日韩免费观看高清完整版| 亚洲欧美福利一区二区| 久久er精品视频| 欧美亚洲综合色| 欧美精彩视频一区二区三区| 日韩精品亚洲一区| 日本韩国欧美国产| 国产欧美日韩在线视频| 蜜桃av噜噜一区二区三区小说| 一本久久综合亚洲鲁鲁五月天| 久久综合成人精品亚洲另类欧美| 五月激情丁香一区二区三区| 成人av电影免费观看| 久久久久久97三级| 美女网站色91| 欧美日韩精品系列| 亚洲色图一区二区三区| 成人精品视频一区二区三区| 久久久久久久久久久久久女国产乱 | 不卡电影免费在线播放一区| 欧美sm美女调教| 首页亚洲欧美制服丝腿| 色婷婷久久一区二区三区麻豆| 国产精品水嫩水嫩| 韩国一区二区三区| 欧美成人女星排名| 日本人妖一区二区| 欧美日韩国产综合视频在线观看 | 色综合咪咪久久| 国产精品久久久久久久久动漫| 国产精品一品视频| 久久久av毛片精品| 国产一区二区三区观看| 日韩一区国产二区欧美三区| 日韩影视精彩在线| 欧美精品一级二级| 五月婷婷色综合| 欧美日韩国产综合视频在线观看| 亚洲高清免费一级二级三级| 欧美影院一区二区| 日日摸夜夜添夜夜添国产精品| 欧美日韩国产综合久久| 无吗不卡中文字幕| 欧美一区永久视频免费观看| 日韩影院精彩在线| 精品福利一二区| 国产a区久久久| 中文字幕日韩av资源站| 91网页版在线| 五月激情综合网| 日韩免费电影一区| 国产精品一区二区无线| 欧美国产一区视频在线观看| av爱爱亚洲一区| 一区二区三区加勒比av| 欧美精品色一区二区三区| 日本aⅴ免费视频一区二区三区| 日韩欧美中文字幕公布| 精品一区二区影视| 亚洲国产精品成人综合 | 国产蜜臀97一区二区三区 | 国产一区二区不卡老阿姨| 国产精品美女www爽爽爽| 色8久久人人97超碰香蕉987| 亚洲一区二区三区中文字幕在线| 欧美日韩一区二区在线视频| 精品无人码麻豆乱码1区2区| 国产精品不卡视频| 91精选在线观看| 国产酒店精品激情|