Exemplo n.º 1
0
    def __initOperations__(self):
        """
        @summary: Initialize operations TreeView
        """
        self.__opsModel__ = gtk.ListStore(gobject.TYPE_STRING,
                                          gobject.TYPE_STRING,
                                          gobject.TYPE_FLOAT,
                                          gobject.TYPE_FLOAT,
                                          gobject.TYPE_FLOAT)

        __log__.debug("Create new model of treeview for the register")

        self.__tvOps__.set_model(self.__opsModel__)
        self.__tvOps__.set_headers_visible(True)
        self.__tvOps__.set_show_expanders(False)
        self.__tvOps__.get_selection().set_mode(gtk.SELECTION_NONE)

        __log__.debug("Sets features of the treeview")

        # Creates columns of the TreeView of Files
        columnProcess = FactoryControls.getTreeColumnText(_("Process"), self.__NAME_COLUMN__)
        self.__tvOps__.append_column(columnProcess)
        
        columnProgress = FactoryControls.getTreeColumnProgress(self.__VALUE_COLUMN__)
        self.__tvOps__.append_column(columnProgress)
        
        __log__.debug("Adds columns to treeview")
Exemplo n.º 2
0
 def getIcon(self, path):
     """
     @summary: Gets an icon from path, matching with its mime.
     @param path: Path to get icon.
     @return: Icon of the path. None if it is not gnome or windows platform.
     """
     if (GNOME):
         return FactoryControls.getPixbufFromStock(self.getIconName(path))
     elif (WINDOWS):
         return FactoryControls.getPixbufFromStock(self.getIconName(path))
         
     
     return None
Exemplo n.º 3
0
    def __initUI__(self):
        """
        @summary: Initialize ui.
        """
        self.__btConfig__ = gtk.Button(stock=gtk.STOCK_PREFERENCES)
        self.__btConfig__.set_sensitive(False)
        self.__btConfig__.show_all()
        super(PluginsDialog, self).add_action_widget(self.__btConfig__, self.__RESPONSE_PREFERENCE__)
        super(PluginsDialog, self).add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        
        treeview = gtk.TreeView()
        self.__model__ = gtk.ListStore(gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_OBJECT)

        # self.__model__.set_default_sort_func(lambda *args: -1)
        
        __log__.debug("Created model for new project")
    
        treeview.set_model(self.__model__)
        treeview.set_headers_visible(True)
        treeview.set_headers_clickable(False)
        treeview.set_rules_hint(True)
        treeview.set_enable_search(False)
        treeview.set_fixed_height_mode(False)
        treeview.set_tooltip_column(self.COLUMN_PLUGIN)
        treeview.set_show_expanders(False)
        treeview.get_selection().set_mode(gtk.SELECTION_SINGLE)
        treeview.set_reorderable(False)
        
        treeview.connect_after("cursor-changed", self.__changedRow__)
        # treeview.connect("cursor-changed", self.__changedRow__)
        
        # Creates columns of the TreeView of target files
        columnPlugin = FactoryControls.getTreeColumnText(_("Plugin"), self.COLUMN_PLUGIN, sortable=True)
        treeview.append_column(columnPlugin)
        columnType = FactoryControls.getTreeColumnText(_("Type"), self.COLUMN_TYPE, sortable=True)
        treeview.append_column(columnType)
        
        self.__treeview__ = treeview
        
        scroll = gtk.ScrolledWindow()
        scroll.add(self.__treeview__)
        
        vBox = gtk.VBox()
        vBox.pack_start(scroll, True, True)
        
        self.get_child().pack_start(vBox, True, True)
        vBox.show_all()
Exemplo n.º 4
0
    def run(self):
        """
        @summary: Show option  dialog. 
        it will run this callback before show execute dialog.  
        """
        if (len(self.__core__.getItems()) <= 0):
            FactoryControls.getMessage(
                _("There aren't items"),
                title=_("Execute"),
                parent=self.get_transient_for())
            __log__.info("Trying to execute a core without items. Exiting from execute dialog.")
            return

        super(ExecuteWindow, self).show_all()
Exemplo n.º 5
0
    def __initToolbar__(self):
        """
        @summary: Initialize UI of toolbar.
        """
        actionGroupExplorer = gtk.ActionGroup("ActionGroupExplorer")
        
        # Create actions
        actionGroupExplorer.add_actions([("BackExplorerAction", gtk.STOCK_GO_BACK, _("_Back"), None, _("Go back in history"), self.__goBackEvent__),
                                         ("ForwardExplorerAction", gtk.STOCK_GO_FORWARD, _("_Forward"), None, _("Go forward in history"), self.__goForwardEvent__),
                                         ("UpExplorerAction", gtk.STOCK_GO_UP, _("Up"), None, _("Go up level in explorer"), self.__goUpLevelEvent__),
                                         ("HomeExplorerAction", gtk.STOCK_HOME, _("_Home"), None, _("Go Home"), self.__goHomeEvent__)])
        
        actionGroupExplorer.set_translation_domain(pycamimg.gettextName)
        
        __log__.debug("There is a xml path. UI Menus and tools will be recovered from path %s" % __XMLUI_FOLDER__)
        self.__uiManager__ = FactoryControls.getUIManager(os.path.join(__XMLUI_FOLDER__, "Explorer.xml"), None, actionGroupExplorer)[0]

        self.__toolBar__ = self.__uiManager__.get_widget("/ToolsExplorer")
        self.__toolBar__.set_style(gtk.TOOLBAR_BOTH_HORIZ)
        self.__toolBar__.set_tooltips(True)
        
        self.__bBack__ = self.__uiManager__.get_widget("/ToolsExplorer/Back")
        self.__bBack__.set_is_important(True)
        self.__bForward__ = self.__uiManager__.get_widget("/ToolsExplorer/Forward")
        self.__bUp__ = self.__uiManager__.get_widget("/ToolsExplorer/Up")
        self.__bHome__ = self.__uiManager__.get_widget("/ToolsExplorer/Home")
Exemplo n.º 6
0
 def __runEvent__ (self, b):
     """
     @summary: Do current project.
     @param b: Button that threw event.
     """
     if (self.__currentTab__ != None):
         self.__currentTab__.setOrderToCore()
         exWindow = ExecuteWindow(self.__currentTab__.getCore(),
                                  parent=self.__mainWindow__)
         __log__.debug("Execute window created. %s" % exWindow)            
         exWindow.run()
     else:
         FactoryControls.getMessage(
             _("There isn't current project"),
             title=_("Execute"),
             parent=self.__mainWindow__)
Exemplo n.º 7
0
    def showAbout(self):
        """
        @summary: Show about dialog.
        """
        if (hasattr(self, "__aboutDialog__")):
            if (self.__aboutDialog__ == None):
                self.__aboutDialog__ = FactoryControls.getAbout(
                    __VERSION_FILE__,
                    self.__closeAbout__,
                    __COPYING_FILE__,
                    parent=self.__mainWindow__)
        else:
            self.__aboutDialog__ = FactoryControls.getAbout(
                __VERSION_FILE__,
                __COPYING_FILE__,
                parent=self.__mainWindow__)

        self.__aboutDialog__.run()
Exemplo n.º 8
0
 def __saveAsProjectEvent__ (self, b, raiseError=False):
     """
     @summary: Handle save project action.
     @param b: Button that threw event.
     @param raiseError: True to throw an error when occurrs. 
     """
     if (self.__currentTab__ == None):
         __log__.debug("There is not current project")
         return
     
     fileSel = gtk.FileChooserDialog(title=_("Save project"),
                                     parent=self.__mainWindow__,
                                     action=gtk.FILE_CHOOSER_ACTION_SAVE,
                                     buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                              gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT))
     fileSel.set_default_response(gtk.RESPONSE_CANCEL)
     
     filterCam = gtk.FileFilter()
     filterCam.set_name(_("PyCamimg file"))
     filterCam.add_pattern("*%s" % self.PYCAMIMG_FILE_EXTENSION)
     fileSel.add_filter(filterCam)
     
     fileSel.set_modal(True)
     fileSel.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
     if (fileSel.run() == gtk.RESPONSE_ACCEPT):
         filename = fileSel.get_filename()
         __log__.debug("Save project to %s" % filename)
         if (not filename.endswith(self.PYCAMIMG_FILE_EXTENSION)):
             filename = "%s%s" % (filename, self.PYCAMIMG_FILE_EXTENSION)
         
         try:
             if (not self.__currentTab__.getCore().save(path=filename)):
                 raise Exception()
         except Exception, e:
             if (raiseError):
                 raise e
             else:
                 __log__.error("It could not save current project to %s. %s" % (filename, e))
                 FactoryControls.getMessage(_("An error was occurred when it was saving current project to %s" % filename),
                                            type=gtk.MESSAGE_ERROR,
                                            title=_("Save project"),
                                            parent=self.__mainWindow__)
                 return
         finally:
Exemplo n.º 9
0
    def __initUI__(self):
        """
        @summary: Initialize ui.
        """
        treeview = gtk.TreeView()
        self.__model__ = gtk.ListStore(gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_BOOLEAN)

        # self.__model__.set_default_sort_func(lambda *args: -1)
        
        __log__.debug("Created model for new project")
    
        treeview.set_model(self.__model__)
        treeview.set_headers_visible(True)
        treeview.set_headers_clickable(False)
        treeview.set_rules_hint(True)
        treeview.set_enable_search(False)
        treeview.set_fixed_height_mode(False)
        treeview.set_tooltip_column(self.COLUMN_OPERATION)
        treeview.set_show_expanders(False)
        treeview.get_selection().set_mode(gtk.SELECTION_SINGLE)
        treeview.set_reorderable(False)
        
        # Creates columns of the TreeView of target files
        columnOperation = FactoryControls.getTreeColumnText(_("Operation"), self.COLUMN_OPERATION, sortable=False)
        treeview.append_column(columnOperation)
        columnParams = FactoryControls.getTreeColumnText(_("Parameters"), self.COLUMN_PARAMETERS, sortable=False)
        treeview.append_column(columnParams)
        columnDel = FactoryControls.getTreeColumnToggle(_("Delete"), self.__model__, self.COLUMN_DELETE)
        treeview.append_column(columnDel)
        
        self.__treeview__ = treeview
        
        scroll = gtk.ScrolledWindow()
        scroll.add(self.__treeview__)
        
        vBox = gtk.VBox()
        vBox.pack_start(scroll, True, True)
        
        self.get_child().pack_start(vBox, True, True)
        vBox.show_all()
Exemplo n.º 10
0
 def __deleteOperationsEvent__ (self, b):
     """
     @summary: Delete operations of an item.
     @param b: Button that threw event.
     """
     if (self.__currentTab__ == None):
         __log__.debug("There is not current project")
         return
     
     paths = self.__currentTab__.getSelection()
     model = self.__currentTab__.getModel()
     if ((paths == None) or (model == None)):
         __log__.error("It can not recover tree selection. Set selection at 0.")
         iNRows = 0
     else:
         iNRows = len(paths)
     
     if iNRows > 0:
         path = paths[0]
         iter = model.get_iter(path)
         if (iter != None):
             file = model.get_value(iter, self.__currentTab__.COLUMN_SOURCE)
             item = self.__currentTab__.getCore().getItem(file)
             operationsDialog = OperationsDialog(
                                 item,
                                 iter,
                                 callback=self.__applyDeleteOperationsItemCallback__,
                                 parent=self.__mainWindow__)
     
             __log__.debug("Operations dialog created. %s" % operationsDialog)
             operationsDialog.run()
             del operationsDialog
         else:
             __log__.error("It can not recover iter from path %s. Abort open delete operations dialog." % path)
             FactoryControls.getMessage(_("It can not get item"),
                                        title=_("Delete operations"),
                                        type=gtk.MESSAGE_ERROR,
                                        parent=self.__mainWindow__)
         
     else:
         FactoryControls.getMessage(_("Select one item"),
                                    title=_("Delete operations"),
                                    parent=self.__mainWindow__)
Exemplo n.º 11
0
 def __initializeExplorer__(self):
     """
     @summary: Initialize TreeView explorer. Add drives of OS.
     """
     # Make a model for TreeView explorer
     self.__model__ = gtk.TreeStore(gtk.gdk.Pixbuf,
                                    gobject.TYPE_STRING,
                                    gobject.TYPE_STRING)
     
     __log__.debug("Created model for TreeExplorer.")
     # Gets home icon
     iconHome = FactoryControls.getPixbufFromStock(gtk.STOCK_HOME)
     
     # Gets drive icon
     icon = FactoryControls.getPixbufFromStock(gtk.STOCK_HARDDISK)
 
     self.__explorer__.set_model(None)
 
     # Apply look to TreeView
     self.__explorer__.set_headers_visible(False)
     self.__explorer__.set_show_expanders(True)
     self.__explorer__.get_selection().set_mode(gtk.SELECTION_SINGLE)
 
     column = FactoryControls.getTreeColumnTextAndPixbuf(_("Explorer"),
                                                         self.__NAME_COLUMN__,
                                                         self.__IMG_COLUMN__)
     self.__explorer__.append_column(column)
 
     __log__.debug("Added columns to TreeExplorer")
     
     # Add home node
     self.addDirectory(self.__HOME_NODE__, os.path.expanduser("~"), iconHome, glock=False)
     
     # Gets drives from the OS
     for sDrive in self.__ioUtils__.getDrives():
         if (sDrive != None) and (sDrive != ""):
             self.addDirectory (sDrive, sDrive, icon, glock=False)
     
     __log__.debug("Drives added.")
     
     # Set model to explorer TreeView
     self.__explorer__.set_model(self.__model__)
Exemplo n.º 12
0
 def __queryQuitEvent__(self, window, event=None):
     """
     @summary: Handle query quit event.
     @param window: GtkWindow that threw event. 
     """
     if (gtk.RESPONSE_YES == FactoryControls.getConfirmMessage(_("Are you sure you want to close PyCamimg?"),
                                                               title=_("Close PyCamimg"),
                                                               parent=self.__mainWindow__)):
         return False
     else:
         return True
Exemplo n.º 13
0
 def __saveProjectEvent__ (self, b):
     """
     @summary: Handle save project action.
     @param b: Button that threw event.
     """
     if (self.__currentTab__ == None):
         __log__.debug("There is not current project")
         return
     core = self.__currentTab__.getCore()
     __log__.debug("Saving current project %s" % core.getName())
     if (core.isSaved()):
         __log__.debug("Current project is already saved on %s. Overwriting file." % core.getFilename())
         try:
             core.save()
         except Exception, e:
             __log__.error("It could not save current project to %s. %s" % (core.getFilename(), e))
             FactoryControls.getMessage(_("An error was occurred when it was saving current project to %s" % core.getFilename()),
                                        type=gtk.MESSAGE_ERROR,
                                        title=_("Save project"),
                                        parent=self.__mainWindow__)
             return
Exemplo n.º 14
0
 def __cancelEvent__(self, b):
     """
     @summary: Handle cancel button.
     @param b: Button that call this function
     """
     if (self.__core__.getState() == STATE_EXEC):
         if (gtk.RESPONSE_YES == FactoryControls.getConfirmMessage(_("Are you sure you want to cancel project?"),
                                                                   title=_("Cancel project"),
                                                                   parent=self)):
             self.__cancelThread__()
             self.__updateOptions__(mode=__MODE_CLOSE__, blockGtk=False)
     else:
         __log__.debug("Execution is just finished")
Exemplo n.º 15
0
 def __queryClose__(self):
     """
     @summary: Query close.
     """
     if (self.__core__.getState() == STATE_EXEC):               
         if (gtk.RESPONSE_YES == FactoryControls.getConfirmMessage(_("Current project is running. Are you sure you want to exit?"),
                                                                   title=_("Close execution project"),
                                                                   parent=self)):
             return True
         else:
             return False
     
     return True
Exemplo n.º 16
0
 def __openProjectEvent__ (self, b):
     """
     @summary: Handle open project action.
     @param b: Button that threw event.
     """
     
     fileSel = gtk.FileChooserDialog(title=_("Open project"),
                                     parent=self.__mainWindow__,
                                     action=gtk.FILE_CHOOSER_ACTION_OPEN,
                                     buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                              gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT))
     
     fileSel.set_default_response(gtk.RESPONSE_CANCEL)
     
     filterCam = gtk.FileFilter()
     filterCam.set_name(_("PyCamimg file"))
     filterCam.add_pattern("*%s" % self.PYCAMIMG_FILE_EXTENSION)
     fileSel.add_filter(filterCam)
     
     fileSel.set_modal(True)
     fileSel.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
     if (fileSel.run() == gtk.RESPONSE_ACCEPT):
         filename = fileSel.get_filename()
         __log__.debug("Open project from %s" % filename)
         if (not filename.endswith(self.PYCAMIMG_FILE_EXTENSION)):
             filename = "%s%s" % (filename, self.PYCAMIMG_FILE_EXTENSION)
         
         try:
             core = CamCore.load(filename, tempFolder=__TEMP_FOLDER__)
         except Exception, e:
             __log__.error("It could not load project from %s. %s" % (filename, e))
             FactoryControls.getMessage(_("An error was occurred when it was loading project from %s" % filename),
                                        type=gtk.MESSAGE_ERROR,
                                        title=_("Open project"),
                                        parent=self.__mainWindow__)
             return
         finally:
Exemplo n.º 17
0
 def openPreview (self, b):
     """
     @summary: Open image.
     @param b: Button that threw event. 
     """
     
     if (self.__currentTab__ == None):
         __log__.debug("There is not current project")
         return
     
     paths = self.__currentTab__.getSelection()
     model = self.__currentTab__.getModel()
     if ((paths == None) or (model == None)):
         __log__.error("It can not recover tree selection. Set selection at 0.")
         iNRows = 0
     else:
         iNRows = len(paths)
     
     if iNRows > 0:
         path = paths[0]
         iter = model.get_iter(path)
         if (iter != None):
             file = model.get_value(iter, 1)
             meta = ImgMeta(file)
             meta.show()
         else:
             __log__.error("It can not recover iter from path %s. Abort preview" % path)
             FactoryControls.getMessage(_("It can not show image"),
                                        title=_("Preview"),
                                        type=gtk.MESSAGE_ERROR,
                                        parent=self.__mainWindow__)
         
     else:
         FactoryControls.getMessage(_("Select one item"),
                                    title=_("Preview"),
                                    parent=self.__mainWindow__)
Exemplo n.º 18
0
 def __handlerDirectoryMonitorEvents__(self, path, operation, type):
     """
     @summary: Handle events from directory monitors.
     @param path: Path of the event.
     @param operation: Operation that occurred.
     @param type: Type of path. Directory or File. 
     """
     if (type == DirectoryMonitor.DIRECTORY):
         if (operation == DirectoryMonitor.ADD):
             head, dirname = os.path.split(path)
             iter = self.__getIterFromPath__(head)
             if (iter != None):
                 icon = FactoryControls.getPixbufFromStock(gtk.STOCK_DIRECTORY)
                 self.addDirectory(dirname, path, icon, iter)
         elif (operation == DirectoryMonitor.DELETE):
             iter = self.__getIterFromPath__(path)
             if (iter != None):
                 self.deleteNode(iter)
Exemplo n.º 19
0
 def __prepareDirectory__(self, directory, iter, glock=True):
     """
     @summary: Checks if a directory has some directory. 
         In truth case, add a temporal subitem.
     @param directory: Directory to prepare.
     @param iter: TreeIter of the directory.
     @param glock: True to lock gtk-loop.  
     """
     sSubDirs = self.__ioUtils__.getDirectories(directory)
     if (sSubDirs != None) and (len(sSubDirs) > 0):
             UIUtils.addIter(self.__model__,
                             iter,
                             (FactoryControls.getPixbufFromStock(gtk.STOCK_EXECUTE) ,
                              _("Loading..."),
                              self.__TEMP_NODE__
                             ),
                             glock
                         )
Exemplo n.º 20
0
 def __loadCore__(self, core):
     """
     @summary: Load core information in treeview. It will be called by a thread.
     @param core: Core that will be loaded into tab project.
     """
     self.__doPreviewList__ = Configuration().getConfiguration().getboolean("TABPROJECT", "show_image_list")
     self.__maxHeight__ = Configuration().getConfiguration().getint("TABPROJECT", "max_height_list")
     self.__rescalePercent__ = Configuration().getConfiguration().getfloat("TABPROJECT", "resize_percent_list")
     self.__maxHeightImageIconView__ = Configuration().getConfiguration().getint("TABPROJECT", "max_height_imagelist")
     self.__numberOfColumns__ = Configuration().getConfiguration().getint("TABPROJECT", "number_of_columns_iconview")
     
     gtk.gdk.threads_enter()
     try:
         self.__iconview__.set_columns(self.__numberOfColumns__)
     finally:
         gtk.gdk.threads_leave()
     
     UIUtils.clearModelTreeview(self.__model__)
     
     # Gets pixbuf file 
     icon = FactoryControls.getPixbufFromStock(gtk.STOCK_FILE)
     
     for key, item in core.getItems().iteritems():
         item.refreshThumbnail()
         
         # Handler to extract metadata
         metaData = item.getMetadata()
         
         # Create a new row
         newRowData = [icon,
                       item.getPath(),
                       metaData.getDateTimeDigitized(),
                       item.getTarget() ,
                       item.getDescription(),
                       icon,
                       False]
         
         iterAdd = UIUtils.insertIterAtPathPosition(self.__model__, newRowData,
                                                     None, position=gtk.TREE_VIEW_DROP_AFTER)
         __log__.info("File inserted into target treeview. %s" % file)
         
         self.updateItemImage(iterAdd, item)
         
     self.__core__ = core
Exemplo n.º 21
0
    def __initToolbar__(self):
        """
        @summary: Initialize toolbar
        """
        actionGroupExecute = gtk.ActionGroup("ActionGroupExecute")
        
        # Create actions
        actionGroupExecute.add_actions([("ExitAction", gtk.STOCK_QUIT, _("Exit"), None, _("Close execute dialog"), self.__closeEvent__),
                                        ("ExecuteAction", gtk.STOCK_EXECUTE, _("Execute"), None, _("Execute current project"), self.__executeEvent__),
                                        ("CancelAction", gtk.STOCK_CANCEL, _("Cancel"), None, _("Cancel current execution"), self.__cancelEvent__)])

        actionGroupExecute.set_translation_domain(self.__domain__)
        
        __log__.debug("There is a xml path. UI Menus and tools will be recovered from path %s" % __XMLUI_FOLDER__)
        self.__uiManager__ = FactoryControls.getUIManager(os.path.join(__XMLUI_FOLDER__, "execute.xml"), self, actionGroupExecute)[0]

        self.__toolBar__ = self.__uiManager__.get_widget("/ToolsExecute")
        self.__toolBar__.set_style(gtk.TOOLBAR_BOTH_HORIZ)
        self.__toolBar__.set_tooltips(True)
        
        self.__vMain__.pack_start(self.__toolBar__, False, True)
Exemplo n.º 22
0
    def addTargetFiles(self,
                       files,
                       iter=None,
                       position=gtk.TREE_VIEW_DROP_AFTER,
                       gtkLock=True):
        """
        @summary: Add a file list into target view.
        @param files:  A list of files to add.
        @param iter: Iter that it will use as reference to insert new files.
        @param position: Position over iter.    
        @param gtkLock: True to do a lock on gtk loop.    
        """
        if (self.__core__ == None):
            __log__.debug("There is not a project in tabproject")
            return
        
        if (files != None):
            iNImages = len(files)
            __log__.debug("Adding new %d images" % iNImages)
            
            operations = RegOperations()
            iterOp = None
            if (operations != None):
                opData = operations.getDataOperation("AddImg",
                                                     _("Adding images..."),
                                                     iNImages)
                # Add new operation to operation treeview
                iterOp = operations.addOperation(opData)
                
            # Gets pixbuf file 
            icon = FactoryControls.getPixbufFromStock(gtk.STOCK_FILE)

            self.__addTargetFiles__(files, icon, iterOp,
                                    iter=iter, position=position,
                                    gtkLock=gtkLock)

            if (iterOp != None):
                operations.removeOperation(iterOp)
        else:
            __log__.debug("There are not files to insert")
Exemplo n.º 23
0
    def __initUIMenu__(self, domain):
        """
        @summary: Initialize menu of window. 
        @param domain: Domain used to translation.
        """
        actionGroupMenu = gtk.ActionGroup("ActionGroupMenu")
        
        # Create actions
        actionGroupMenu.add_actions([("FileMenuAction", None, _("_File")),
                                     ("NewProjectAction", None, _("New Project")),
                                     ("OpenProjectAction", gtk.STOCK_OPEN, _("_Open"), "<Control>o", _("Open PyCamimg project"), self.__openProjectEvent__),
                                     ("SaveProjectAction", gtk.STOCK_SAVE, _("_Save"), "<Control>s", _("Save current project"), self.__saveProjectEvent__),
                                     ("SaveAsProjectAction", gtk.STOCK_SAVE_AS, _("Save _As"), None, _("Save current project"), self.__saveAsProjectEvent__),
                                     ("QuitAction", gtk.STOCK_QUIT, _("_Quit"), "<Control>q", _("Quit PyCamimg"), self.__queryQuitMenuItemEvent__),
                                     ("ToolsMenuAction", None, _("_Tools")),
                                     ("OperationsAction", None, _("Operations")),
                                     ("PreferencesAction", gtk.STOCK_PREFERENCES, _("_Preferences"), None, _("Preferences of PyCamimg"), self.__openOptionsEvent__),
                                     ("PluginsAction", gtk.STOCK_CONNECT, _("P_lugins"), None, _("Plugins of PyCamimg"), self.__openPlunginsEvent__),
                                     ("HelpMenuAction", None, _("_Help")),
                                     ("AboutAction", gtk.STOCK_ABOUT, _("_About PyCamimg"), None, _("Preferences of PyCamimg"), self.__openAboutEvent__),
                                     ("AddItemAction", gtk.STOCK_ADD, _("Add Images"), None, _("Add selected images"), self.__addImageEvent__),
                                     ("DelItemAction", gtk.STOCK_DELETE, _("Delete Images"), None, _("Delete selected images"), self.__deleteImageEvent__),
                                     ("DelOperationsAction", gtk.STOCK_CLEAR, _("Delete Operations"), None, _("Delete selected operations"), self.__deleteOperationsEvent__),
                                     ("RunAction", gtk.STOCK_EXECUTE, _("Run"), None, _("Run current project"), self.__runEvent__)])
        actionGroupMenu.add_toggle_actions([("ChangeViewAction", gtk.STOCK_CONVERT, _("Toggle view"), None, _("Toggle between differents views"), self.__changeViewProjectEvent__)])

        actionGroupMenu.set_translation_domain(domain)
        
        __log__.debug("There is a xml path. UI Menus and tools will be recovered from path %s" % __XMLUI_FOLDER__)
        print __XMLUI_FOLDER__
        self.__uiManager__ = FactoryControls.getUIManager(os.path.join(__XMLUI_FOLDER__, "MainMenu.xml"), self.__mainWindow__, actionGroupMenu)[0]
        
        self.__menuBar__ = self.__uiManager__.get_widget("/MenuPyCaming")
        self.__toolBar__ = self.__uiManager__.get_widget("/ToolsPyCamimg")
        self.__toolBar__.set_style(gtk.TOOLBAR_BOTH_HORIZ)
        self.__toolBar__.set_tooltips(True)
Exemplo n.º 24
0
    def __initializeUI__(self, numberColumns):
        """
        @summary: Initialize TreeView Target.
        """
        iconview = gtk.IconView()
        treeview = gtk.TreeView()

        model = gtk.ListStore(gtk.gdk.Pixbuf,
                              gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gobject.TYPE_STRING,
                              gtk.gdk.Pixbuf,
                              gobject.TYPE_BOOLEAN,
                              gobject.TYPE_BOOLEAN)

        model.set_default_sort_func(lambda *args:-1)
        
        __log__.debug("Created model for new project")
    
        treeview.set_model(model)
        treeview.set_headers_visible(True)
        treeview.set_headers_clickable(True)
        treeview.set_rules_hint(True)
        treeview.set_enable_search(False)
        treeview.set_fixed_height_mode(False)
        treeview.set_tooltip_column(self.COLUMN_SOURCE)
        treeview.set_show_expanders(False)
        treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
        treeview.set_reorderable(True)
    
        iconview.set_model(model)
        iconview.set_text_column(self.COLUMN_TARGET)
        iconview.set_pixbuf_column(self.COLUMN_PREVIEW)
        iconview.set_tooltip_column(self.COLUMN_SOURCE)
        iconview.set_columns(numberColumns)
        iconview.set_selection_mode(gtk.SELECTION_MULTIPLE)
        iconview.set_reorderable(True)
    
        __log__.debug("Applied settings")
    
        # Creates columns of the TreeView of target files
        column = FactoryControls.getTreeColumnTextAndPixbuf(_("Name"), self.COLUMN_SOURCE, self.COLUMN_IMAGE)
        treeview.append_column(column)
        columnDate = FactoryControls.getTreeColumnText(_("Photo Date"), self.COLUMN_DATE)
        treeview.append_column(columnDate)
        columnTarget = FactoryControls.getTreeColumnText(_("Target Name"), self.COLUMN_TARGET)
        treeview.append_column(columnTarget)
        columnOps = FactoryControls.getTreeColumnText(_("Operations"), self.COLUMN_OPERATIONS)
        treeview.append_column(columnOps)
    
        __log__.debug("Columns added")
    
        # Enabled as drag source
        treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
                                          self.FROM_ITSELF,
                                          gtk.gdk.ACTION_MOVE)
    
        iconview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
                                          self.FROM_ITSELF,
                                          gtk.gdk.ACTION_MOVE)
            
        # Enabled as drop target
        treeview.enable_model_drag_dest(self.TO_TEXT,
                                        gtk.gdk.ACTION_DEFAULT
                                        | gtk.gdk.ACTION_COPY
                                        | gtk.gdk.ACTION_MOVE)
        
        iconview.enable_model_drag_dest(self.TO_TEXT,
                                        gtk.gdk.ACTION_DEFAULT
                                        | gtk.gdk.ACTION_COPY
                                        | gtk.gdk.ACTION_MOVE)
        
        treeview.connect("drag-data-get", self.__dragTarget__)
        treeview.connect("drag-data-received", self.__dropTarget__)
        treeview.connect("key-press-event", self.__keyPressEvent__)
        
        iconview.connect("drag-data-get", self.__dragTarget__)
        iconview.connect("drag-data-received", self.__dropTarget__)
        iconview.connect("key-press-event", self.__keyPressEvent__)
        
        __log__.debug("Drag & Drop enabled")
        
        scroll = gtk.ScrolledWindow()
        scroll.add(treeview)
        
        size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
        if ((self.__iconName__ != None) and (self.__iconName__ != "")):
            pbProject = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(self.__iconsPath__, self.__iconName__),
                                                             size[0], size[1])
        else:
            pbProject = FactoryControls.getPixbufFromStock(gtk.STOCK_MISSING_IMAGE, gtk.ICON_SIZE_MENU)
            
        imageProject = gtk.Image()
        imageProject.set_from_pixbuf(pbProject)
        
        bClose = gtk.Button(label=None, stock=None, use_underline=False)
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
        bClose.set_relief(gtk.RELIEF_NONE)
        bClose.set_border_width(0)
        bClose.set_image(image)
        bClose.connect("clicked", self.__buttonActivateSignal__)
        
        lTitle = gtk.Label(str=self.__name__)
        hbTab = gtk.HBox()
        
        hbTab.pack_start(imageProject, expand=False, fill=False, padding=1)
        hbTab.pack_start(lTitle, expand=False, fill=False, padding=2)
        hbTab.pack_start(bClose, expand=False, fill=False)
        
        __log__.debug("Scroll created")
        
        self.__label__ = lTitle
        self.__button__ = bClose
        self.__tabWidget__ = hbTab
        
        self.__treeview__ = treeview
        self.__iconview__ = iconview
        self.__model__ = model
        self.__scroll__ = scroll
Exemplo n.º 25
0
 def __fillDirectory__(self, path):
     """
     @summary: Fills a node with sub-directories.
     @param path: Folder path to fill. 
     """
     newExpand = False
     # Gets current path
     iter = self.__model__.get_iter(path)
     sPath = self.__model__.get_value(iter, self.__PATH_COLUMN__)
     
     monitor = FactoryDirectoryMonitor.getMonitor(sPath)
     
     # Checks if first child y a temporal node. If it is, it must be removed
     itFirstChild = self.__model__.iter_children(iter)
     if (itFirstChild != None):
         if (self.__model__.get_value(itFirstChild, self.__PATH_COLUMN__) == self.__TEMP_NODE__):
             # Gets number of nodes. If nNodes > 1, 
             # there is another thread that is loading the directory 
             nNodes = self.__model__.iter_n_children(iter)
             if (nNodes > 1):
                 return
             newExpand = True
     else:
         __log__.warning("It can not get first child of %s" % sPath)
 
     # Gets directories of the path
     lDirectories = self.__ioUtils__.getDirectories(sPath,
                                                    showhidden=self.__showHiddens__)
 
     if (lDirectories != None):
         icon = FactoryControls.getPixbufFromStock(gtk.STOCK_DIRECTORY)
             
         if (not newExpand):
             __log__.debug("It is not a new expand. Checking directories...")
             
             iterStep = self.__model__.iter_children(iter)
             # Find deleted iters
             while (iterStep != None):
                 doStep = True
                 sDirFind = self.__model__.get_value(iterStep, self.__NAME_COLUMN__)
                 if (sDirFind != None):
                     try:
                         index = lDirectories.index(sDirFind)
                     except ValueError, ve:
                         __log__.debug("It can not get index of %s. %s" % (sDirFind, ve))
                         index = -1
                     if (index == -1):
                         # In case of directory does not exist, it will remove from treeview
                         iterDelete = iterStep
                         iterStep = self.__model__.iter_next(iterStep)
                         self.deleteNode(iterDelete)
                         __log__.debug("Delete node %s" % sDirFind)
                         
                         doStep = False
                     else:
                         # In case of directory just exists, it will remove from list
                         lDirectories.remove(sDirFind)
                         __log__.debug("%s skipped" % sDirFind)
     
                 if (doStep):
                     iterStep = self.__model__.iter_next(iterStep)
             
             # Check directories in the list 
             for sDir in lDirectories:
                 sFullPath = os.path.join(sPath, sDir)
                 checkIter = self.__findDirectoryOnParent__(iter, sDir)
                 if (checkIter == None):
                     self.addDirectory(sDir, sFullPath, icon, iter)
                     __log__.debug("Add %s" % sFullPath)
         
         # Insert directories
         for sDir in lDirectories:
             sFullPath = os.path.join(sPath, sDir)
             self.addDirectory(sDir, sFullPath, icon, iter)
             __log__.debug("Add %s" % sFullPath)
                 
         if ((itFirstChild != None) and newExpand):
             __log__.debug("Remove temporal node.")
             self.deleteNode(itFirstChild)
             
         monitor.addDirectories(lDirectories)
         monitor.addListener(self.__handlerDirectoryMonitorEvents__)
Exemplo n.º 26
0
 def set_from_stock(self, stock):
     """
     @summary: Set image from stock image.
     @param Id stock of the image.: 
     """
     self.set_from_pixbuf(FactoryControls.getPixbufFromStock(stock))
Exemplo n.º 27
0
             core.save()
         except Exception, e:
             __log__.error("It could not save current project to %s. %s" % (core.getFilename(), e))
             FactoryControls.getMessage(_("An error was occurred when it was saving current project to %s" % core.getFilename()),
                                        type=gtk.MESSAGE_ERROR,
                                        title=_("Save project"),
                                        parent=self.__mainWindow__)
             return
     else:
         __log__.debug("Current project is not saved yet. Opening save dialog")
         try:
             self.__saveAsProjectEvent__(b, raiseError=True)
         except Exception, e:
             __log__.error("It could not save current project to %s. %s" % (core.getFilename(), e))
             FactoryControls.getMessage(_("An error was occurred when it was saving current project to %s" % core.getFilename()),
                                        type=gtk.MESSAGE_ERROR,
                                        title=_("Save project"),
                                        parent=self.__mainWindow__)
             return
     __log__.info("Current project save on %s" % core.getFilename())
 
 def __saveAsProjectEvent__ (self, b, raiseError=False):
     """
     @summary: Handle save project action.
     @param b: Button that threw event.
     @param raiseError: True to throw an error when occurrs. 
     """
     if (self.__currentTab__ == None):
         __log__.debug("There is not current project")
         return
     
     fileSel = gtk.FileChooserDialog(title=_("Save project"),