1 //=============================================================================
2 //  MuseScore
3 //  Music Composition & Notation
4 //
5 //  Copyright (C) 2011 Werner Schweer and others
6 //
7 //  This program is free software; you can redistribute it and/or modify
8 //  it under the terms of the GNU General Public License version 2
9 //  as published by the Free Software Foundation and appearing in
10 //  the file LICENSE.GPL
11 //=============================================================================
12 
13 #include "musescore.h"
14 #include "omrpanel.h"
15 #include "scoreview.h"
16 #include "omr/omrview.h"
17 #include "omr/omr.h"
18 #include "libmscore/score.h"
19 
20 namespace Ms {
21 
22 //---------------------------------------------------------
23 //   showOmrPanel
24 //---------------------------------------------------------
25 
showOmrPanel(bool visible)26 void MuseScore::showOmrPanel(bool visible)
27       {
28       QAction* a = getAction("omr");
29       if (visible) {
30             if (!omrPanel) {
31                   omrPanel = new OmrPanel();
32                   connect(omrPanel, SIGNAL(omrPanelVisible(bool)), a, SLOT(setChecked(bool)));
33                   addDockWidget(Qt::RightDockWidgetArea, omrPanel);
34                   }
35             }
36       if (omrPanel)
37             omrPanel->setVisible(visible);
38       if (omrPanel && visible) {
39             if (cv && cv->omrView())
40                   omrPanel->setOmrView(cv->omrView());
41             else
42                   omrPanel->setOmrView(0);
43             }
44       a->setChecked(visible);
45       }
46 
47 //---------------------------------------------------------
48 //   OmrPanel
49 //---------------------------------------------------------
50 
OmrPanel(QWidget * parent)51 OmrPanel::OmrPanel(QWidget* parent)
52    : QDockWidget(tr("PDF Transcribing Assistant"), parent)
53       {
54       setObjectName("omrpanel");
55       setAllowedAreas(Qt::DockWidgetAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea));
56       QWidget* mainWidget = new QWidget;
57       mainWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
58       setWidget(mainWidget);
59 
60       op.setupUi(mainWidget);
61 
62       setOmrView(0);
63 
64       connect(op.showBarlines, SIGNAL(toggled(bool)), SLOT(showBarlinesToggled(bool)));
65       connect(op.showLines,    SIGNAL(toggled(bool)), SLOT(showLinesToggled(bool)));
66       connect(op.showSlices,   SIGNAL(toggled(bool)), SLOT(showSlicesToggled(bool)));
67       connect(op.showStaves,   SIGNAL(toggled(bool)), SLOT(showStavesToggled(bool)));
68       connect(op.spatium,      SIGNAL(valueChanged(double)), SLOT(spatiumChanged(double)));
69       connect(op.process,      SIGNAL(clicked()), SLOT(processClicked()));
70       }
71 
72 //---------------------------------------------------------
73 //   closeEvent
74 //---------------------------------------------------------
75 
closeEvent(QCloseEvent * ev)76 void OmrPanel::closeEvent(QCloseEvent* ev)
77       {
78       emit omrPanelVisible(false);
79       QWidget::closeEvent(ev);
80       }
81 
82 //---------------------------------------------------------
83 //   showBarlinesToggled
84 //---------------------------------------------------------
85 
showBarlinesToggled(bool val)86 void OmrPanel::showBarlinesToggled(bool val)
87       {
88       if (omrView)
89             omrView->setShowBarlines(val);
90       }
91 
92 //---------------------------------------------------------
93 //   showLinesToggled
94 //---------------------------------------------------------
95 
showLinesToggled(bool val)96 void OmrPanel::showLinesToggled(bool val)
97       {
98       if (omrView)
99             omrView->setShowLines(val);
100       }
101 
102 //---------------------------------------------------------
103 //   showSlicesToggled
104 //---------------------------------------------------------
105 
showSlicesToggled(bool val)106 void OmrPanel::showSlicesToggled(bool val)
107       {
108       if (omrView)
109             omrView->setShowSlices(val);
110       }
111 
112 //---------------------------------------------------------
113 //   showStavesToggled
114 //---------------------------------------------------------
115 
showStavesToggled(bool val)116 void OmrPanel::showStavesToggled(bool val)
117       {
118       if (omrView)
119             omrView->setShowStaves(val);
120       }
121 
122 //---------------------------------------------------------
123 //   spatiumChanged
124 //---------------------------------------------------------
125 
spatiumChanged(double val)126 void OmrPanel::spatiumChanged(double val)
127       {
128       if (omrView) {
129             omrView->omr()->setSpatium(val * omrView->omr()->dpmm());
130             omrView->update();
131             }
132       }
133 
134 //---------------------------------------------------------
135 //   blockSignals
136 //---------------------------------------------------------
137 
blockSignals(bool val)138 void OmrPanel::blockSignals(bool val)
139       {
140       op.showBarlines->blockSignals(val);
141       op.showLines->blockSignals(val);
142       op.showSlices->blockSignals(val);
143       op.showStaves->blockSignals(val);
144       op.spatium->blockSignals(val);
145       }
146 
147 //---------------------------------------------------------
148 //   enableGui
149 //---------------------------------------------------------
150 
enableGui(bool val)151 void OmrPanel::enableGui(bool val)
152       {
153       op.showBarlines->setEnabled(val);
154       op.showLines->setEnabled(val);
155       op.showSlices->setEnabled(val);
156       op.showStaves->setEnabled(val);
157       op.spatium->setEnabled(val);
158       op.process->setEnabled(val);
159       }
160 
161 //---------------------------------------------------------
162 //   setOmr
163 //---------------------------------------------------------
164 
setOmrView(OmrView * v)165 void OmrPanel::setOmrView(OmrView* v)
166       {
167       omrView = v;
168       if (omrView) {
169             enableGui(true);
170             blockSignals(true);
171 
172             op.showBarlines->setChecked(omrView->showBarlines());
173             op.showLines->setChecked(omrView->showLines());
174             op.showSlices->setChecked(omrView->showSlices());
175             op.showStaves->setChecked(omrView->showStaves());
176             op.spatium->setValue(omrView->omr()->spatiumMM());
177 
178             blockSignals(false);
179             }
180       else {
181             enableGui(false);
182             }
183       }
184 
185 //---------------------------------------------------------
186 //   processClicked
187 //---------------------------------------------------------
188 
processClicked()189 void OmrPanel::processClicked()
190       {
191       if (omrView) {
192             //omrView->omr()->process();
193             omrView->update();
194             setOmrView(omrView);    // update values
195             }
196       }
197 
198 }
199 
200 
201