Browse Source

Adding GUI functionality, mainly in loops. Also, new logo plot.

tags/1.6.1
Trevor Irons 4 years ago
parent
commit
785d0edf68
5 changed files with 251 additions and 91 deletions
  1. 92
    38
      akvo/gui/addCircularLoop.ui
  2. 93
    19
      akvo/gui/akvoGUI.py
  3. 46
    0
      akvo/gui/logo.py
  4. 18
    32
      akvo/gui/main.ui
  5. 2
    2
      setup.py

+ 92
- 38
akvo/gui/addCircularLoop.ui View File

@@ -7,21 +7,48 @@
7 7
     <x>0</x>
8 8
     <y>0</y>
9 9
     <width>400</width>
10
-    <height>300</height>
10
+    <height>395</height>
11 11
    </rect>
12 12
   </property>
13 13
   <property name="windowTitle">
14 14
    <string>Dialog</string>
15 15
   </property>
16 16
   <layout class="QGridLayout" name="gridLayout">
17
+   <item row="2" column="0">
18
+    <widget class="QLabel" name="label_3">
19
+     <property name="text">
20
+      <string>height (m)</string>
21
+     </property>
22
+    </widget>
23
+   </item>
24
+   <item row="6" column="2">
25
+    <widget class="QDoubleSpinBox" name="dip">
26
+     <property name="enabled">
27
+      <bool>false</bool>
28
+     </property>
29
+     <property name="toolTip">
30
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The dip designates the angle between the normal and the ground. Zero designates a loop that is flat on the ground, whereas 90 is a vertical loop. This value in turn with azimuth allows for arbitrary orientation of the loops. If azimuth is zero, and dip is 90, the loop has a normal aligned in the northing direction. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
31
+     </property>
32
+     <property name="maximum">
33
+      <double>90.000000000000000</double>
34
+     </property>
35
+    </widget>
36
+   </item>
37
+   <item row="7" column="0">
38
+    <widget class="QLabel" name="label_8">
39
+     <property name="text">
40
+      <string>azimuth (°)</string>
41
+     </property>
42
+    </widget>
43
+   </item>
17 44
    <item row="0" column="0">
18 45
     <widget class="QLabel" name="label">
19 46
      <property name="text">
20
-      <string>Centre Northing </string>
47
+      <string>centre northing (m)</string>
21 48
      </property>
22 49
     </widget>
23 50
    </item>
24
-   <item row="0" column="1">
51
+   <item row="0" column="2">
25 52
     <widget class="QDoubleSpinBox" name="centreNorth">
26 53
      <property name="minimum">
27 54
       <double>-999999999.000000000000000</double>
@@ -31,32 +58,41 @@
31 58
      </property>
32 59
     </widget>
33 60
    </item>
34
-   <item row="1" column="0">
35
-    <widget class="QLabel" name="label_2">
61
+   <item row="6" column="0">
62
+    <widget class="QLabel" name="label_7">
36 63
      <property name="text">
37
-      <string>Centre Easting</string>
64
+      <string>dip (°)</string>
38 65
      </property>
39 66
     </widget>
40 67
    </item>
41
-   <item row="1" column="1">
42
-    <widget class="QDoubleSpinBox" name="centreEast">
43
-     <property name="minimum">
44
-      <double>-99999999.000000000000000</double>
68
+   <item row="10" column="2">
69
+    <widget class="QDialogButtonBox" name="buttonBox">
70
+     <property name="orientation">
71
+      <enum>Qt::Horizontal</enum>
45 72
      </property>
46
-     <property name="maximum">
47
-      <double>99999999.989999994635582</double>
73
+     <property name="standardButtons">
74
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
48 75
      </property>
49 76
     </widget>
50 77
    </item>
51
-   <item row="2" column="0">
52
-    <widget class="QLabel" name="label_3">
53
-     <property name="text">
54
-      <string>height </string>
78
+   <item row="3" column="2">
79
+    <widget class="QDoubleSpinBox" name="loopRadius">
80
+     <property name="toolTip">
81
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Radius of the loop&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
82
+     </property>
83
+     <property name="minimum">
84
+      <double>0.100000000000000</double>
85
+     </property>
86
+     <property name="maximum">
87
+      <double>600.000000000000000</double>
88
+     </property>
89
+     <property name="value">
90
+      <double>50.000000000000000</double>
55 91
      </property>
56 92
     </widget>
57 93
    </item>
58
-   <item row="2" column="1">
59
-    <widget class="QDoubleSpinBox" name="doubleSpinBox">
94
+   <item row="2" column="2">
95
+    <widget class="QDoubleSpinBox" name="loopHeight">
60 96
      <property name="toolTip">
61 97
       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Akvo uses a positive down convention, a slight negative value to the loop height improves numerical stability using digital filtering hankel transforms. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
62 98
      </property>
@@ -71,50 +107,68 @@
71 107
      </property>
72 108
     </widget>
73 109
    </item>
110
+   <item row="1" column="0">
111
+    <widget class="QLabel" name="label_2">
112
+     <property name="text">
113
+      <string>centre easting (m)</string>
114
+     </property>
115
+    </widget>
116
+   </item>
117
+   <item row="7" column="2">
118
+    <widget class="QDoubleSpinBox" name="az">
119
+     <property name="enabled">
120
+      <bool>false</bool>
121
+     </property>
122
+    </widget>
123
+   </item>
74 124
    <item row="3" column="0">
75 125
     <widget class="QLabel" name="label_4">
76 126
      <property name="text">
77
-      <string>radius</string>
127
+      <string>radius (m)</string>
78 128
      </property>
79 129
     </widget>
80 130
    </item>
81
-   <item row="3" column="1">
82
-    <widget class="QDoubleSpinBox" name="doubleSpinBox_2">
83
-     <property name="toolTip">
84
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Radius of the loop&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
131
+   <item row="4" column="0">
132
+    <widget class="QLabel" name="label_6">
133
+     <property name="text">
134
+      <string>turns</string>
85 135
      </property>
136
+    </widget>
137
+   </item>
138
+   <item row="1" column="2">
139
+    <widget class="QDoubleSpinBox" name="centreEast">
86 140
      <property name="minimum">
87
-      <double>0.100000000000000</double>
141
+      <double>-99999999.000000000000000</double>
88 142
      </property>
89 143
      <property name="maximum">
90
-      <double>299.990000000000009</double>
144
+      <double>99999999.989999994635582</double>
91 145
      </property>
92 146
     </widget>
93 147
    </item>
94
-   <item row="4" column="0">
148
+   <item row="5" column="0">
95 149
     <widget class="QLabel" name="label_5">
96 150
      <property name="text">
97 151
       <string>segments</string>
98 152
      </property>
99 153
     </widget>
100 154
    </item>
101
-   <item row="4" column="1">
102
-    <widget class="QSpinBox" name="spinBox">
103
-     <property name="toolTip">
104
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Currently Akvo/Merlin calculates circular loops using segments of wire, forming a polygon. Analytic circular loops may be added in the future. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
105
-     </property>
155
+   <item row="4" column="2">
156
+    <widget class="QSpinBox" name="loopTurns">
106 157
      <property name="minimum">
107
-      <number>5</number>
158
+      <number>1</number>
159
+     </property>
160
+     <property name="maximum">
161
+      <number>100000</number>
108 162
      </property>
109 163
     </widget>
110 164
    </item>
111
-   <item row="5" column="1">
112
-    <widget class="QDialogButtonBox" name="buttonBox">
113
-     <property name="orientation">
114
-      <enum>Qt::Horizontal</enum>
165
+   <item row="5" column="2">
166
+    <widget class="QSpinBox" name="segments">
167
+     <property name="toolTip">
168
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Currently Akvo/Merlin calculates circular loops using segments of wire, forming a polygon. Analytic circular loops may be added in the future. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
115 169
      </property>
116
-     <property name="standardButtons">
117
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
170
+     <property name="minimum">
171
+      <number>5</number>
118 172
      </property>
119 173
     </widget>
120 174
    </item>

+ 93
- 19
akvo/gui/akvoGUI.py View File

@@ -29,9 +29,11 @@ from copy import deepcopy
29 29
 from matplotlib.backends.backend_qt4 import NavigationToolbar2QT #as NavigationToolbar
30 30
 import datetime, time
31 31
 
32
-
33 32
 from akvo.tressel import mrsurvey 
34
-#from akvo.lemma import pyLemmaCore  # Looking ahead! 
33
+
34
+from pyLemma import LemmaCore  
35
+from pyLemma import FDEM1D 
36
+from pyLemma import Merlin
35 37
 
36 38
 import pkg_resources  # part of setuptools
37 39
 version = pkg_resources.require("Akvo")[0].version
@@ -205,9 +207,12 @@ class ApplicationWindow(QtWidgets.QMainWindow):
205 207
         self.ui.dateEdit.dateChanged.connect( self.logSite )
206 208
         # this may call the yaml stuff too often... 
207 209
         self.ui.txtComments.textChanged.connect( self.logSite )
210
+        
211
+        self.ui.plotLoops.pressed.connect( self.plotLoops2 )       
208 212
  
209
-        # invert
213
+        # Loops
210 214
         self.ui.addLoopButton.pressed.connect( self.loopAdd )
215
+        self.loops = {}          
211 216
  
212 217
         # hide header info box 
213 218
         #self.ui.headerFileBox.setVisible(False) 
@@ -262,8 +267,10 @@ class ApplicationWindow(QtWidgets.QMainWindow):
262 267
         self.ui.loopTableWidget.setDragEnabled(False)
263 268
         #self.ui.loopTableWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
264 269
 
265
-        self.loops = {}          
266
-
270
+        self.ui.txRxTable.setColumnCount(4)
271
+        self.ui.txRxTable.setRowCount(0)
272
+        self.ui.txRxTable.setHorizontalHeaderLabels( ["Label", "Geom.","Turns","Tx/Rx"] )
273
+        
267 274
         ##########################################################################
268 275
         # layer Table 
269 276
         self.ui.layerTableWidget.setRowCount(80)       
@@ -355,11 +362,10 @@ class ApplicationWindow(QtWidgets.QMainWindow):
355 362
     
356 363
     def loopAdd(self):
357 364
 
358
-        print(self.ui.loopLabel.text())
359
-        print(self.ui.loopGeom.currentText())
360
-        print(self.ui.loopType.currentText())
361
-           
362
-        print( "label len", len(self.ui.loopLabel.text()) ) 
365
+        #print(self.ui.loopLabel.text())
366
+        #print(self.ui.loopGeom.currentText())
367
+        #print(self.ui.loopType.currentText())
368
+        #print( "label len", len(self.ui.loopLabel.text()) ) 
363 369
         if len(self.ui.loopLabel.text().strip()) == 0: 
364 370
             Error = QtWidgets.QMessageBox()
365 371
             Error.setWindowTitle("Error!")
@@ -374,7 +380,52 @@ class ApplicationWindow(QtWidgets.QMainWindow):
374 380
                 dialog.exec_()
375 381
                 dialog.show()
376 382
                 if dialog.result():
377
-                    print("centre north", dialog.ui.centreNorth.value())
383
+                    cn = dialog.ui.centreNorth.value()
384
+                    ce = dialog.ui.centreEast.value()
385
+                    ht = dialog.ui.loopHeight.value()
386
+                    rad = dialog.ui.loopRadius.value()
387
+                    turns = dialog.ui.loopTurns.value()
388
+                    ns = dialog.ui.segments.value()
389
+                    #print("dip", dialog.ui.dip.value())
390
+                    #print("azimuth", dialog.ui.az.value())
391
+                    
392
+                    self.loops[self.ui.loopLabel.text()] = FDEM1D.PolygonalWireAntenna()
393
+                    self.loops[self.ui.loopLabel.text()].SetNumberOfPoints( dialog.ui.segments.value() + 1 )
394
+                    self.loops[self.ui.loopLabel.text()].SetNumberOfTurns( dialog.ui.loopTurns.value() )
395
+
396
+                    points = np.linspace(0, 2*np.pi, dialog.ui.segments.value()+1)
397
+                    for iseg, ipt in enumerate(points):
398
+                        #self.loops[self.ui.loopLabel.text()].SetPoint(iseg,( dialog.ui.centreNorth.value(),  dialog.ui.centreEast.value(), dialog.ui.loopHeight.value()))
399
+                        self.loops[self.ui.loopLabel.text()].SetPoint(iseg, ( cn+rad*np.sin(ipt), ce+rad*np.cos(ipt), ht ))
400
+                        #self.loops[self.ui.loopLabel.text()].SetPoint(1,(150,  50, -1e-3))
401
+                    
402
+                    self.loops[self.ui.loopLabel.text()].SetNumberOfFrequencies(1)
403
+                    #self.loops[self.ui.loopLabel.text].SetFrequency(0,2246) 
404
+                    self.loops[self.ui.loopLabel.text()].SetCurrent(1.)
405
+                   
406
+                    # update the table 
407
+                    self.ui.txRxTable.setRowCount( len(self.loops.keys()) )
408
+                    
409
+                    pCell = QtWidgets.QTableWidgetItem()
410
+                    pCell.setText( self.ui.loopLabel.text() ) 
411
+                    pCell.setFlags( QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled )
412
+                    self.ui.txRxTable.setItem( len(self.loops.keys())-1, 0, pCell)
413
+                    
414
+                    gCell = QtWidgets.QTableWidgetItem()
415
+                    gCell.setText( self.ui.loopGeom.currentText() ) 
416
+                    gCell.setFlags( QtCore.Qt.ItemIsEnabled )
417
+                    self.ui.txRxTable.setItem( len(self.loops.keys())-1, 1, gCell)
418
+                    
419
+                    tCell = QtWidgets.QTableWidgetItem()
420
+                    tCell.setText( str(dialog.ui.loopTurns.value()) ) 
421
+                    tCell.setFlags( QtCore.Qt.ItemIsEnabled )
422
+                    self.ui.txRxTable.setItem( len(self.loops.keys())-1, 2, tCell)
423
+                    
424
+                    txCell = QtWidgets.QTableWidgetItem()
425
+                    txCell.setText( str(self.ui.loopType.currentText()) ) 
426
+                    txCell.setFlags( QtCore.Qt.ItemIsEnabled )
427
+                    self.ui.txRxTable.setItem( len(self.loops.keys())-1, 3, txCell)
428
+
378 429
 
379 430
     def headerBoxShrink(self):
380 431
         #self.ui.headerFileBox.setVisible(False)
@@ -525,10 +576,17 @@ class ApplicationWindow(QtWidgets.QMainWindow):
525 576
         self.plotLoops()
526 577
         self.ui.loopTableWidget.cellChanged.connect(self.loopCellChanged) 
527 578
 
579
+    def plotLoops2(self):
580
+        self.ui.mplwidget.reAxH(1)
581
+
582
+        for loop in self.loops:
583
+            POINTS = self.loops[loop].GetPoints().T
584
+            self.ui.mplwidget.ax1.plot( POINTS[:,0], POINTS[:,1] )
585
+        
586
+        self.ui.mplwidget.ax1.set_aspect('equal') #, adjustable='box')
587
+        self.ui.mplwidget.draw()
528 588
 
529 589
     def plotLoops(self):
530
-
531
-        print("Plotting loopz")        
532 590
        
533 591
         self.ui.mplwidget.reAxH(1)
534 592
         #self.ui.mplwidget.ax1.clear() 
@@ -1565,7 +1623,7 @@ import pkg_resources
1565 1623
 from pkg_resources import resource_string
1566 1624
 import matplotlib.image as mpimg 
1567 1625
 import matplotlib.pyplot as plt 
1568
-
1626
+from akvo.gui.logo import plotLogo
1569 1627
 
1570 1628
 def main():
1571 1629
     
@@ -1582,15 +1640,31 @@ def main():
1582 1640
     
1583 1641
     aw = ApplicationWindow()
1584 1642
 
1585
-    img=mpimg.imread(logo)
1643
+    #img=mpimg.imread(logo)
1586 1644
     for ax in [ aw.ui.mplwidget ]: 
1587 1645
         ax.fig.clear()
1588
-        subplot = ax.fig.add_subplot(111)
1589
-        #ax.fig.patch.set_facecolor( None )
1590
-        #ax.fig.patch.set_alpha( .0 )
1591
-        subplot.imshow(img) 
1646
+        subplot = ax.fig.add_subplot(211)
1647
+        # old logo plot
1648
+        ax.fig.patch.set_facecolor( None )
1649
+        ax.fig.patch.set_alpha( .0 )
1650
+        #subplot.imshow(img)
1651
+        #ax.fig.patch.set_visible(False)
1652
+        subplot.axis('off')
1653
+        
1654
+        plotLogo(subplot) 
1592 1655
         subplot.xaxis.set_major_locator(plt.NullLocator()) 
1593 1656
         subplot.yaxis.set_major_locator(plt.NullLocator()) 
1657
+        
1658
+        subplot2 = ax.fig.add_subplot(212)
1659
+        subplot2.text(0.5, 1.,'surface NMR workbench',
1660
+            horizontalalignment='center',
1661
+            verticalalignment='center',
1662
+            size=22,
1663
+            transform = subplot2.transAxes)
1664
+        subplot2.xaxis.set_major_locator(plt.NullLocator()) 
1665
+        subplot2.yaxis.set_major_locator(plt.NullLocator()) 
1666
+        subplot2.axis('off')
1667
+        
1594 1668
         ax.draw()
1595 1669
 
1596 1670
     if ssplash:

+ 46
- 0
akvo/gui/logo.py View File

@@ -0,0 +1,46 @@
1
+def plotLogo(ax):
2
+    #import matplotlib.pyplot as ax 
3
+    import numpy as np 
4
+
5
+    x  = np.arange(-np.pi/2, 7.0*np.pi, .01)
6
+    y  = np.sin(x)
7
+    y2 = np.cos(x)
8
+
9
+    y3 = np.sin(.5*x)
10
+    y4 = np.cos(.5*x)
11
+
12
+    ax.plot(x,  y, linewidth=1, color='lightgrey')
13
+    ax.plot(x, -y, linewidth=1, color='lightgrey')
14
+    ax.plot(x, y2, linewidth=1, color='lightgrey')
15
+    ax.plot(x,-y2, linewidth=1, color='lightgrey')
16
+
17
+    ax.plot(x,  y3, linewidth=1, color='lightgrey')
18
+    ax.plot(x, -y3, linewidth=1, color='lightgrey')
19
+    ax.plot(x,  y4, linewidth=1, color='lightgrey')
20
+    ax.plot(x, -y4, linewidth=1, color='lightgrey')
21
+
22
+    a = np.arange(10,615)
23
+    ax.plot(x[a],y[a], linewidth=3, color='black')
24
+    ax.fill_between(x[a],y[a], y2=-1, where=y[a]>=-1, interpolate=True, linewidth=0, alpha=.95, color='maroon')
25
+
26
+    k  = np.arange(615, 785)
27
+    k2 = np.arange(785, 1105)
28
+    ax.plot(x[k],    y[k ], linewidth=3, color='black')
29
+    ax.plot(x[k],   -y[k ], linewidth=3, color='black')
30
+    ax.plot(x[k2],  y3[k2], linewidth=3, color='black')
31
+    ax.plot(x[k2], -y3[k2], linewidth=3, color='black')
32
+
33
+    #v = np.arange(1265,1865) # y 
34
+    v = np.arange(1105, 1720)
35
+    ax.plot(x[v], -y2[v], linewidth=3, color='black')
36
+
37
+    o = np.arange(1728,2357)
38
+    ax.plot(x[o],  y4[o], linewidth=3, color='black')
39
+    ax.plot(x[o], -y4[o], linewidth=3, color='black')
40
+    ax.fill_between(x[o],  y4[o], y2=-y4[o],  where=y4[o]<=1, interpolate=True, linewidth=0, alpha=.95, color='maroon')
41
+#ax.fill_between(x[o], -y4[o], y2=0, where=-y4[o]<=1, interpolate=True, linewidth=0, alpha=.5, color='black')
42
+#ax.plot(x[o], y2[o], linewidth=3, color='black')
43
+#ax.plot(x[o],-y2[o], linewidth=3, color='black')
44
+#ax.fill_between(x[a], y[a], y2=-1, where=y[a]>=-1, interpolate=True, linewidth=0, alpha=.5, color='black')
45
+
46
+#ax.show()

+ 18
- 32
akvo/gui/main.ui View File

@@ -1653,7 +1653,7 @@ background: dark grey;
1653 1653
           </widget>
1654 1654
           <widget class="QWidget" name="NCTab">
1655 1655
            <attribute name="title">
1656
-            <string>Noise cancelation</string>
1656
+            <string>Noise removal</string>
1657 1657
            </attribute>
1658 1658
            <attribute name="toolTip">
1659 1659
             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This tab contains noise cancellation algorithms. The frequency-domain algorithm is often less effective than the time domain approach. We often discourage using the frequency domain algorithm. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@@ -3527,15 +3527,15 @@ background: dark grey;
3527 3527
               <property name="title">
3528 3528
                <string>Surface Loops</string>
3529 3529
               </property>
3530
-              <layout class="QGridLayout" name="gridLayout_17">
3531
-               <item row="1" column="0">
3532
-                <widget class="QLabel" name="label_58">
3530
+              <layout class="QGridLayout" name="gridLayout_2">
3531
+               <item row="2" column="2">
3532
+                <widget class="QPushButton" name="removeLoopButton">
3533 3533
                  <property name="text">
3534
-                  <string>Label</string>
3534
+                  <string>Remove</string>
3535 3535
                  </property>
3536 3536
                 </widget>
3537 3537
                </item>
3538
-               <item row="0" column="5">
3538
+               <item row="0" column="3">
3539 3539
                 <widget class="QComboBox" name="loopType">
3540 3540
                  <item>
3541 3541
                   <property name="text">
@@ -3559,13 +3559,10 @@ background: dark grey;
3559 3559
                  </item>
3560 3560
                 </widget>
3561 3561
                </item>
3562
-               <item row="1" column="2">
3563
-                <widget class="QLineEdit" name="loopLabel"/>
3564
-               </item>
3565 3562
                <item row="0" column="0">
3566
-                <widget class="QLabel" name="label_54">
3563
+                <widget class="QPushButton" name="addLoopButton">
3567 3564
                  <property name="text">
3568
-                  <string>Geometry</string>
3565
+                  <string>Add </string>
3569 3566
                  </property>
3570 3567
                 </widget>
3571 3568
                </item>
@@ -3598,31 +3595,20 @@ background: dark grey;
3598 3595
                  </item>
3599 3596
                 </widget>
3600 3597
                </item>
3601
-               <item row="2" column="5">
3598
+               <item row="1" column="0" colspan="4">
3599
+                <widget class="QTableWidget" name="txRxTable"/>
3600
+               </item>
3601
+               <item row="2" column="3">
3602 3602
                 <widget class="QPushButton" name="plotLoops">
3603 3603
                  <property name="text">
3604 3604
                   <string>Plot loops</string>
3605 3605
                  </property>
3606 3606
                 </widget>
3607 3607
                </item>
3608
-               <item row="1" column="5">
3609
-                <widget class="QPushButton" name="removeLoopButton">
3610
-                 <property name="text">
3611
-                  <string>Remove</string>
3612
-                 </property>
3613
-                </widget>
3614
-               </item>
3615
-               <item row="1" column="4">
3616
-                <widget class="QPushButton" name="addLoopButton">
3617
-                 <property name="text">
3618
-                  <string>Add </string>
3619
-                 </property>
3620
-                </widget>
3621
-               </item>
3622
-               <item row="0" column="4">
3623
-                <widget class="QLabel" name="label_60">
3624
-                 <property name="text">
3625
-                  <string>Type</string>
3608
+               <item row="0" column="1">
3609
+                <widget class="QLineEdit" name="loopLabel">
3610
+                 <property name="placeholderText">
3611
+                  <string>Enter loop name</string>
3626 3612
                  </property>
3627 3613
                 </widget>
3628 3614
                </item>
@@ -3875,8 +3861,8 @@ background: dark grey;
3875 3861
               <rect>
3876 3862
                <x>0</x>
3877 3863
                <y>0</y>
3878
-               <width>100</width>
3879
-               <height>30</height>
3864
+               <width>96</width>
3865
+               <height>26</height>
3880 3866
               </rect>
3881 3867
              </property>
3882 3868
              <attribute name="label">

+ 2
- 2
setup.py View File

@@ -50,9 +50,9 @@ setup(name='Akvo',
50 50
           'pandas',
51 51
           'pyqt-distutils',
52 52
           'cmocean',
53
-          'pyLemma=0.0.9'
53
+          'pyLemma >= 0.0.9'
54 54
       ],
55
-      packages=['akvo', 'akvo.tressel', 'akvo.gui','akvo.lemma'],
55
+      packages=['akvo', 'akvo.tressel', 'akvo.gui'],
56 56
       license=['GPL 4.0'],
57 57
       entry_points = {
58 58
               'console_scripts': [

Loading…
Cancel
Save