11import sys
2+ import os
23from pprint import pprint
34from PyQt5 .QtWidgets import (
45 QApplication , QWidget , QVBoxLayout , QLabel , QFrame , QHBoxLayout , QLineEdit ,
78from PyQt5 .QtCore import Qt , QPoint , pyqtSignal , QMimeData
89from PyQt5 .QtGui import QPainter , QColor , QDrag , QPixmap
910
11+ from mapmanagercore .imageImporter import acceptedExtensions
12+
1013from pymapmanager .interface import PyMapManagerApp
1114from pymapmanager .interface .stackWidgets .stackWidget import stackWidget
1215from pymapmanager .interface .stackWidgets .base .mmWidget2 import mmWidget2 , pmmEventType
@@ -338,11 +341,18 @@ def __init__(self, stackWidget:stackWidget):
338341 # status_label.setStyleSheet("QLabel { color: #666; }")
339342 # toolbar_layout.addWidget(status_label)
340343
341- count_label = QLabel ("Channels: 0" )
344+ shapeTuple = self .getStackWidget ().getStack ().getMetadata ().shape
345+ count_label = QLabel (f"Pixels:{ shapeTuple } " )
342346 count_label .setObjectName ("count_label" )
343347 count_label .setStyleSheet ("QLabel { color: #666; }" )
344348 toolbar_layout .addWidget (count_label )
345349
350+ voxelTuple = self .getStackWidget ().getStack ().getMetadata ().voxelMetadata .shape
351+ voxelLabel = QLabel (f"Voxels:{ voxelTuple } " )
352+ voxelLabel .setObjectName ("voxelLabel" )
353+ voxelLabel .setStyleSheet ("QLabel { color: #666; }" )
354+ toolbar_layout .addWidget (voxelLabel )
355+
346356 # Add Import File button to top toolbar
347357 self .importButton = QPushButton ("Import File" )
348358 self .importButton .setAcceptDrops (True )
@@ -573,19 +583,35 @@ def onImportButtonClicked(self):
573583
574584 def onImportButtonDragEnter (self , event ):
575585 """Handle drag enter event on import button."""
586+
576587 if event .mimeData ().hasUrls ():
577- event .acceptProposedAction ()
578- self .importButton .setStyleSheet ("""
579- QPushButton {
580- background-color: #2196F3;
581- color: white;
582- border: 2px dashed #1976D2;
583- padding: 6px 12px;
584- border-radius: 4px;
585- font-weight: bold;
586- font-size: 12px;
587- }
588- """ )
588+ # Check if any of the dragged files have accepted extensions
589+ accepted_exts = acceptedExtensions ()
590+ has_valid_file = False
591+
592+ for url in event .mimeData ().urls ():
593+ file_path = url .toLocalFile ()
594+ if file_path :
595+ _ , ext = os .path .splitext (file_path )
596+ if ext in accepted_exts :
597+ has_valid_file = True
598+ break
599+
600+ if has_valid_file :
601+ event .acceptProposedAction ()
602+ self .importButton .setStyleSheet ("""
603+ QPushButton {
604+ background-color: #2196F3;
605+ color: white;
606+ border: 2px dashed #1976D2;
607+ padding: 6px 12px;
608+ border-radius: 4px;
609+ font-weight: bold;
610+ font-size: 12px;
611+ }
612+ """ )
613+ else :
614+ event .ignore ()
589615 else :
590616 event .ignore ()
591617
@@ -607,9 +633,17 @@ def onImportButtonDrop(self, event):
607633 file_paths .append (file_path )
608634
609635 if file_paths :
610- self .filesImported .emit (file_paths )
636+ # self.filesImported.emit(file_paths)
611637 print (f"Files dropped: { file_paths } " )
612638
639+ editChannelEvent = EditChannelEvent (
640+ eventType = pmmEventType .editChannel ,
641+ mmWidget = self .getStackWidget (),
642+ editType = ChannelEditType .import_new_channel ,
643+ importPath = file_paths [0 ] # just the first file
644+ )
645+ self .emitEvent (editChannelEvent )
646+
613647 # Reset button style
614648 self .importButton .setStyleSheet ("""
615649 QPushButton {
0 commit comments