def show_loading_message(self, do_show=True): if do_show: txt = _("Loading, please wait...") else: txt = "" self.labels['loading'].set_markup(txt) self.labels['loading'].queue_draw() misc.gtk_refresh()
def __init__(self, app, cmd_line): Gtk.ApplicationWindow.__init__(self, title="Cnchi", application=app) self.MAIN_WINDOW_WIDTH = 875 self.MAIN_WINDOW_HEIGHT = 550 # Check if we have administrative privileges if os.getuid() != 0: msg = _('This installer must be run with administrative privileges, ' 'and cannot continue without them.') show.error(self, msg) sys.exit(1) # Check if we're already running tmp_running = "/tmp/.setup-running" if os.path.exists(tmp_running): logging.error(_("File '%s' already exists."), tmp_running) msg = _("You cannot run two instances of this installer.\n\n" "If you are sure that the installer is not already running\n" "you can run this installer using the --force option\n" "or you can manually delete the offending file.\n\n" "Offending file: '{0}'").format(tmp_running) show.error(self, msg) sys.exit(1) logging.info(_("Cnchi installer version %s"), info.CNCHI_VERSION) self.settings = config.Settings() self.ui_dir = self.settings.get('ui') if not os.path.exists(self.ui_dir): cnchi_dir = os.path.join(os.path.dirname(__file__), './') self.settings.set('cnchi', cnchi_dir) ui_dir = os.path.join(os.path.dirname(__file__), 'ui/') self.settings.set('ui', ui_dir) data_dir = os.path.join(os.path.dirname(__file__), 'data/') self.settings.set('data', data_dir) self.ui_dir = self.settings.get('ui') if cmd_line.cache: logging.debug("Cnchi will use '%s' as a source directory for cached xz packages", cmd_line.cache) self.settings.set('cache', cmd_line.cache) data_dir = self.settings.get('data') # For things we are not ready for users to test self.settings.set('z_hidden', cmd_line.z_hidden) # Set enabled desktops if self.settings.get('z_hidden'): self.settings.set("desktops", desktops.DESKTOPS_DEV) else: self.settings.set("desktops", desktops.DESKTOPS) self.ui = Gtk.Builder() path = os.path.join(self.ui_dir, "cnchi.ui") self.ui.add_from_file(path) self.add(self.ui.get_object("main")) self.header_ui = Gtk.Builder() path = os.path.join(self.ui_dir, "header.ui") self.header_ui.add_from_file(path) self.header = self.header_ui.get_object("header") self.logo = self.header_ui.get_object("logo") path = os.path.join(data_dir, "images", "antergos", "antergos-logo-mini2.png") self.logo.set_from_file(path) # To honor our css self.header.set_name("header") self.logo.set_name("logo") self.main_box = self.ui.get_object("main_box") self.progressbar = self.ui.get_object("main_progressbar") self.progressbar.set_name('process_progressbar') self.forward_button = self.header_ui.get_object("forward_button") self.backwards_button = self.header_ui.get_object("backwards_button") atk_set_image_description(self.forward_button, _("Next step")) atk_set_image_description(self.backwards_button, _("Previous step")) self.forward_button.set_name('fwd_btn') self.forward_button.set_always_show_image(True) self.backwards_button.set_name('bk_btn') self.backwards_button.set_always_show_image(True) # Create a queue. Will be used to report pacman messages (pacman/pac.py) # to the main thread (installation/process.py) self.callback_queue = multiprocessing.JoinableQueue() # Save in config which download method we have to use if cmd_line.library: self.settings.set("download_library", cmd_line.library) else: # Use urllib by default self.settings.set("download_library", 'urllib') logging.info( _("Using %s to download packages"), self.settings.get("download_library")) self.set_titlebar(self.header) # Prepare params dict to pass common parameters to all screens self.params = dict() self.params['header'] = self.header self.params['ui_dir'] = self.ui_dir self.params['forward_button'] = self.forward_button self.params['backwards_button'] = self.backwards_button self.params['callback_queue'] = self.callback_queue self.params['settings'] = self.settings self.params['main_progressbar'] = self.progressbar if cmd_line.packagelist: self.params['alternate_package_list'] = cmd_line.packagelist logging.info(_("Using '%s' file as package list"), self.params['alternate_package_list']) else: self.params['alternate_package_list'] = "" self.params['checks_are_optional'] = cmd_line.no_check self.params['disable_tryit'] = cmd_line.disable_tryit self.params['testing'] = cmd_line.testing # Just load the first two screens (the other ones will be loaded later) # We do this so the user has not to wait for all the screens to be loaded self.pages = dict() self.pages["welcome"] = welcome.Welcome(self.params) if os.path.exists('/home/antergos/.config/openbox'): # In minimal iso, load language screen now self.pages["language"] = language.Language(self.params) # Fix bugy Gtk window size when using Openbox self.MAIN_WINDOW_WIDTH = 750 self.MAIN_WINDOW_HEIGHT = 450 self.connect('delete-event', self.on_exit_button_clicked) self.connect('key-release-event', self.check_escape) self.ui.connect_signals(self) self.header_ui.connect_signals(self) title = "Cnchi {0}".format(info.CNCHI_VERSION) self.set_title(title) self.header.set_title(title) self.header.set_subtitle(_("Antergos Installer")) self.header.set_show_close_button(True) self.set_geometry() # Set window icon icon_path = os.path.join(data_dir, "images", "antergos", "antergos-icon.png") self.set_icon_from_file(icon_path) # Set the first page to show # If minimal iso is detected, skip the welcome page. if os.path.exists('/home/antergos/.config/openbox'): self.current_page = self.pages["language"] self.settings.set('timezone_start', True) else: self.current_page = self.pages["welcome"] self.main_box.add(self.current_page) # Use our css file style_provider = Gtk.CssProvider() style_css = os.path.join(data_dir, "css", "gtk-style.css") with open(style_css, 'rb') as css: css_data = css.read() style_provider.load_from_data(css_data) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER ) # Show main window self.show_all() self.current_page.prepare('forwards') # Hide backwards button self.backwards_button.hide() self.progressbar.set_fraction(0) self.progressbar_step = 0 # Do not hide progress bar for minimal iso as it would break the widget alignment on language page. if not os.path.exists('/home/antergos/.config/openbox'): # Hide progress bar self.progressbar.hide() with open(tmp_running, "w") as tmp_file: tmp_file.write("Cnchi {0}\n".format(1234)) misc.gtk_refresh()
def __init__(self, app, cmd_line): Gtk.ApplicationWindow.__init__(self, title="DSGos_Installer", application=app) self.MAIN_WINDOW_WIDTH = 875 self.MAIN_WINDOW_HEIGHT = 550 logging.info("DSGos_Installer installer version %s", info.DSGos_Installer_VERSION) self.settings = config.Settings() self.ui_dir = self.settings.get('ui') if not os.path.exists(self.ui_dir): DSGos_Installer_dir = os.path.join(os.path.dirname(__file__), './') self.settings.set('DSGos-Installer', DSGos_Installer_dir) ui_dir = os.path.join(os.path.dirname(__file__), 'ui/') self.settings.set('ui', ui_dir) data_dir = os.path.join(os.path.dirname(__file__), 'data/') self.settings.set('data', data_dir) self.ui_dir = self.settings.get('ui') if cmd_line.cache: logging.debug("DSGos_Installer will use '%s' as a source directory for cached xz packages", cmd_line.cache) self.settings.set('cache', cmd_line.cache) data_dir = self.settings.get('data') # For things we are not ready for users to test self.settings.set('z_hidden', cmd_line.z_hidden) # Set enabled desktops if self.settings.get('z_hidden'): self.settings.set("desktops", desktop_info.DESKTOPS_DEV) else: self.settings.set("desktops", desktop_info.DESKTOPS) if cmd_line.environment: desktop = cmd_line.environment.lower() if desktop in desktop_info.DESKTOPS: self.settings.set('desktop', desktop) self.settings.set('desktop_ask', False) logging.debug("DSGos_Installer will install the %s desktop environment", desktop) self.ui = Gtk.Builder() path = os.path.join(self.ui_dir, "DSGos_Installer.ui") self.ui.add_from_file(path) self.add(self.ui.get_object("main")) self.header_ui = Gtk.Builder() path = os.path.join(self.ui_dir, "header.ui") self.header_ui.add_from_file(path) self.header = self.header_ui.get_object("header") self.logo = self.header_ui.get_object("logo") path = os.path.join(data_dir, "images", "DSGos", "DSGos-logo-mini2.png") self.logo.set_from_file(path) # To honor our css self.header.set_name("header") self.logo.set_name("logo") self.main_box = self.ui.get_object("main_box") # self.main_box.set_property('width_request', 800) self.progressbar = self.ui.get_object("main_progressbar") self.progressbar.set_name('process_progressbar') self.forward_button = self.header_ui.get_object("forward_button") self.backwards_button = self.header_ui.get_object("backwards_button") atk_set_image_description(self.forward_button, _("Next step")) atk_set_image_description(self.backwards_button, _("Previous step")) self.forward_button.set_name('fwd_btn') self.forward_button.set_always_show_image(True) self.backwards_button.set_name('bk_btn') self.backwards_button.set_always_show_image(True) # Create a queue. Will be used to report pacman messages (pacman/pac.py) # to the main thread (installation/process.py) self.callback_queue = multiprocessing.JoinableQueue() # This list will have all processes (rankmirrors, autotimezone...) self.process_list = [] # Save in config which download method we have to use if cmd_line.download_module: self.settings.set("download_module", cmd_line.download_module) else: # Use requests by default self.settings.set("download_module", 'requests') logging.info("Using %s to download packages", self.settings.get("download_module")) if cmd_line.packagelist: self.settings.set('alternate_package_list', cmd_line.packagelist) logging.info("Using '%s' file as package list", self.settings.get('alternate_package_list')) self.set_titlebar(self.header) # Prepare params dict to pass common parameters to all screens self.params = dict() self.params['main_window'] = self self.params['header'] = self.header self.params['ui_dir'] = self.ui_dir self.params['forward_button'] = self.forward_button self.params['backwards_button'] = self.backwards_button self.params['callback_queue'] = self.callback_queue self.params['settings'] = self.settings self.params['main_progressbar'] = self.progressbar self.params['process_list'] = self.process_list self.params['checks_are_optional'] = cmd_line.no_check self.params['disable_tryit'] = cmd_line.disable_tryit self.params['disable_rank_mirrors'] = cmd_line.disable_rank_mirrors self.params['testing'] = cmd_line.testing # Just load the first two screens (the other ones will be loaded later) # We do this so the user has not to wait for all the screens to be loaded self.pages = dict() self.pages["welcome"] = welcome.Welcome(self.params) if os.path.exists('/home/DSGos/.config/openbox'): # In minimal iso, load language screen now self.pages["language"] = language.Language(self.params) # Fix bugy Gtk window size when using Openbox self.MAIN_WINDOW_WIDTH = 750 self.MAIN_WINDOW_HEIGHT = 450 self.connect('delete-event', self.on_exit_button_clicked) self.connect('key-release-event', self.check_escape) self.ui.connect_signals(self) self.header_ui.connect_signals(self) title = "DSGos_Installer {0}".format(info.DSGos_Installer_VERSION) self.set_title(title) self.header.set_title(title) self.header.set_subtitle(_("DSGos Installer")) self.header.set_show_close_button(True) self.set_geometry() # Set window icon icon_path = os.path.join(data_dir, "images", "DSGos", "DSGos-icon.png") self.set_icon_from_file(icon_path) # Set the first page to show # If minimal iso is detected, skip the welcome page. if os.path.exists('/home/DSGos/.config/openbox'): self.current_page = self.pages["language"] self.settings.set('timezone_start', True) else: self.current_page = self.pages["welcome"] self.main_box.add(self.current_page) # Use our css file style_provider = Gtk.CssProvider() style_css = os.path.join(data_dir, "css", "gtk-style.css") with open(style_css, 'rb') as css: css_data = css.read() style_provider.load_from_data(css_data) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER ) # Show main window self.show_all() self.current_page.prepare('forwards') # Hide backwards button self.backwards_button.hide() self.progressbar.set_fraction(0) self.progressbar_step = 0 # Do not hide progress bar for minimal iso as it would break the widget alignment on language page. if not os.path.exists('/home/DSGos/.config/openbox'): # Hide progress bar self.progressbar.hide() misc.gtk_refresh()
def __init__(self, app, cmd_line): Gtk.ApplicationWindow.__init__(self, title="Thus", application=app) # Check if we have administrative privileges if os.getuid() != 0: msg = _('This installer must be run with administrative privileges, ' 'and cannot continue without them.') show.error(self, msg) sys.exit(1) # Check if we're already running tmp_running = "/tmp/.setup-running" if os.path.exists(tmp_running): logging.error(_("File '{0}' already exists.".format(tmp_running))) msg = _("You cannot run two instances of this installer.\n\n" "If you are sure that the installer is not already running\n" "you can run this installer using the --force option\n" "or you can manually delete the offending file.\n\n" "Offending file: '{0}'").format(tmp_running) show.error(self, msg) sys.exit(1) # workaround for dconf os.system("mkdir -p /root/.cache/dconf") os.system("chmod -R 777 /root/.cache") logging.info(_("Thus installer version {0}".format(info.THUS_VERSION))) self.settings = config.Settings() self.ui_dir = self.settings.get('ui') if not os.path.exists(self.ui_dir): thus_dir = os.path.join(os.path.dirname(__file__), './') self.settings.set('thus', thus_dir) ui_dir = os.path.join(os.path.dirname(__file__), 'ui/') self.settings.set('ui', ui_dir) data_dir = os.path.join(os.path.dirname(__file__), 'data/') self.settings.set('data', data_dir) self.ui_dir = self.settings.get('ui') '''if cmd_line.cache: logging.debug("Thus will use '{0}' as a source directory for cached xz packages".format(cmd_line.cache)) self.settings.set('cache', cmd_line.cache)''' data_dir = self.settings.get('data') # For things we are not ready for users to test self.settings.set('z_hidden', cmd_line.z_hidden) self.ui = Gtk.Builder() path = os.path.join(self.ui_dir, "main_window.ui") self.ui.add_from_file(path) self.add(self.ui.get_object("main")) self.header = self.ui.get_object("header") self.logo = self.ui.get_object("logo") path = os.path.join(data_dir, "images", "manjaro", "manjaro-logo-mini.png") self.logo.set_from_file(path) self.title = self.ui.get_object("title") # To honor our css self.header.set_name("header") self.logo.set_name("logo") self.main_box = self.ui.get_object("main_box") self.progressbar = self.ui.get_object("main_progressbar") self.progressbar.set_name('process_progressbar') self.forward_button = self.ui.get_object("forward_button") self.exit_button = self.ui.get_object("exit_button") self.backwards_button = self.ui.get_object("backwards_button") # image1 = Gtk.Image.new_from_icon_name("go-next", Gtk.IconSize.LARGE_TOOLBAR) # self.forward_button.set_label("") # self.forward_button.set_image(image1) # self.forward_button.set_name('fwd_btn') # self.forward_button.set_always_show_image(True) # self.forward_button.add(Gtk.Arrow(Gtk.ArrowType.RIGHT, Gtk.ShadowType.NONE)) # image2 = Gtk.Image.new_from_icon_name("go-previous", Gtk.IconSize.LARGE_TOOLBAR) # self.backwards_button.set_label("") # self.backwards_button.set_image(image2) self.backwards_button.set_name('bk_btn') self.backwards_button.set_always_show_image(True) # self.backwards_button.add(Gtk.Arrow(Gtk.ArrowType.LEFT, Gtk.ShadowType.NONE)) # Create a queue. Will be used to report pacman messages (pacman/pac.py) # to the main thread (installation/process.py) self.callback_queue = multiprocessing.JoinableQueue() '''# Save in config if we have to use aria2 to download pacman packages self.settings.set("use_aria2", cmd_line.aria2) if cmd_line.aria2: logging.info(_("Using Aria2 to download packages - EXPERIMENTAL"))''' # self.set_titlebar(self.header) # Prepare params dict to pass common parameters to all screens self.params = dict() self.params['title'] = self.title self.params['header'] = self.header self.params['ui_dir'] = self.ui_dir self.params['forward_button'] = self.forward_button self.params['exit_button'] = self.exit_button self.params['backwards_button'] = self.backwards_button self.params['callback_queue'] = self.callback_queue self.params['settings'] = self.settings self.params['main_progressbar'] = self.progressbar # self.params['disable_tryit'] = cmd_line.disable_tryit self.params['testing'] = cmd_line.testing # Just load the first two screens (the other ones will be loaded later) # We do this so the user has not to wait for all the screens to be loaded self.pages = dict() self.pages["language"] = language.Language(self.params) self.connect('delete-event', self.on_exit_button_clicked) self.connect('key-release-event', self.check_escape) self.ui.connect_signals(self) self.set_title(_("Manjaro Installer - Thus {0}".format(info.THUS_VERSION))) self.set_geometry() #self.set_position(Gtk.WindowPosition.CENTER) #self.set_resizable(False) #self.set_size_request(MAIN_WINDOW_WIDTH, MAIN_WINDOW_HEIGHT) # Set window icon icon_path = os.path.join(data_dir, "images", "manjaro", "manjaro-icon.png") self.set_icon_from_file(icon_path) # Set the first page to show self.current_page = self.pages["language"] self.settings.set('timezone_start', True) self.main_box.add(self.current_page) # Use our css file (not in minimal, looks better without) # Sorry, not anymore thanks to gtk 3.16 style_provider = Gtk.CssProvider() style_css = os.path.join(data_dir, "css", "gtk-style.css") with open(style_css, 'rb') as css: css_data = css.read() style_provider.load_from_data(css_data) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER ) # Show main window self.show_all() self.current_page.prepare('forwards') # Hide backwards button self.backwards_button.hide() self.progressbar.set_fraction(0) self.progressbar_step = 0 ''' # Do not hide progress bar for minimal iso as it would break the widget alignment on language page. if not os.path.exists('/home/manjaro/.config/openbox'): # Hide progress bar self.progressbar.hide() ''' with open(tmp_running, "w") as tmp_file: tmp_file.write("Thus {0}\n".format(1234)) misc.gtk_refresh()
def __init__(self, app, cmd_line): Gtk.ApplicationWindow.__init__(self, title="Cnchi", application=app) self.MAIN_WINDOW_WIDTH = 875 self.MAIN_WINDOW_HEIGHT = 550 logging.info("Cnchi installer version %s", info.CNCHI_VERSION) self.settings = config.Settings() self.ui_dir = self.settings.get('ui') if not os.path.exists(self.ui_dir): cnchi_dir = os.path.join(os.path.dirname(__file__), './') self.settings.set('cnchi', cnchi_dir) ui_dir = os.path.join(os.path.dirname(__file__), 'ui/') self.settings.set('ui', ui_dir) data_dir = os.path.join(os.path.dirname(__file__), 'data/') self.settings.set('data', data_dir) self.ui_dir = self.settings.get('ui') if cmd_line.cache: logging.debug( "Cnchi will use '%s' as a source directory for cached xz packages", cmd_line.cache) self.settings.set('cache', cmd_line.cache) data_dir = self.settings.get('data') # For things we are not ready for users to test self.settings.set('z_hidden', cmd_line.z_hidden) # Set enabled desktops if self.settings.get('z_hidden'): self.settings.set("desktops", desktop_info.DESKTOPS_DEV) else: self.settings.set("desktops", desktop_info.DESKTOPS) if cmd_line.environment: desktop = cmd_line.environment.lower() if desktop in desktop_info.DESKTOPS: self.settings.set('desktop', desktop) self.settings.set('desktop_ask', False) logging.debug("Cnchi will install the %s desktop environment", desktop) self.ui = Gtk.Builder() path = os.path.join(self.ui_dir, "cnchi.ui") self.ui.add_from_file(path) self.add(self.ui.get_object("main")) self.header_ui = Gtk.Builder() path = os.path.join(self.ui_dir, "header.ui") self.header_ui.add_from_file(path) self.header = self.header_ui.get_object("header") self.logo = self.header_ui.get_object("logo") path = os.path.join(data_dir, "images", "antergos", "antergos-logo-mini2.png") self.logo.set_from_file(path) # To honor our css self.header.set_name("header") self.logo.set_name("logo") self.main_box = self.ui.get_object("main_box") # self.main_box.set_property('width_request', 800) self.progressbar = self.ui.get_object("main_progressbar") self.progressbar.set_name('process_progressbar') self.forward_button = self.header_ui.get_object("forward_button") self.backwards_button = self.header_ui.get_object("backwards_button") atk_set_image_description(self.forward_button, _("Next step")) atk_set_image_description(self.backwards_button, _("Previous step")) self.forward_button.set_name('fwd_btn') self.forward_button.set_always_show_image(True) self.backwards_button.set_name('bk_btn') self.backwards_button.set_always_show_image(True) # Create a queue. Will be used to report pacman messages (pacman/pac.py) # to the main thread (installation/process.py) self.callback_queue = multiprocessing.JoinableQueue() # This list will have all processes (rankmirrors, autotimezone...) self.process_list = [] # Save in config which download method we have to use if cmd_line.download_module: self.settings.set("download_module", cmd_line.download_module) else: # Use requests by default self.settings.set("download_module", 'requests') logging.info("Using %s to download packages", self.settings.get("download_module")) if cmd_line.packagelist: self.settings.set('alternate_package_list', cmd_line.packagelist) logging.info("Using '%s' file as package list", self.settings.get('alternate_package_list')) self.set_titlebar(self.header) # Prepare params dict to pass common parameters to all screens self.params = dict() self.params['main_window'] = self self.params['header'] = self.header self.params['ui_dir'] = self.ui_dir self.params['forward_button'] = self.forward_button self.params['backwards_button'] = self.backwards_button self.params['callback_queue'] = self.callback_queue self.params['settings'] = self.settings self.params['main_progressbar'] = self.progressbar self.params['process_list'] = self.process_list self.params['checks_are_optional'] = cmd_line.no_check self.params['disable_tryit'] = cmd_line.disable_tryit self.params['disable_rank_mirrors'] = cmd_line.disable_rank_mirrors self.params['testing'] = cmd_line.testing # Just load the first two screens (the other ones will be loaded later) # We do this so the user has not to wait for all the screens to be loaded self.pages = dict() self.pages["welcome"] = welcome.Welcome(self.params) if os.path.exists('/home/antergos/.config/openbox'): # In minimal iso, load language screen now self.pages["language"] = language.Language(self.params) # Fix bugy Gtk window size when using Openbox self.MAIN_WINDOW_WIDTH = 750 self.MAIN_WINDOW_HEIGHT = 450 self.connect('delete-event', self.on_exit_button_clicked) self.connect('key-release-event', self.check_escape) self.ui.connect_signals(self) self.header_ui.connect_signals(self) title = "Cnchi {0}".format(info.CNCHI_VERSION) self.set_title(title) self.header.set_title(title) self.header.set_subtitle(_("Antergos Installer")) self.header.set_show_close_button(True) self.set_geometry() # Set window icon icon_path = os.path.join(data_dir, "images", "antergos", "antergos-icon.png") self.set_icon_from_file(icon_path) # Set the first page to show # If minimal iso is detected, skip the welcome page. if os.path.exists('/home/antergos/.config/openbox'): self.current_page = self.pages["language"] self.settings.set('timezone_start', True) else: self.current_page = self.pages["welcome"] self.main_box.add(self.current_page) # Use our css file style_provider = Gtk.CssProvider() style_css = os.path.join(data_dir, "css", "gtk-style.css") with open(style_css, 'rb') as css: css_data = css.read() style_provider.load_from_data(css_data) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) # Show main window self.show_all() self.current_page.prepare('forwards') # Hide backwards button self.backwards_button.hide() self.progressbar.set_fraction(0) self.progressbar_step = 0 # Do not hide progress bar for minimal iso as it would break the widget alignment on language page. if not os.path.exists('/home/antergos/.config/openbox'): # Hide progress bar self.progressbar.hide() misc.gtk_refresh()