p3lib 1.1.110__py2.py3-none-any.whl → 1.1.112__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
p3lib/helper.py CHANGED
@@ -383,7 +383,8 @@ def getAbsFile(filename):
383
383
  1 - The startup folder
384
384
  2 - An 'assets' folder in the startup folder
385
385
  3 - An 'assets' folder in the startup parent folder
386
- 3 - In an 'assets' folder in a python site-packages folder.
386
+ 4 - In a site-packages folder.
387
+ 5 - In an 'assets' folder in a python site-packages folder.
387
388
  @param filename The name of the icon file.
388
389
  @return The abs path of the file or None if not found."""
389
390
  file_found = None
@@ -411,14 +412,19 @@ def getAbsFile(filename):
411
412
  for path in sys.path:
412
413
  if 'site-packages' in path:
413
414
  site_packages_path = path
414
- path3 = os.path.join(site_packages_path, 'assets')
415
- abs_filename = os.path.join(path3, filename)
415
+ abs_filename = os.path.join(site_packages_path, filename)
416
+ print(f"PJA: abs_filename={abs_filename}, FOUND={os.path.isfile(abs_filename)}")
416
417
  if os.path.isfile(abs_filename):
417
418
  file_found = abs_filename
418
- break
419
419
 
420
- return file_found
420
+ else:
421
+ path3 = os.path.join(site_packages_path, 'assets')
422
+ abs_filename = os.path.join(path3, filename)
423
+ if os.path.isfile(abs_filename):
424
+ file_found = abs_filename
425
+ break
421
426
 
427
+ return file_found
422
428
 
423
429
  PYPROJECT_FILE = "pyproject.toml"
424
430
 
p3lib/ngt.py CHANGED
@@ -28,7 +28,8 @@ class TabbedNiceGui(object):
28
28
  # than normal.
29
29
  DESCRIP_STYLE = '<span style="font-size:1.2em;">'
30
30
  ENABLE_BUTTONS = "ENABLE_BUTTONS"
31
- NOTIFY_DIALOG = "NOTIFY_DIALOG"
31
+ NOTIFY_DIALOG_INFO = "NOTIFY_DIALOG_INFO"
32
+ NOTIFY_DIALOG_ERROR = "NOTIFY_DIALOG_ERROR"
32
33
  UPDATE_SECONDS = "UPDATE_SECONDS"
33
34
  INFO_MESSAGE = "INFO: "
34
35
  WARN_MESSAGE = "WARN: "
@@ -168,11 +169,23 @@ class TabbedNiceGui(object):
168
169
  msgDict = {TabbedNiceGui.ERROR_MESSAGE: str(msg)}
169
170
  self.updateGUI(msgDict)
170
171
 
171
- def infoDialog(self, msg):
172
+ def infoDialog(self, msg, addToMessageLog=True):
172
173
  """@brief Display an info level dialog.
173
- @param msg The message dialog."""
174
- msgDict = {TabbedNiceGui.NOTIFY_DIALOG: str(msg)}
174
+ @param msg The message dialog.
175
+ @param addToMessageLog If True the message will also be added to the message log."""
176
+ msgDict = {TabbedNiceGui.NOTIFY_DIALOG_INFO: str(msg)}
175
177
  self.updateGUI(msgDict)
178
+ if addToMessageLog:
179
+ self.info(msg)
180
+
181
+ def errorDialog(self, msg, addToMessageLog=True):
182
+ """@brief Display an error level dialog.
183
+ @param msg The message dialog.
184
+ @param addToMessageLog If True the message will also be added to the message log."""
185
+ msgDict = {TabbedNiceGui.NOTIFY_DIALOG_ERROR: str(msg)}
186
+ self.updateGUI(msgDict)
187
+ if addToMessageLog:
188
+ self.error(msg)
176
189
 
177
190
  def debug(self, msg):
178
191
  """@brief Send a debug message to be displayed in the GUI.
@@ -562,10 +575,14 @@ class TabbedNiceGui(object):
562
575
  state = rxDict[TabbedNiceGui.ENABLE_BUTTONS]
563
576
  self._enableAllButtons(state)
564
577
 
565
- elif TabbedNiceGui.NOTIFY_DIALOG in rxDict:
566
- message = rxDict[TabbedNiceGui.NOTIFY_DIALOG]
578
+ elif TabbedNiceGui.NOTIFY_DIALOG_INFO in rxDict:
579
+ message = rxDict[TabbedNiceGui.NOTIFY_DIALOG_INFO]
567
580
  ui.notify(message, close_button='OK', type="positive", position="center")
568
581
 
582
+ elif TabbedNiceGui.NOTIFY_DIALOG_ERROR in rxDict:
583
+ message = rxDict[TabbedNiceGui.NOTIFY_DIALOG_ERROR]
584
+ ui.notify(message, close_button='OK', type="negative", position="center")
585
+
569
586
  else:
570
587
 
571
588
  self._handleGUIUpdate(rxDict)
p3lib/uio.py CHANGED
@@ -217,22 +217,22 @@ class UIO(object):
217
217
  value = float(response)
218
218
  else:
219
219
  value = int(response, radix)
220
-
220
+
221
221
  if minValue is not None and value < minValue:
222
222
  self.warn(f"The minimum acceptable value is {minValue}")
223
-
223
+
224
224
  if maxValue is not None and value > maxValue:
225
225
  self.warn(f"The mximum acceptable value is {maxValue}")
226
-
226
+
227
227
  return value
228
228
 
229
229
  except ValueError:
230
230
  if floatValue:
231
231
  self.warn("%s is not a valid float value." % (response))
232
-
232
+
233
233
  else:
234
234
  self.warn("%s is not a valid integer value." % (response))
235
-
235
+
236
236
  if allowQuit and response.lower() == 'q':
237
237
  return None
238
238
 
@@ -424,7 +424,7 @@ class UIO(object):
424
424
  #Ignore if se can't resolve address. We don't really syslog want errors to stop the user interface
425
425
  except:
426
426
  pass
427
-
427
+
428
428
  def showTable(self, table, rowSeparatorChar = "-", colSeparatorChar = "|"):
429
429
  """@brief Show the contents of a table to the user.
430
430
  @param table This must be a list. Each list element must be a table row (list).
@@ -435,18 +435,18 @@ class UIO(object):
435
435
  # Check we have a table to display
436
436
  if len(table) == 0:
437
437
  raise Exception("No table rows to display")
438
-
438
+
439
439
  # Check all rows have the same number of columns in the table
440
440
  colCount = len(table[0])
441
441
  for row in table:
442
442
  if len(row) != colCount:
443
443
  raise Exception(f"{str(row)} column count different from first row ({colCount})")
444
-
444
+
445
445
  for row in table:
446
446
  for col in row:
447
447
  if not isinstance(col, str):
448
448
  raise Exception(f"Table column is not a string: {col} in {row}")
449
-
449
+
450
450
  # Get the max width for each column
451
451
  for col in range(0,colCount):
452
452
  maxWidth=0
@@ -458,10 +458,10 @@ class UIO(object):
458
458
  tableWidth = 1
459
459
  for columnWidth in columnWidths:
460
460
  tableWidth += columnWidth + 3 # Space each side of the column + a column divider character
461
-
461
+
462
462
  # Add the top line of the table
463
463
  self.info(rowSeparatorChar*tableWidth)
464
-
464
+
465
465
  # The starting row index
466
466
  for rowIndex in range(0, len(table)):
467
467
  rowText = colSeparatorChar
@@ -473,7 +473,7 @@ class UIO(object):
473
473
  self.info(rowText)
474
474
  # Add the row separator line
475
475
  self.info(rowSeparatorChar*tableWidth)
476
-
476
+
477
477
  class ConsoleMenu(object):
478
478
  """@brief Responsible for presenting a list of options to the user on a
479
479
  console/terminal interface and allowing the user to select
@@ -508,10 +508,10 @@ class ConsoleMenu(object):
508
508
  selectedMethod()
509
509
  else:
510
510
  selectedMethod(*args)
511
-
512
-
513
-
514
-
511
+
512
+
513
+
514
+
515
515
 
516
516
  # -------------------------------------------------------------------
517
517
  # @brief An implementation to allow syslog messages to be generated.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: p3lib
3
- Version: 1.1.110
3
+ Version: 1.1.112
4
4
  Summary: A group of python modules for networking, plotting data, config storage, automating boot scripts, ssh access and user input output.
5
5
  Home-page: https://github.com/pjaos/test_equipment
6
6
  License: MIT
@@ -7,18 +7,18 @@ p3lib/conduit.py,sha256=jPkjdtyCx2I6SFqcEo8y2g7rgnZ-jNY7oCuYIETzT5Q,6046
7
7
  p3lib/database_if.py,sha256=XKu1w3zftGbj4Rh54wrWJnoCtqHkhCzJUPN2S70XIKg,11915
8
8
  p3lib/file_io.py,sha256=A7_GKYPlmjRjq6U1YuWhmB0OhLhNm6cWQfQX8qfgYTk,5041
9
9
  p3lib/gnome_desktop_app.py,sha256=zl9SKRBV8ipVg2faCs_gbAr8c42J1N_pntbFGG2BMiE,6694
10
- p3lib/helper.py,sha256=9Om9dzUD3KrLo7MJA_ma_jyPOfcBJBFX3d8PvuZODoc,14528
10
+ p3lib/helper.py,sha256=DYfGYC7hmaZZJVivgnOHQGln5tJshZfJEC0KRIda7QU,14923
11
11
  p3lib/json_networking.py,sha256=6u4s1SmypjTYPnSxHP712OgQ3ZJaxOqIkgHQ1J7Qews,9738
12
12
  p3lib/login.html,sha256=DADTJGuvWQ-LTO4X6SaFdqK7JMW03DAa3lRieGD0d6g,2748
13
13
  p3lib/mqtt_rpc.py,sha256=6LmFA1kR4HSJs9eWbOJORRHNY01L_lHWjvtE2fmY8P8,10511
14
14
  p3lib/netif.py,sha256=3QV5OGdHhELIf4MBj6mx5MNCtVeZ7JXoNEkeu4KzCaE,9796
15
15
  p3lib/netplotly.py,sha256=PMDx-w1jtRVW6Od5u_kuKbBxNpTS_Y88mMF60puMxLM,9363
16
- p3lib/ngt.py,sha256=Y4HsSiaBEYi7OFWkqkDDJende_yyxsvIjUremfArXgA,39204
16
+ p3lib/ngt.py,sha256=hdS60qKm9x1j5XG2VOVFxO1RLe5pEcCSsaqP-TZF3Cc,40053
17
17
  p3lib/pconfig.py,sha256=k1WHvmHzOfmkSbP7CrFyT1iTwn5_UROQjk6gltdh7bk,37280
18
18
  p3lib/ssh.py,sha256=OyoAQ_h1L2RfkjTAChDrvLFfl4Fe_gBNdX5rvK-wKiw,42125
19
19
  p3lib/table_plot.py,sha256=RPncwVlGUkkx5Fw0dHQedXo0TSPlTi__VrJBDzaMsuI,32116
20
- p3lib/uio.py,sha256=BAvzE3LFivaP6dlgjle04RYZ-YIWxXDE01Bfuzrz-Dc,23052
21
- p3lib-1.1.110.dist-info/LICENSE,sha256=igqTy5u0kVWM1n-NUZMvAlinY6lVjAXKoag0okkS8V8,1067
22
- p3lib-1.1.110.dist-info/METADATA,sha256=OMGf2ConUm--OzGAg0hX8gx8F0Gf2LviWOd_YpGin5c,1337
23
- p3lib-1.1.110.dist-info/WHEEL,sha256=IrRNNNJ-uuL1ggO5qMvT1GGhQVdQU54d6ZpYqEZfEWo,92
24
- p3lib-1.1.110.dist-info/RECORD,,
20
+ p3lib/uio.py,sha256=Aaxc99XiE3d2f9vLjaN-bZsckoNxay5t0ujdK6PXGrw,23265
21
+ p3lib-1.1.112.dist-info/LICENSE,sha256=igqTy5u0kVWM1n-NUZMvAlinY6lVjAXKoag0okkS8V8,1067
22
+ p3lib-1.1.112.dist-info/METADATA,sha256=phxnZrl3uvMeOuongVujRRpxU2bvvPCakw29E4_6_M4,1337
23
+ p3lib-1.1.112.dist-info/WHEEL,sha256=IrRNNNJ-uuL1ggO5qMvT1GGhQVdQU54d6ZpYqEZfEWo,92
24
+ p3lib-1.1.112.dist-info/RECORD,,