[PATCH] Init: Added new file StatusDialog.py

Javier Fernandez (via Code Review) gerrit at gerrit.libreoffice.org
Mon Mar 25 03:46:38 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3005

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/05/3005/1

Init: Added new file StatusDialog.py

Change-Id: I679e60042d2d46fdeaf5b56063108bb0332393a0
---
A wizards/com/sun/star/wizards/web/StatusDialog.py
1 file changed, 174 insertions(+), 0 deletions(-)



diff --git a/wizards/com/sun/star/wizards/web/StatusDialog.py b/wizards/com/sun/star/wizards/web/StatusDialog.py
new file mode 100644
index 0000000..5b353cc
--- /dev/null
+++ b/wizards/com/sun/star/wizards/web/StatusDialog.py
@@ -0,0 +1,174 @@
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+#   Licensed to the Apache Software Foundation (ASF) under one or more
+#   contributor license agreements. See the NOTICE file distributed
+#   with this work for additional information regarding copyright
+#   ownership. The ASF licenses this file to you under the Apache
+#   License, Version 2.0 (the "License"); you may not use this file
+#   except in compliance with the License. You may obtain a copy of
+#   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+import uno
+import traceback
+
+from ..ui.UnoDialog2 import UnoDialog2
+from ..ui.UnoDialog import UnoDialog
+from ..ui.event.TaskListener import TaskListener
+from ..common.PropertyNames import PropertyNames
+
+# Note on the argument resource:
+# This should be a String array containing the followin strings, in the
+# following order:
+# dialog title, cancel, close, counter prefix, counter midfix, counter postfix
+class StatusDialog(UnoDialog2):
+
+    STANDARD_WIDTH = 240
+    lblTaskName = None
+    lblCounter = None
+    progressBar = None
+    btnCancel = None
+    finished = False
+    enableBreak = False
+    closeOnFinish = True
+    renderer = None
+    finishedMethod = None
+
+    def __init__(self, xmsf, width, taskName, displayCount, resources, hid):
+        super(StatusDialog, self).__init__(xmsf)
+
+        self.res = resources
+        if not (len(self.res) == 6):
+            # display a close button?
+            raise IllegalArgumentException("The resources argument should contain 6 Strings, see doc on constructor.")
+
+        b = not (self.enableBreak or self.closeOnFinish)
+
+        uno.invoke(self.xDialogModel, "setPropertyValues", (
+                ("Closeable",
+                 PropertyNames.PROPERTY_HEIGHT,
+                 PropertyNames.PROPERTY_HELPURL, "Moveable",
+                 PropertyNames.PROPERTY_NAME,
+                 PropertyNames.PROPERTY_POSITION_X,
+                 PropertyNames.PROPERTY_POSITION_Y,
+                 PropertyNames.PROPERTY_STEP, "Title",
+                 PropertyNames.PROPERTY_WIDTH),
+                (False, 6 + 25 + (27 if b else 7), hid, True, "StatusDialog", 102, 52, 0,
+                 self.res[0], width)))
+
+        tabstop = 1
+
+        self.lblTaskName = self.insertLabel("lblTask",
+                (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH),
+                (8, taskName, 6, 6, tabstop, int(width * 2 / 3)))
+        tabstop += 1
+        self.lblCounter = self.insertLabel("lblCounter",
+                (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH),
+                (8, "", int(width * 2 / 3), 6, tabstop, int(width / 3) - 4))
+        tabstop += 1
+        self.progressBar = self.insertProgressBar("progress",
+                (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH),
+                (10, 6, 16, tabstop, width - 12))
+        tabstop += 1
+
+        if b:
+            self.btnCancel = self.insertButton("btnCancel", "performCancel", self,
+                    (PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH),
+                    (14, self.res[1], width / 2 - 20, 6 + 25 + 7, tabstop, 40))
+        tabstop += 1
+
+    def initProgressBar(self, t):
+        self.progressBar.setRange(0, t.getMax())
+        self.progressBar.setValue(0)
+
+    def setStatus(self, status):
+        if self.finished:
+            return
+        self.progressBar.setValue(status)
+        #self.xReschedule.reschedule()
+
+    def setLabel(self, s):
+        self.lblTaskName.Text = s
+        #self.xReschedule.reschedule()
+
+    # change the max property of the status bar
+    # @param max
+    def setMax(self, maximum):
+        if self.finished:
+            return
+        self.progressBar.Model.ProgressValueMax = maximum
+
+    # initialize the status bar according
+    # to the given event.
+    def taskStarted(self, te):
+        self.finished = False
+        self.initProgressBar(te.getTask())
+
+    #closes the dialog.
+    def taskFinished(self, te):
+        self.finished = True
+        if self.closeOnFinish:
+            self.parent.xUnoDialog.setEnable(True)
+            try:
+                self.xUnoDialog.setVisible(False)
+                self.xUnoDialog.dispose()
+            except Exception:
+                traceback.print_exc()
+        else:
+            self.btnCancel.Model.Label = self.res[2]
+
+    # changes the status display
+    def taskStatusChanged(self, te):
+        self.setMax(te.getTask().getMax())
+        self.setStatus(te.getTask().getStatus())
+
+    # changes the displayed text.
+    # A renderer is used to render
+    #the task's subtask name to a resource string.
+    def subtaskNameChanged(self, te):
+        if self.renderer is not None:
+            self.setLabel(self.renderer.render(te.getTask().getSubtaskName()))
+
+    # displays the status dialog
+    # @param parent_ the parent dialog
+    # @param task what to do
+    def execute(self, parent_, task, title):
+        try:
+            self.parent = parent_
+            self.xDialogModel.Title = title
+            try:
+                # TODO change this to another execute dialog method.
+                task.addTaskListener(self)
+                self.setMax(10)
+                self.setStatus(0)
+                self.setLabel(task.getSubtaskName())
+                self.parent.xUnoDialog.setEnable(False)
+                self.setVisible(self.parent)
+                if self.finishedMethod is not None:
+                    self.finishedMethod.invoke()
+            except Exception:
+                traceback.print_exc()
+        except Exception:
+                traceback.print_exc()
+
+    # not supported !
+    def performCancel(self):
+        #TODO - implement a thread thing here...
+        self.xUnoDialog.setVisible(False)
+
+    # @return the subTask renderer object
+    def getRenderer(self):
+        return self.renderer
+
+    # @param renderer
+    def setRenderer(self, renderer):
+        self.renderer = renderer
+
+    #sets a method to be invoced when the
+    def setFinishedMethod(self, mi):
+        self.finishedMethod = mi

-- 
To view, visit https://gerrit.libreoffice.org/3005
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I679e60042d2d46fdeaf5b56063108bb0332393a0
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Javier Fernandez <javier.fgb at gmail.com>



More information about the LibreOffice mailing list