NewItemPage

package com.zx.dialog;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;

import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.gface.date.DatePickerCombo;
import com.gface.date.DatePickerStyle;

public class NewItemPage extends WizardPage
{
/** 页面名称 */
public static final String NEW_ITEM_PAGE = "NewItemPage";

public static final String[] ITEM_BIG_TYPE = new String[] { "水电用材", "瓦工用材",
"木工用材", "油漆用材", "其他" };

public static final String[][] ITEM_DETAIL_TYPE = new String[][] {
{ "金牛4\"水管", "内丝弯", "内丝三通", "内丝直接", "等径三通", "等径直接", "过桥弯", "异径直接",
"堵头", "外丝", "软管", "生料带", "勾钉", "水管卡", "中财40PVC管", "弯头",
"中财50PVC管", "PVC胶", "中财4\"线管", "锁母", "直接", "单暗盒", "双暗盒",
"远东2.52线", "1.52线", "山湖电视线", "普天网线", "胶布", "4\"管卡", "黄腊管",
"钢丝", "水泥", "细沙", "扫把", "垃圾袋", "防水剂" },
{ "黄沙", "水泥", "红砖" },
{ "白松木方", "拉法基石膏板", "莫干山集成板", "百源木工板", "莫干山红樱桃", "柳安五厘板", "多层九厘板",
"2.5自攻钉", "38钢排钉", "50钢排钉", "F30", "F20", "F15", "蚊钉",
"2.5元钉", "3寸元钉", "3.5寸元钉", "沙纸180#", "宁扬白乳胶", "小红桶", "刷子",
"刀片", "线条", "玻璃" },
{ "华润清底9.5kg", "华润清面9.5kg", "宁扬901胶", "宁兰500#", "白玉兰石膏粉", "高士熟胶粉",
"邦邦滚筒(粗)", "邦邦滚筒(细)", "犀利水沙360#", "犀利水沙400#", "小红桶", "美纹纸",
"绷带", "除尘布", "毛巾", "红、黄粉", "4寸羊毛刷", "4寸棕毛刷", "长江防锈漆",
"立邦美加丽", "过滤网" }, { "其他" } };

private Combo typeTxt;

private Text priceTxt;

private Text numTxt;

private DatePickerCombo dateTxt;

private Text remarkTxt;

private ItemBean item;

private long userId;

private static HashMap MAP_TYPE = new HashMap();
static
{
for ( int i = 0 ; i < ITEM_BIG_TYPE.length ; i++ )
{
MAP_TYPE.put(ITEM_BIG_TYPE[i], i);
}
}

public void setUserId ( long userId )
{
this.userId = userId;
}

protected NewItemPage()
{
super(NEW_ITEM_PAGE);
}

public void createControl ( Composite parent )
{
/** 设置面板布局 */
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));

new Label(composite, SWT.NONE).setText("材料类别:");
Combo bigTypeTxt = new Combo(composite, SWT.BORDER | SWT.READ_ONLY);
bigTypeTxt.setItems(ITEM_BIG_TYPE);
bigTypeTxt.select(0);
bigTypeTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

new Label(composite, SWT.NONE).setText("材料名称:");
typeTxt = new Combo(composite, SWT.BORDER);
typeTxt.setItems(ITEM_DETAIL_TYPE[0]);
typeTxt.select(0);
typeTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

bigTypeTxt.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected ( SelectionEvent e )
{
Combo cb = (Combo) e.widget;
if ( MAP_TYPE.get(cb.getText()) != null )
{
int index = Integer.parseInt(String.valueOf(MAP_TYPE
.get(cb.getText())));
typeTxt.setItems(ITEM_DETAIL_TYPE[index]);
typeTxt.select(0);
}
}
});

new Label(composite, SWT.NONE).setText("单价:");
priceTxt = new Text(composite, SWT.BORDER);
priceTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

new Label(composite, SWT.NONE).setText("数量:");
numTxt = new Text(composite, SWT.BORDER);
numTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

int dpStyle = DatePickerStyle.BUTTONS_ON_BOTTOM
| DatePickerStyle.HIDE_WHEN_NOT_IN_FOCUS
| DatePickerStyle.SINGLE_CLICK_SELECTION
| DatePickerStyle.WEEKS_STARTS_ON_MONDAY
| DatePickerStyle.YEAR_BUTTONS | 0;
new Label(composite, SWT.NONE).setText("时间:");
dateTxt = new DatePickerCombo(composite, SWT.BORDER | SWT.READ_ONLY,
dpStyle);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
dateTxt.setDateFormat(sdf);
dateTxt.setEditable(false);
Calendar calendar = Calendar.getInstance();
dateTxt.setDate(calendar.getTime());
dateTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

new Label(composite, SWT.NONE).setText("备注:");
remarkTxt = new Text(composite, SWT.BORDER);
remarkTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

this.setControl(composite);
}

public ItemBean getItem ( )
{
if ( this.item == null )
{
this.item = new ItemBean();
}
this.item.setBelongId(this.userId);
return this.item;
}

}
python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值