📄 popup.cc
字号:
_text2 = XmCreateText(row, "Start Time", args, n); XtManageChild(_text2); n = 0; XtSetArg(args[n], XmNcolumns, 10); n++; XtSetArg(args[n], XmNmarginWidth, 2); n++; _text3 = XmCreateText(row, "Stop Date", args, n); XtManageChild(_text3); n = 0; XtSetArg(args[n], XmNcolumns, 10); n++; XtSetArg(args[n], XmNmarginWidth, 2); n++; _text4 = XmCreateText(row, "Stop Time", args, n); XtManageChild(_text4); n = 0; XtSetArg(args[n], XmNcolumns, 10); n++; XtSetArg(args[n], XmNmarginWidth, 2); n++; _text5 = XmCreateText(row, "Each File Limit", args, n); XtManageChild(_text5); n = 0; XtSetArg(args[n], XmNcolumns, 10); n++; XtSetArg(args[n], XmNmarginWidth, 2); n++; _text6 = XmCreateText(row, "Max File Limit", args, n); XtManageChild(_text6); n = 0; file = XmCreatePushButtonGadget(row, "File", args, n); XtAddCallback(file, XmNactivateCallback, popup_record_callback, shell); XtManageChild(file); n = 0; place1 = XmCreateLabel(row, "", args, n); XtManageChild(place1); n = 0; place2 = XmCreateLabel(row, "", args, n); XtManageChild(place2); n = 0; place3 = XmCreateLabel(row, "", args, n); XtManageChild(place3); n = 0; place4 = XmCreateLabel(row, "", args, n); XtManageChild(place4); n = 0; place5 = XmCreateLabel(row, "", args, n); XtManageChild(place5); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, row); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNvisibleItemCount, 3); n++; list1 = XmCreateScrolledList(form1, "List", args, n); XtManageChild(row); XtManageChild(list1); XtManageChild(form1); n = 0; XtSetArg(args[n], XmNfractionBase, 4); n++; form2 = XmCreateForm(pane, "Form2", args, n); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 0); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 1); n++; close = XmCreatePushButtonGadget(form2, "Close", args, n); XtAddCallback(close, XmNactivateCallback, popup_record_close, shell); XtManageChild(close); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 1); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 2); n++; edit = XmCreatePushButtonGadget(form2, "Edit", args, n); XtAddCallback(edit, XmNactivateCallback, popup_record_edit, NULL); XtManageChild(edit); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 2); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 3); n++; delete1 = XmCreatePushButtonGadget(form2, "Delete", args, n); XtAddCallback(delete1, XmNactivateCallback, popup_record_delete, NULL); XtManageChild(delete1); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 3); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 4); n++; add = XmCreatePushButtonGadget(form2, "Add", args, n); XtAddCallback(add, XmNactivateCallback, popup_record_add, NULL); XtManageChild(add); XtManageChild(form2); XtManageChild(pane); XtPopup(shell, XtGrabNone); _timer_record_mode = TRUE; if (_recorder == NULL) { _recorder = new aflibAudioRecorder(); } popup_record_update_list();}voidpopup_record_close( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ XtDestroyWidget((Widget) client_data); _timer_record_mode = TRUE; audio_timer_record(_recorder);}voidpopup_record_edit( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){}voidpopup_record_add( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ char * str = NULL; string s_date, s_time; long long each_limit; long long max_limit; // Get Start Date str = XmTextGetString(_text1); s_date = str; XtFree(str); // Get Start Time str = XmTextGetString(_text2); s_time = str; XtFree(str); aflibDateTime start(s_date, s_time); // Get Stop Date str = XmTextGetString(_text3); s_date = str; XtFree(str); // Get Stop Time str = XmTextGetString(_text4); s_time = str; XtFree(str); // Get Each Limit str = XmTextGetString(_text5); //each_limit = atoll(str); sscanf(str, "%qd", &each_limit); XtFree(str); // Get Max Limit str = XmTextGetString(_text6); //max_limit = atoll(str); sscanf(str, "%qd", &max_limit); XtFree(str); aflibDateTime stop(s_date, s_time); _recorder->addRecordItem(start, stop, _record_file, _format_type, max_limit, each_limit, _config); popup_record_update_list();}voidpopup_record_update_list(){ int segs = 0; aflibDateTime start_date, stop_date; string file; string file_type; long long max_limit; long long each_limit; aflibConfig config; int i; char buf[2048]; XmString str; segs = _recorder->getNumberOfRecordItems(); XmListDeleteAllItems(list1); for (i = 1; i <= segs; i++) { _recorder->getRecordItem(i, start_date, stop_date, file, file_type, max_limit, each_limit, config); sprintf(buf, "%d %2.2d/%2.2d/%4d %2.2d:%2.2d:%2.2d %2.2d/%2.2d/%4d %2.2d:%2.2d:%2.2d %lld %lld %s", i, start_date.getMonth(), start_date.getDay(), start_date.getYear(), start_date.getHour(), start_date.getMinute(), start_date.getSecond(), stop_date.getMonth(), stop_date.getDay(), stop_date.getYear(), stop_date.getHour(), stop_date.getMinute(), stop_date.getSecond(), each_limit, max_limit, file.c_str()); str = XmStringCreateSimple(buf); XmListAddItem(list1, str, i); XmStringFree(str); }}voidpopup_record_delete( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ int *position_list; int position_count; XmListGetSelectedPos(list1, &position_list, &position_count); if (position_count != 0) { _recorder->removeRecordItem(position_list[0]); } // TBD probably need to delete something popup_record_update_list();}voidpopup_bit_callback( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ _bytes_per_sample = (int)client_data;}voidpopup_channels_callback( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ _channels = (int)client_data;}voidpopup_rate_callback( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ _samples_per_second = (int)client_data;}voidpopup_config_ok( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ aflibConfig config; config.setSamplesPerSecond(_samples_per_second); if (_bytes_per_sample == 1) { config.setSampleSize(AFLIB_DATA_8S); } else { config.setSampleSize(AFLIB_DATA_16U); } config.setChannels(_channels); if (_timer_record_mode == TRUE) { _config = config; } else { audio_record(_record_file.c_str(), config, _format_type); gui_set_record_mode(TRUE); } XtDestroyWidget((Widget) client_data);}voidpopup_config_cancel( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ XtDestroyWidget((Widget) client_data);}voidpopup_format_cb( Widget w, caddr_t client_data, XmAnyCallbackStruct *cbs){ _format_type = (char *)client_data;}voidpopup_config_dialog( Widget w){ Widget shell, pane, form1, form2; Widget channels, stereo, mono; Widget label1, label2, label3, label4; Widget bitwid, bit8, bit16; Widget data_rate, rate_22050, rate_44100; Widget data_format; Widget cancel, ok; Widget format_menu, format_pulldown, temp; Arg args[10]; int n; list<string> formats; list<string> descriptions; list<string>::iterator it; n = 0; XtSetArg(args[n], XmNdeleteResponse, XmDESTROY); n++; shell = XmCreateDialogShell(w, "Record Config", args, n); n = 0; pane = XmCreatePanedWindow(shell, "Config Pane", args, n); n = 0; form1 = XmCreateForm(pane, "Form1", args, n); n = 0; XtSetArg(args[n], XmNradioBehavior, True); n++; XtSetArg(args[n], XmNradioAlwaysOne, True); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 20); n++; channels = XmCreateRowColumn(form1, "Channels", args, n); XtManageChild(channels); n = 0; XtSetArg(args[n], XmNborderWidth, 0); n++; label1 = XmCreateLabel(channels, "MODE", args, n); XtManageChild(label1); n = 0; XtSetArg(args[n], XmNset, True); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; mono = XmCreateToggleButton(channels, "Mono", args, n); XtManageChild(mono); XtAddCallback(mono, XmNarmCallback, popup_channels_callback, (void *)1); n = 0; XtSetArg(args[n], XmNset, False); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; stereo = XmCreateToggleButton(channels, "Stereo", args, n); XtManageChild(stereo); XtAddCallback(stereo, XmNarmCallback, popup_channels_callback, (void *)2); n = 0; XtSetArg(args[n], XmNradioBehavior, True); n++; XtSetArg(args[n], XmNradioAlwaysOne, True); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, channels); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 40); n++; bitwid = XmCreateRowColumn(form1, "Bit Width", args, n); XtManageChild(bitwid); n = 0; XtSetArg(args[n], XmNborderWidth, 0); n++; label2 = XmCreateLabel(bitwid, "BITS", args, n); XtManageChild(label2); n = 0; XtSetArg(args[n], XmNset, True); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; bit8 = XmCreateToggleButton(bitwid, "8 Bit", args, n); XtManageChild(bit8); XtAddCallback(bit8, XmNarmCallback, popup_bit_callback, (void *)8); n = 0; XtSetArg(args[n], XmNset, False); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; bit16 = XmCreateToggleButton(bitwid, "16 Bit", args, n); XtManageChild(bit16); XtAddCallback(bit16, XmNarmCallback, popup_bit_callback, (void *)16); n = 0; XtSetArg(args[n], XmNradioBehavior, True); n++; XtSetArg(args[n], XmNradioAlwaysOne, True); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, bitwid); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 60); n++; data_rate = XmCreateRowColumn(form1, "Date Rate", args, n); XtManageChild(data_rate); n = 0; XtSetArg(args[n], XmNborderWidth, 0); n++; label3 = XmCreateLabel(data_rate, "RATE", args, n); XtManageChild(label3); n = 0; XtSetArg(args[n], XmNset, True); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; rate_22050 = XmCreateToggleButton(data_rate, "22050", args, n); XtManageChild(rate_22050); XtAddCallback(rate_22050, XmNarmCallback, popup_rate_callback, (void *)22050); n = 0; XtSetArg(args[n], XmNset, False); n++; XtSetArg(args[n], XmNborderWidth, 0); n++; rate_44100 = XmCreateToggleButton(data_rate, "44100", args, n); XtManageChild(rate_44100); XtAddCallback(rate_44100, XmNarmCallback, popup_rate_callback, (void *)44100); n = 0; XtSetArg(args[n], XmNradioBehavior, True); n++; XtSetArg(args[n], XmNradioAlwaysOne, True); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, data_rate); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; data_format = XmCreateRowColumn(form1, "Format", args, n); XtManageChild(data_format); n = 0; XtSetArg(args[n], XmNborderWidth, 0); n++; label4 = XmCreateLabel(data_format, "FORMAT", args, n); XtManageChild(label4); n = 0; format_pulldown = XmCreatePulldownMenu(data_format, "pulldown", args, n); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNtopWidget, label4); n++; XtSetArg(args[n], XmNsubMenuId, format_pulldown); n++; format_menu = XmCreateOptionMenu(data_format, "Format Menu", args, n); aflibFile::returnSupportedFormats(formats, descriptions); for (it = formats.begin(); it != formats.end(); it++) { char * format_str = (char *)(*it).c_str(); n = 0; temp = XmCreatePushButtonGadget(format_pulldown, format_str, args, n); XtManageChild(temp); XtAddCallback(temp, XmNactivateCallback, popup_format_cb, format_str); } // Initialize to the first item in the list _format_type = formats.begin()->c_str(); XtManageChild(format_menu); XtManageChild(form1); n = 0; XtSetArg(args[n], XmNfractionBase, 2); n++; form2 = XmCreateForm(pane, "Form2", args, n); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 0); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 1); n++; ok = XmCreatePushButtonGadget(form2, "OK", args, n); XtAddCallback(ok, XmNactivateCallback, popup_config_ok, shell); XtManageChild(ok); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftPosition, 1); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightPosition, 2); n++; cancel = XmCreatePushButtonGadget(form2, "Cancel", args, n); XtAddCallback(cancel, XmNactivateCallback, popup_config_cancel, shell); XtManageChild(cancel); XtManageChild(form2); XtManageChild(pane); XtPopup(shell, XtGrabNone); // initialize vars _channels = 1; _samples_per_second = 22050; _bytes_per_sample = 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -