diff --git a/.deploy.sh b/.deploy.sh index 684237c69379084638ed43f52eff72589d5e32dd..492c880054991facb60e2c668f6a3be34251e5a8 100755 --- a/.deploy.sh +++ b/.deploy.sh @@ -1,4 +1,5 @@ #!/bin/bash +# shellcheck disable=SC2029 # This script uploads an includes a .deb package in our debian repository. # The distribution is chosen based on the gitlab-ci stage we are on. @@ -10,15 +11,23 @@ ssh-add <(echo "$PRIV_KEY") echo "Deploy job name: $CI_JOB_NAME" -if [ "$CI_JOB_NAME" = "deploy_for_testing" ]; then +if [ "$CI_JOB_NAME" = "deploy_for_unstable" ]; then dput -u -f --config=dput.cf repo build/*.changes -elif [ "$CI_JOB_NAME" = "deploy_for_stable" ]; then + +else + if [ "$CI_JOB_NAME" = "deploy_for_testing" ]; then + REPO_SRC="unstable" + REPO_TGT="testing" + elif [ "$CI_JOB_NAME" = "deploy_for_stable" ]; then + REPO_SRC="testing" + REPO_TGT="stable" + fi + CHANGELOG="package/debian/changelog" LINE=$(head -n 1 $CHANGELOG) PACKAGE=$(echo "$LINE" | cut -d' ' -f1) VERSION=$(echo "$LINE" | cut -d' ' -f2 | grep -o -E '[0-9]*\.[0-9]*\.[0-9]*') + REPREPRO_CMD="reprepro -Vb /home/repository/www/le6 copysrc $REPO_TGT $REPO_SRC $PACKAGE $VERSION" - REPREPRO_CMD="reprepro -Vb /home/repository/www/le6 copysrc stable testing $PACKAGE $VERSION" - # shellcheck disable=SC2029 - ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa repository@repo.c3sl.ufpr.br "$REPREPRO_CMD" + ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null repository@repo.c3sl.ufpr.br "$REPREPRO_CMD" fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6aa162b4dff889e48680ada89b16783323c129b..04408999ca69654ffa3e0b362966c925a2f1a91b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,14 +39,30 @@ test: - regular script: - apt-get update && apt-get install -y wget + - echo "deb http://repo.c3sl.ufpr.br/le6/ unstable main" > /etc/apt/sources.list.d/le6.list - wget -O- http://repo.c3sl.ufpr.br/le6/le.c3sl.ufpr.br.key | apt-key add - - - echo "deb http://repo.c3sl.ufpr.br/le6/ testing main" > /etc/apt/sources.list.d/le6.list - - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install $(pwd)/build/*.deb language-pack-gnome-pt language-pack-pt-base + - echo "Installation test:" + - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install $(pwd)/build/*.deb language-pack-gnome-pt language-pack-pt-base + - echo "Removal test:" + - pkg_name=$(head -n 1 package/debian/changelog | cut -d' ' -f1) + - DEBIAN_FRONTEND=noninteractive apt -y remove $pkg_name + dependencies: + - build + +deploy_for_unstable: + stage: deploy + only: + - develop + tags: + - debian-packaging + script: + - ./.deploy.sh dependencies: - build deploy_for_testing: stage: deploy + when: manual only: - master tags: diff --git a/package/debian/changelog b/package/debian/changelog index c8ab30f8eaf5604f69a1102aa9ead3ece5dcb8cb..071732d6eacf29ffa3c5178f2add65bad74efc4d 100644 --- a/package/debian/changelog +++ b/package/debian/changelog @@ -1,3 +1,16 @@ +le-control-panel (0.2.0) unstable; urgency=medium + + * Add switch to enable/disable epoptes (Closes: #573) + * debian/control: New uploader + + -- Lucas Sulzbach <lesuporte@c3sl.ufpr.br> Thu, 05 Jul 2018 11:06:42 -0300 + +le-control-panel (0.1.1) testing; urgency=medium + + * Fix family-shield error loop bug + + -- André Luis da Silva Machado <alsm14@inf.ufpr.br> Thu, 12 Apr 2018 11:26:24 -0300 + le-control-panel (0.1.0) testing; urgency=medium * Add le-auto-upgrades status diff --git a/package/debian/control b/package/debian/control index 3fb7f6494c660a43db57537b1bbc7a721be93a46..4e8f90c7cd1390763de8bdb9633767df09f70b1b 100644 --- a/package/debian/control +++ b/package/debian/control @@ -1,7 +1,7 @@ Source: le-control-panel Section: admin Priority: extra -Uploaders: Andre Luis da Silva Machado <alsm14@c3sl.ufpr.br>, Diego Pasqualin <dpasqualin@c3sl.ufpr.br>, Rafael Sanfelice Castilho <rsc15@inf.ufpr.br> +Uploaders: Andre Luis da Silva Machado <alsm14@c3sl.ufpr.br>, Diego Pasqualin <dpasqualin@c3sl.ufpr.br>, Rafael Sanfelice Castilho <rsc15@inf.ufpr.br>, Lucas Sulzbach <ls17@c3sl.ufpr.br> Maintainer: C3SL <contato@c3sl.ufpr.br> Build-Depends: debhelper (>= 9) Standards-Version: 3.9.7 @@ -9,7 +9,7 @@ Vcs-Git: https://gitlab.c3sl.ufpr.br/le6/le-control-panel.git Package: le-control-panel Architecture: all -Depends: python, gksu, inotify-tools, ${shlibs:Depends}, ${misc:Depends}, gtk2-engines-murrine, python-apt +Depends: python, gksu, inotify-tools, ${shlibs:Depends}, ${misc:Depends}, gtk2-engines-murrine, python-apt, python-crontab Recommends: le-conf (>= 0.0.20) Description: Admin tool to configure Linux Educacional le-control-panel is a tool to configure Linux Educacional. diff --git a/package/le-control-panel b/package/le-control-panel index 9a516ac9ff5d1d00d402c79b66602f652b70fabd..6439d017432d3f78be599b4626c3d57ecd36ab62 100755 --- a/package/le-control-panel +++ b/package/le-control-panel @@ -21,6 +21,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. +from crontab import CronTab as ct import os import grp import gi @@ -42,6 +43,7 @@ source_id = 0 # This class stores the functions that are executed # when the user interacts with the GUI components class Handler: + error_mode = False def createErrorMessage(self, switch=None, parent=None, message="Erro"): # Creates a generic error message window @@ -66,37 +68,47 @@ class Handler: Gtk.main_quit(*args) def onToggleLocalFamilyShield(self, switch, args): - if switch.is_visible(): + if self.error_mode: + self.error_mode = False + getShieldLocalState() + elif switch.is_visible(): if (switch.get_state()): out = os.system("family-shield -e") if out != 0: + self.error_mode = True self.createErrorMessage(switch, getWindow(switch), - "Não foi possÃvel ativar o " - "Controle Parental") + "Não foi possÃvel ativar o" + " Controle Parental") else: out = os.system("family-shield -d") if out != 0: + self.error_mode = True self.createErrorMessage(switch, getWindow(switch), - "Não foi possÃvel desativar o " - "Controle Parental") + "Não foi possÃvel desativar o" + " Controle Parental") return True def onToggleNetworkFamilyShield(self, switch, args): - if switch.is_visible(): - if (switch.get_state()): - out = os.system("family-shield -e -n") - if out != 0: - self.createErrorMessage(switch, getWindow(switch), - "Não foi possÃvel ativar o " - "Controle Parental") - else: - out = os.system("family-shield -d -n") - if out != 0: - self.createErrorMessage(switch, getWindow(switch), - "Não foi possÃvel desativar o " - "Controle Parental") - s = builder.get_object("switchShieldLocal") - s.set_active(getShieldLocalState()) + if self.error_mode: + self.error_mode = False + else: + if switch.is_visible(): + if (switch.get_state()): + out = os.system("family-shield -e -n") + if out != 0: + self.error_mode = True + self.createErrorMessage(switch, getWindow(switch), + "Não foi possÃvel ativar o" + " Controle Parental") + else: + out = os.system("family-shield -d -n") + if out != 0: + self.error_mode = True + self.createErrorMessage(switch, getWindow(switch), + "Não foi possÃvel desativar" + " o Controle Parental") + s = builder.get_object("switchShieldLocal") + s.set_active(getShieldLocalState()) return True def onToggleAutoUpdates(self, switch, args): @@ -116,6 +128,7 @@ class Handler: try: Popen("epoptes") except Exception as e: + print(e) self.createErrorMessage(None, getWindow(button), "Não foi possÃvel abrir o Epoptes") return True @@ -143,12 +156,14 @@ class Handler: builder.get_object("multiterminal_reboot_label").show() builder.get_object("multiterminalButton").hide() except Exception as e: + print(e) pass def onHelpButtonPressed(self, button): try: Popen("yelp /usr/share/help/pt_BR/le-help", shell=True) except Exception as e: + print(e) self.createErrorMessage(None, getWindow(button), "Não foi possÃvel abrir a ajuda") return True @@ -158,6 +173,48 @@ class Handler: print("Botao Pasta compartilhada pressionado!") return True + def onIncrementaHoraValueChanged(self, button): + h = button.get_value_as_int() + if h >= 24: + Popen("zenity --error --text \"Hora não pode ser" + "maior do que 23\"", shell=True) + else: + self.cron_hour = h + + def onIncrementaMinutoValueChanged(self, button): + m = button.get_value_as_int() + if m >= 60: + Popen("zenity --error --text \"Minuto não pode ser" + "maior do que 59\"", shell=True) + else: + self.cron_min = m + + def onSetTimePressed(self, button): + fc = ct(tabfile='/etc/crontab') + c = fc.find_command('cron.daily') + for job in c: + job.hour.on(self.cron_hour) + job.minute.on(self.cron_min) + fc.write() + runShellCommand("zenity --info --text \"Suas modificações" + " foram efetuadas\"") + + def onToggleEpoptes(self, switch, args): + if (switch.get_state()): + out = os.system("le-lab -s set_attribute epoptes _status enabled") + if out != 0: + self.error_mode = True + self.createErrorMessage(switch, getWindow(switch), + "Não foi possÃvel habilitar o epoptes") + else: + out = os.system("le-lab -s set_attribute epoptes _status disabled") + if out != 0: + self.error_mode = True + self.createErrorMessage(switch, getWindow(switch), + "Não foi possÃvel desabilitar" + " o epoptes") + return True + def passErrorResponse(self, dialog, response): dialog.hide() return 0 @@ -189,7 +246,7 @@ def timeout(): iconEpoptesStatus = builder.get_object("epoptesstatusicon") boxEpoptesStatus = builder.get_object("boxepoptesstatus") labelEpoptesStatus = builder.get_object("labelepoptesstatus") - if (statusEpoptes(labelEpoptesStatus)): + if (statusEpoptes(labelEpoptesStatus) == 2): iconEpoptesStatus.set_from_stock("gtk-yes", Gtk.IconSize.MENU) boxEpoptesStatus.set_tooltip_text("O Epoptes está ativo") else: @@ -439,28 +496,41 @@ def getEdubarStorage(): def statusEpoptes(label): try: - output = runShellCommand("le-lab -s get_attribute epoptes _status") - if output.find("client") != -1: + output = runShellCommand("le-lab -s get_attribute epoptes _status")[0] + s = builder.get_object("switchEpoptes") + if output.find("disabled") != -1: + label.set_text("Desabilitado") + return 0 + elif output.find("enabled") != -1: + label.set_text("Habilitado") + s.set_sensitive(True) + return 1 + elif output.find("client") != -1: label.set_text("Modo cliente") - return True + s.set_sensitive(False) + return 2 elif output.find("server") != -1: label.set_text("Modo servidor") - return True + s.set_sensitive(False) + return 2 else: label.set_text("") - return False + return 3 except Exception as e: - return False + print(e) + return 4 def statusAutoUpdate(label): try: apt_pkg.pkgsystem_lock() except Exception as e: + print(e) try: progress_file = open("/var/run/unattended-upgrades.progress", "r") progress = ": "+progress_file.read().split(':')[1] except Exception as e: + print(e) progress = "" label.set_text("Atualizações em andamento"+progress) return True @@ -481,6 +551,7 @@ def getShieldLocalState(): else: return False except Exception as e: + print(e) builder.get_object("family_shield_frame").set_sensitive(False) return False @@ -493,6 +564,7 @@ def getShieldNetworkState(): else: return False except Exception as e: + print(e) builder.get_object("family_shield_frame").set_sensitive(False) return False @@ -517,6 +589,7 @@ def usingMultiterminal(): if apt.Cache()['le-multiterminal'].is_installed: return True except Exception as e: + print(e) pass return False @@ -526,6 +599,7 @@ def setPermissions(uid): familyShield = builder.get_object("family_shield_frame") autoUpdate = builder.get_object("autoupdate_frame") epoptes = builder.get_object("epoptes_frame") + epoptesSwitch = builder.get_object("switchEpoptes") users = builder.get_object("new_user_frame") multiterminal = builder.get_object("multiterminal_frame") unlock = builder.get_object("unlock_button") @@ -541,11 +615,13 @@ def setPermissions(uid): users.set_sensitive(True) unlock.set_sensitive(False) epoptes.set_sensitive(True) + epoptesSwitch.set_sensitive(True) multiterminal.set_sensitive(True) else: familyShield.set_sensitive(False) autoUpdate.set_sensitive(False) users.set_sensitive(False) + epoptesSwitch.set_sensitive(False) multiterminal.set_sensitive(False) unlock.set_sensitive(True) @@ -571,14 +647,28 @@ def configureMultiterminal(): widget_to_hide.hide() +def getUpdateTime(): + # Gets the auto upgrade time from cron + with open("/etc/crontab", "r") as f: + for line in f: + if "daily" in line: + aux = line.split() + cron_min = int(aux[0]) + cron_hour = int(aux[1]) + SpinHour.set_value(cron_hour) + SpinMin.set_value(cron_min) + + if __name__ == "__main__": try: builder.add_from_file( "/usr/share/le-control-panel/le-control-panel.glade") except Exception as e: + print(e) try: builder.add_from_file("le-control-panel.glade") except Exception as e: + print(e) exit(1) pid = Popen(["lcpmonitor", "/var/cache/le-edubar/", "34", @@ -595,7 +685,7 @@ if __name__ == "__main__": iconEpoptesStatus = builder.get_object("epoptesstatusicon") boxEpoptesStatus = builder.get_object("boxepoptesstatus") labelEpoptesStatus = builder.get_object("labelepoptesstatus") - if (statusEpoptes(labelEpoptesStatus)): + if (statusEpoptes(labelEpoptesStatus) == 2): iconEpoptesStatus.set_from_stock("gtk-yes", Gtk.IconSize.MENU) boxEpoptesStatus.set_tooltip_text("O Epoptes está ativo") else: @@ -610,6 +700,10 @@ if __name__ == "__main__": newUserButton.connect("clicked", onNewUserButtonPressed, newUserDialog) switchUpdate = builder.get_object("switchAutoUpdate") + switchEpoptes = builder.get_object("switchEpoptes") + + SpinHour = builder.get_object("incrementa_hora") + SpinMin = builder.get_object("incrementa_minuto") uid = os.getuid() setPermissions(uid) @@ -623,10 +717,13 @@ if __name__ == "__main__": configureMultiterminal() + getUpdateTime() + if uid == 0: # super user switchShieldLocal.set_active(getShieldLocalState()) switchShieldNetwork.set_active(getShieldNetworkState()) switchUpdate.set_active(getUpdateState()) + switchEpoptes.set_active(statusEpoptes(labelEpoptesStatus) == 1) apt_pkg.init() pid = Popen(["lcpmonitor", "/var/log/unattended-upgrades/", "35", str(os.getpid())]).pid @@ -637,5 +734,6 @@ if __name__ == "__main__": switchShieldLocal.set_active(False) switchShieldNetwork.set_active(False) switchUpdate.set_active(False) + switchEpoptes.set_active(False) Gtk.main() diff --git a/package/le-control-panel.glade b/package/le-control-panel.glade index e1e0ae92fbb9f65fcd5497fddab59f0b6b4a8aa7..1473f3ea430be71461298a705abda6e0c410243d 100644 --- a/package/le-control-panel.glade +++ b/package/le-control-panel.glade @@ -1,7 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.20.0 --> +<!-- Generated with glade 3.22.1 --> <interface> <requires lib="gtk+" version="3.12"/> + <object class="GtkAdjustment" id="Hour_adjustment"> + <property name="upper">23</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> <object class="GtkMessageDialog" id="dialogWrongPassword"> <property name="can_focus">False</property> <property name="modal">True</property> @@ -51,246 +56,289 @@ <property name="can_focus">False</property> <property name="icon_name">dialog-password</property> </object> - <object class="GtkImage" id="image2"> + <object class="GtkImage" id="image3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">help-browser</property> + </object> + <object class="GtkImage" id="image4"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="pixbuf">/usr/share/icons/hicolor/20x20/apps/le-help.png</property> </object> + <object class="GtkListStore" id="liststore1"/> + <object class="GtkAdjustment" id="minute_adjustment"> + <property name="upper">59</property> + <property name="step_increment">5</property> + <property name="page_increment">10</property> + </object> <object class="GtkWindow" id="mainwindow"> <property name="can_focus">False</property> - <property name="title" translatable="yes">Painel de Controle do Linux Educacional</property> - <property name="resizable">False</property> - <property name="window_position">center</property> <signal name="destroy" handler="onDeleteWindow" swapped="no"/> <child> - <object class="GtkBox" id="mainbox"> + <placeholder/> + </child> + <child> + <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_left">10</property> - <property name="margin_right">10</property> - <property name="margin_bottom">10</property> - <property name="orientation">vertical</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <property name="min_content_width">100</property> + <property name="min_content_height">610</property> <child> - <object class="GtkBox"> + <object class="GtkViewport"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="margin_left">5</property> - <property name="margin_right">5</property> - <property name="margin_top">5</property> <child> - <object class="GtkButton" id="unlock_button"> - <property name="label" translatable="yes">Desbloquear</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="tooltip_text" translatable="yes">Desbloquear as ações de administrador</property> - <property name="always_show_image">True</property> - <signal name="clicked" handler="onUnlockButtonPressed" swapped="no"/> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkSeparator"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - <property name="orientation">vertical</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="family_shield_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment1"> + <object class="GtkBox" id="mainbox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="left_padding">12</property> + <property name="margin_bottom">10</property> + <property name="orientation">vertical</property> <child> - <object class="GtkBox" id="box2"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> - <property name="homogeneous">True</property> + <property name="margin_top">5</property> <child> - <object class="GtkLabel" id="label16"> + <object class="GtkButton" id="unlock_button"> + <property name="label" translatable="yes">Desbloquear</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes"><small>Controla os conteúdos que podem ser acessados pelos computadores da rede</small></property> - <property name="use_markup">True</property> - <property name="xalign">0</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Desbloquear as ações de administrador</property> + <property name="always_show_image">True</property> + <signal name="clicked" handler="onUnlockButtonPressed" swapped="no"/> </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> <property name="position">0</property> </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="family_shield_frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="box3"> + <object class="GtkAlignment"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes">habilitar o controle parental para este computador</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> + <property name="left_padding">12</property> <child> - <object class="GtkLabel" id="label6"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">Habilitar localmente</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkSwitch" id="switchShieldLocal"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="notify::active" handler="onToggleLocalFamilyShield" swapped="no"/> + <property name="orientation">vertical</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><small>Controla os conteúdos que podem ser acessados pelos computadores da rede</small></property> + <property name="use_markup">True</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Habilitar o controle parental para este computador</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Habilitar localmente</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="switchShieldLocal"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="notify::active" handler="onToggleLocalFamilyShield" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Habilitar o controle parental para todos os computadores da rede</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Habilitar na rede</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="switchShieldRede"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="notify::active" handler="onToggleNetworkFamilyShield" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> - <child> - <object class="GtkBox" id="box4"> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes">habilitar o controle parental para todos os computadores da rede</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <child> - <object class="GtkLabel" id="label7"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Habilitar na rede</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkSwitch" id="switchShieldRede"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="notify::active" handler="onToggleNetworkFamilyShield" swapped="no"/> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> - </child> + <property name="label" translatable="yes">Controle parental</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Controle parental</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkSeparator" id="separator1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">3</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="autoupdate_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> <child> - <object class="GtkBox"> + <object class="GtkSeparator"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="autoupdate_frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox"> + <object class="GtkAlignment"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> + <property name="left_padding">12</property> <child> - <object class="GtkBox" id="box5"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes">habilitar sistema de atualização automática</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> + <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="label13"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">Habilitar atualizações automáticas</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Habilitar sistema de atualização automática</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Habilitar atualizações automáticas</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="switchAutoUpdate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="notify::active" handler="onToggleAutoUpdates" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> @@ -299,595 +347,726 @@ </packing> </child> <child> - <object class="GtkSwitch" id="switchAutoUpdate"> + <object class="GtkBox" id="boxautoupdatestatus"> <property name="visible">True</property> - <property name="can_focus">True</property> - <signal name="notify::active" handler="onToggleAutoUpdates" swapped="no"/> + <property name="can_focus">False</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Status</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkImage" id="autoupdatestatusicon"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-no</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="labelautoupdatestatus"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xpad">10</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> <property name="position">1</property> </packing> </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Editar horário:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="incrementa_hora"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="max_width_chars">2</property> + <property name="text" translatable="yes">0</property> + <property name="input_purpose">number</property> + <property name="orientation">vertical</property> + <property name="adjustment">Hour_adjustment</property> + <property name="snap_to_ticks">True</property> + <property name="numeric">True</property> + <property name="wrap">True</property> + <property name="update_policy">if-valid</property> + <signal name="value-changed" handler="onIncrementaHoraValueChanged" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">:</property> + <attributes> + <attribute name="scale" value="2"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="incrementa_minuto"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="max_width_chars">2</property> + <property name="text" translatable="yes">43</property> + <property name="input_purpose">number</property> + <property name="orientation">vertical</property> + <property name="adjustment">minute_adjustment</property> + <property name="snap_to_ticks">True</property> + <property name="numeric">True</property> + <property name="wrap">True</property> + <property name="update_policy">if-valid</property> + <property name="value">43</property> + <signal name="value-changed" handler="onIncrementaMinutoValueChanged" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">h:m (formato 24 horas)</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton"> + <property name="label" translatable="yes">Aplicar</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="margin_top">55</property> + <signal name="clicked" handler="onSetTimePressed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> </child> - <child> - <object class="GtkBox" id="boxautoupdatestatus"> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <child> - <object class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Status</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkImage" id="autoupdatestatusicon"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-no</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="labelautoupdatestatus"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xpad">10</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">end</property> - <property name="position">2</property> - </packing> - </child> + <property name="label" translatable="yes">Atualizações automáticas</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Atualizações automáticas</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">4</property> - </packing> - </child> - <child> - <object class="GtkSeparator"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">5</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="epoptes_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> <child> - <object class="GtkBox" id="box10"> + <object class="GtkSeparator"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="label17"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes"><small>Ferramenta de gerenciamento de laboratório</small></property> - <property name="use_markup">True</property> - <property name="ellipsize">end</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="epoptes_frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="boxepoptesstatus"> + <object class="GtkAlignment"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> + <property name="left_padding">12</property> <child> - <object class="GtkLabel" id="label14"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">Status</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkImage" id="epoptesstatusicon"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-no</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="labelepoptesstatus"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xpad">10</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><small>Ferramenta de gerenciamento de laboratório</small></property> + <property name="use_markup">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="boxepoptesstatus"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Status</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkImage" id="epoptesstatusicon"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-no</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="labelepoptesstatus"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xpad">10</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton"> + <property name="label" translatable="yes">Abrir Epoptes como servidor</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <signal name="clicked" handler="onEpoptesButtonPressed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Habilitar o Epoptes localmente</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Habilitar Epoptes</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="switchEpoptes"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="notify::active" handler="onToggleEpoptes" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">end</property> - <property name="position">2</property> - </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> - <child> - <object class="GtkButton" id="button2"> - <property name="label" translatable="yes">Abrir Epoptes como servidor</property> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="halign">start</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <signal name="clicked" handler="onEpoptesButtonPressed" swapped="no"/> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Epoptes</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">6</property> + </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Epoptes</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">6</property> - </packing> - </child> - <child> - <object class="GtkSeparator" id="separator2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">7</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="le-edubar_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> <child> - <object class="GtkBox" id="box6"> + <object class="GtkSeparator"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="le-edubar_frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkLabel" id="label20"> + <object class="GtkAlignment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="left_padding">12</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><small>Gerenciar conteúdos educacionais extraÃdos do Portal MEC</small></property> + <property name="use_markup">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Número de arquivos baixados do Portal MEC para este computador</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Arquivos</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="labelArquivosEdubar"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Espaço de armazenamento utilizado por arquivos baixados do Portal MEC neste computador</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Espaço de armazenamento utilizado</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="labelArmazenamentoEdubar"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes"><small>Gerenciar conteúdos educacionais extraÃdos do Portal MEC</small></property> - <property name="use_markup">True</property> - <property name="ellipsize">end</property> - <property name="xalign">0</property> + <property name="label" translatable="yes">Conteúdos educacionais</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">9</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="new_user_frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="box7"> + <object class="GtkAlignment" id="alignment3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes">Número de arquivos baixados do Portal MEC para este computador</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <child> - <object class="GtkLabel" id="label9"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Arquivos</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> + <property name="left_padding">12</property> <child> - <object class="GtkLabel" id="labelArquivosEdubar"> + <object class="GtkBox" id="box1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><small>Gerenciar usuários</small></property> + <property name="use_markup">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="newUserButton"> + <property name="label" translatable="yes">Criar novo usuário de Professor</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> - <child> - <object class="GtkBox" id="box8"> + <child type="label"> + <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="tooltip_text" translatable="yes">Espaço de armazenamento utilizado por arquivos baixados do Portal MEC neste computador</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <child> - <object class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Espaço de armazenamento utilizado</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="labelArmazenamentoEdubar"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> - </child> + <property name="label" translatable="yes">Usuários</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">10</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">11</property> + </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Conteúdos educacionais</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">8</property> - </packing> - </child> - <child> - <object class="GtkSeparator" id="separator3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">9</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="new_user_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> <child> - <object class="GtkBox" id="box1"> + <object class="GtkFrame" id="multiterminal_frame"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkLabel" id="label3"> + <object class="GtkAlignment"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes"><small>Gerenciar usuários</small></property> - <property name="use_markup">True</property> - <property name="ellipsize">end</property> - <property name="xalign">0</property> + <property name="left_padding">12</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel" id="multiterminal_reboot_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Reinicie o computador para configurar o multiterminal.</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="multiterminalButton"> + <property name="label" translatable="yes">Reconfigurar Multiterminal</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <property name="always_show_image">True</property> + <signal name="clicked" handler="onMultiterminalButtonPressed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> </child> - <child> - <object class="GtkButton" id="newUserButton"> - <property name="label" translatable="yes">Criar novo usuário de Professor</property> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="halign">start</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Configurações do multiterminal</property> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">12</property> + </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label8"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Usuários</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">10</property> - </packing> - </child> - <child> - <object class="GtkSeparator" id="separator4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">11</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="multiterminal_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> <child> - <object class="GtkBox"> + <object class="GtkSeparator" id="multiterminal_separator"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">13</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="help_frame"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkLabel" id="multiterminal_reboot_label"> + <object class="GtkAlignment"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">Reinicie o computador para configurar o multiterminal.</property> + <property name="left_padding">12</property> + <child> + <object class="GtkButton" id="helpButton"> + <property name="label" translatable="yes"> Abrir ajuda do LE6 </property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <property name="margin_top">3</property> + <property name="margin_bottom">3</property> + <property name="image">image4</property> + <property name="always_show_image">True</property> + <signal name="clicked" handler="onHelpButtonPressed" swapped="no"/> + </object> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> </child> - <child> - <object class="GtkButton" id="multiterminalButton"> - <property name="label" translatable="yes">Reconfigurar Multiterminal</property> + <child type="label"> + <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="halign">start</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <property name="always_show_image">True</property> - <signal name="clicked" handler="onMultiterminalButtonPressed" swapped="no"/> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Ajuda do Linux Educacional 6</property> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">14</property> + </packing> </child> </object> </child> - <child type="label"> - <object class="GtkLabel"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Configurações do multiterminal</property> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">12</property> - </packing> - </child> - <child> - <object class="GtkSeparator" id="multiterminal_separator"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="margin_top">5</property> - <property name="margin_bottom">5</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">13</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="help_frame"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="left_padding">12</property> - <child> - <object class="GtkButton" id="helpButton"> - <property name="label" translatable="yes"> Abrir ajuda do LE6 </property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="halign">start</property> - <property name="margin_top">3</property> - <property name="margin_bottom">3</property> - <property name="image">image2</property> - <property name="always_show_image">True</property> - <signal name="clicked" handler="onHelpButtonPressed" swapped="no"/> - </object> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Ajuda do Linux Educacional 6</property> - </object> - </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">14</property> - </packing> </child> </object> </child> - <child type="titlebar"> - <placeholder/> - </child> </object> <object class="GtkDialog" id="newUserDialog"> <property name="can_focus">False</property> @@ -899,7 +1078,9 @@ <property name="destroy_with_parent">True</property> <property name="type_hint">dialog</property> <property name="deletable">False</property> - <property name="transient_for">mainwindow</property> + <child> + <placeholder/> + </child> <child internal-child="vbox"> <object class="GtkBox" id="newUserBox"> <property name="can_focus">False</property> @@ -1083,9 +1264,4 @@ <action-widget response="0">cancelCreateUserButton</action-widget> </action-widgets> </object> - <object class="GtkImage" id="image3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">help-browser</property> - </object> </interface> diff --git a/py_linter_requirements.txt b/py_linter_requirements.txt index d6e1449a031132ef0c56831d882cc53bcde48354..a6c562fe634a03c2f262a0ef8a86becfecc2f7fd 100644 --- a/py_linter_requirements.txt +++ b/py_linter_requirements.txt @@ -1,5 +1,5 @@ flake8 mccabe -pycodestyle +pycodestyle==2.3.1 pyflakes flake8-colors