Explorar el Código

Mise à jour des ressources

olivier.massot hace 7 años
padre
commit
492853073f
Se han modificado 8 ficheros con 108 adiciones y 50 borrados
  1. 3 14
      Viewer.py
  2. 25 31
      core.py
  3. 40 5
      qt_viewer.ui
  4. 0 0
      rsc/dossier_32.png
  5. 0 0
      rsc/enregistrer_16.png
  6. 40 0
      rsc/icon.svg
  7. BIN
      rsc/open_16.png
  8. BIN
      rsc/svg_16.png

+ 3 - 14
Viewer.py

@@ -15,7 +15,7 @@ from path import Path
 import core
 
 
-Ui_window, _ = uic.loadUiType(Path(__file__).parent / 'qt_viewer.ui')
+Ui_window, _ = uic.loadUiType(Path(__file__).parent / r'qt_viewer.ui')
 
 palette = {
             "Table": QColor(240, 240, 20),
@@ -252,17 +252,6 @@ class GraphicsLink(QGraphicsLineItem):
         line = QLineF(self.mapToScene(self.topGraphicsObject.bottomAnchorCenter()), self.mapToScene(self.bottomGraphicsObject.topAnchorCenter()))
         self.setLine(line)
 
-    def select(self, active):
-        pen = QPen()
-        if active:
-            pen.setColor(QColor("blue"))
-            pen.setWidth(2)
-        else:
-            pen.setColor(QColor("black"))
-            pen.setWidth(1)
-        self.setPen(pen)
-
-
 class Viewer(QMainWindow):
 
     def __init__(self):
@@ -282,7 +271,7 @@ class Viewer(QMainWindow):
         self.ui.btn_zoom_plus.clicked.connect(self.zoom_plus)
         self.ui.btn_zoom_minus.clicked.connect(self.zoom_minus)
         self.ui.btn_zoom_view.clicked.connect(self.fit_in_view)
-        self.ui.btn_save.clicked.connect(self.save_to_png)
+        self.ui.btn_svg.clicked.connect(self.to_png)
         self.ui.treeWidget.itemClicked.connect(self.treeItemSelected)
 
         self._title = "<unknown>"
@@ -329,7 +318,7 @@ class Viewer(QMainWindow):
     def zoom_minus(self):
         self.ui.view.scale(0.8, 0.8)
 
-    def save_to_png(self):
+    def to_png(self):
         fileName, _ = QFileDialog.getSaveFileName(self, "Save File", "", "Svg File (*.svg)")
         if not fileName:
             return

+ 25 - 31
core.py

@@ -7,17 +7,13 @@ import re
 
 from path import Path
 
-
-objects = []
-
-
-
-# TODO: gérer les cas où des objets de types différents portent le même nom. Ex: une table et un formulaire...
+# TODO: gérer les cas où des objets de types différents portent le même nom. Ex: une table et un formulaire... Note: une requete et une table ne peuvent pas porter le même nom.
 # TODO: ignorer les commentaires dans le modules
 # TODO: ignorer les labels dans les formulaires et états
-
-# NB: une requete et une table ne peuvent pas porter le même nom.
-
+# TODO: Gérer les références circulaires
+# TODO: Stocker un aperçu du contexte de la ou des références dans le code source, pour contrôle ultérieur
+# TODO: Permettre de supprimer / ajouter des réferences
+# TODO: Verifier que la recherche puisse être Case sensitive?
 
 
 def recurse(acc_obj):
@@ -31,7 +27,6 @@ def recurse(acc_obj):
 class InvalidFileExt(IOError):
     pass
 
-
 class AccessObject():
     type_ = "<unknown>"
     _valid_file_exts = (".bas")
@@ -81,10 +76,20 @@ class AccessObject():
         return name_
 
     def search_me_regex(self):
-        return re.compile(r"""({sep}){nom}({sep})""".format(p=self._re_w_sep, nom=self.nom))
+        return re.compile(r"""({sep}){nom}({sep})""".format(sep=self._re_w_sep, nom=self.nom))
+
+    def containsRefsTo(self, access_object):
+        if access_object is self:
+            return False
+
+        if type(access_object) is ModuleObject:  # L'objet peut contenir des references aux fonctions de l'objet module
+            for fname in access_object.functions:
+                rx = re.compile(r"(^|\W)({})($|\W)".format(fname))
+                if rx.search(self.sourcecode):
+                    return True
 
-    def rawsearch_me_regex(self):
-        return self.search_me_regex()
+        rx = access_object.search_me_regex()
+        return rx.search(self.sourcecode)
 
 class TableObject(AccessObject):
     type_ = "Table"
@@ -123,7 +128,6 @@ DEPS_AND_REFS = 3
 class Analyse():
     objects = []
     duplicated_names = []
-    RAW_SEARCH = False
 
     @staticmethod
     def report(current, total, msg=""):
@@ -139,22 +143,6 @@ class Analyse():
             cls.duplicated_names.append(obj.nom)
         cls.objects.append(obj)
 
-    @staticmethod
-    def containsRefsTo(source, target):
-        if Analyse.RAW_SEARCH:
-            rx = target.rawsearch_me_regex()
-            return rx.search(source.sourcecode)
-
-        if type(target) is ModuleObject:  # L'objet peut contenir des references aux fonctions de l'objet module
-            for fname in target.functions:
-                rx = re.compile(r"(?:^|\W)({})(?:$|\W)".format(fname))
-                if rx.search(source.sourcecode):
-                    return True
-        else:
-            rx = re.compile(r"(?:^|\W)({})(?:$|\W)".format(target.nom))
-            return rx.search(source.sourcecode)
-
-
     @classmethod
     def run(cls, source_dir, mode=DEPS_AND_REFS):
         source_dir = Path(source_dir)
@@ -193,7 +181,7 @@ class Analyse():
 
             for candidate in cls.objects[:index] + cls.objects[index + 1:]:
 
-                if Analyse.containsRefsTo(subject, candidate):
+                if subject.containsRefsTo(candidate):
 
                     if mode in (DEPS_AND_REFS, DEPS_ONLY):
                         subject.add_dep(candidate)
@@ -207,6 +195,12 @@ class Analyse():
         return cls.objects
 
 
+
+
+
+
+
+
 if __name__ == "__main__":
     source_dir = Path(r"c:\dev\access\Analytique\source")
 

+ 40 - 5
qt_viewer.ui

@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>994</width>
+    <width>886</width>
     <height>658</height>
    </rect>
   </property>
@@ -17,7 +17,11 @@
    </font>
   </property>
   <property name="windowTitle">
-   <string>GridViewer</string>
+   <string>AccessAnalyser</string>
+  </property>
+  <property name="windowIcon">
+   <iconset>
+    <normaloff>rsc/icon.svg</normaloff>rsc/icon.svg</iconset>
   </property>
   <widget class="QWidget" name="centralwidget">
    <layout class="QHBoxLayout" name="horizontalLayout" stretch="2">
@@ -97,7 +101,7 @@
            </property>
            <property name="icon">
             <iconset>
-             <normaloff>dossier_32.png</normaloff>dossier_32.png</iconset>
+             <normaloff>rsc/dossier_32.png</normaloff>rsc/dossier_32.png</iconset>
            </property>
            <property name="autoDefault">
             <bool>true</bool>
@@ -352,12 +356,43 @@
             <verstretch>0</verstretch>
            </sizepolicy>
           </property>
+          <property name="toolTip">
+           <string>Enregistrer</string>
+          </property>
+          <property name="text">
+           <string/>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>rsc/enregistrer_16.png</normaloff>rsc/enregistrer_16.png</iconset>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="btn_load">
+          <property name="toolTip">
+           <string>Charger</string>
+          </property>
           <property name="text">
-           <string>...</string>
+           <string/>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>rsc/open_16.png</normaloff>rsc/open_16.png</iconset>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="btn_svg">
+          <property name="toolTip">
+           <string>Exporter au format SVG</string>
+          </property>
+          <property name="text">
+           <string/>
           </property>
           <property name="icon">
            <iconset>
-            <normaloff>enregistrer_16.png</normaloff>enregistrer_16.png</iconset>
+            <normaloff>rsc/svg_16.png</normaloff>rsc/svg_16.png</iconset>
           </property>
          </widget>
         </item>

+ 0 - 0
dossier_32.png → rsc/dossier_32.png


+ 0 - 0
enregistrer_16.png → rsc/enregistrer_16.png


+ 40 - 0
rsc/icon.svg

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 51 51" style="enable-background:new 0 0 51 51;" xml:space="preserve">
+<polygon style="fill:#EFCE4A;" points="50.956,14.456 25.5,29 0.044,14.456 25.5,0 "/>
+<polygon style="fill:#ED8A19;" points="25.5,29 9.7,19.973 0.044,25.456 25.5,40 50.956,25.456 41.3,19.973 "/>
+<g>
+	<polygon style="fill:#EA6248;" points="25.5,40 9.7,30.973 0.044,36.456 25.5,51 50.956,36.456 41.3,30.973 	"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>

BIN
rsc/open_16.png


BIN
rsc/svg_16.png