Skip to content

Commit

Permalink
Drop support for multiple window instances (see bug #6)
Browse files Browse the repository at this point in the history
  • Loading branch information
joansalasoler committed Aug 26, 2020
1 parent 06d2d48 commit d17b30b
Showing 1 changed file with 31 additions and 4 deletions.
35 changes: 31 additions & 4 deletions src/auale/auale.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class Auale(Gtk.Application):
__DISPLAY_NAME = 'Aualé'
__ID = 'com.joansala.auale'
__FLAGS = Gio.ApplicationFlags.HANDLES_OPEN
__MULTINSTANCE = False

def __init__(self):
super(Auale, self).__init__(application_id=self.__ID, flags=self.__FLAGS)
Expand Down Expand Up @@ -116,6 +117,18 @@ def setup_application_theme(self):
Gtk.StyleContext.add_provider_for_screen(screen, provider, priority)
provider.load_from_resource(f'{ base_path }/gtk/application.css')

def show_application_window(self, uri=None):
"""Adds or presents an application window"""

has_active_window = self.get_active_window()
allow_new_windows = self.__MULTINSTANCE

if allow_new_windows or not has_active_window:
window = self.add_application_window(uri)
return window.show_all()

self.present_application_window(uri)

def add_application_window(self, uri=None):
"""Adds a new application window"""

Expand All @@ -141,6 +154,22 @@ def add_application_window(self, uri=None):

return window

def present_application_window(self, uri=None):
"""Update and present the current application window"""

window = self.get_active_window()
command = self.get_engine_command()
immersive = self.get_immersive_mode()

if isinstance(uri, str) and uri:
window.set_match_from_uri(uri)

window.set_engine_command(command)
window.set_immersive_mode(immersive)
window.present()

return window

def connect_application_commands(self):
"""Registers the command line options"""

Expand Down Expand Up @@ -281,15 +310,13 @@ def on_quit_action_activate(self, action, value):
def on_new_action_activate(self, action, value):
"""Opens a new application window"""

window = self.add_application_window()
window.show_all()
self.show_application_window()

def on_open_action_activate(self, action, value):
"""Opens a file in a new application window"""

uri = value.get_string()
window = self.add_application_window(uri)
window.show_all()
self.show_application_window(uri)

def on_fullscreen_action_activate(self, action, value):
"""Sets the immersive mode for new windows"""
Expand Down

0 comments on commit d17b30b

Please sign in to comment.