def remove(self, treeview_item: TreeViewItem = None):
        '''
        Removes the given treeview_item and all its children from the TreeViewControl.
        If treeview_item == None, then the whole TreeViewControl will be cleared.
        :param treeview_item: TreeViewItem to be deleted form tree.
        '''
        log_enter_func('TreeViewControl', 'remove',
                       {'treeview_item': treeview_item})

        if treeview_item == None:
            # Clear the whole tree
            self.__treeview.delete(*self.__treeview_id_dict.keys())
            self.__added_treeview_items.clear()
            self.__treeview_id_dict.clear()
            self.__parentless_items.clear()

        else:
            #Remove the given item and its children from the tree.
            for child in self.__find_children(treeview_item.parent_id):
                self.remove(child)

            treeview_id = self.__get_treeview_id(treeview_item.id)

            self.__treeview.delete(treeview_id)
            self.__added_treeview_items.remove(treeview_item)
            del self.__treeview_id_dict[treeview_id]
            self.__parentless_items.remove(treeview_item)

        log_leave_func('TreeViewControl', 'remove')
Exemple #2
0
    def __init__(self, master: tk.Frame):
        '''
        Constructor

        '''
        log_enter_func('OverviewControl', '__init__', {'master': master})

        self.__overview = Treeview(master=master, selectmode='browse')
        self.__overview.heading('#0', text='Overview', anchor=tk.W)
        self.__overview.pack(fill=tk.Y, side=tk.LEFT)
        self.__overview.bind('<<TreeviewSelect>>', self.__notifiy_observer)

        self.__overview.insert('', 0, self.__root_id, text='Pages')
        self.__overview.item(self.__root_id, open=True)

        self.__overview.insert('', 1, 'css_rules', text='CSS Rules')
        self.__overview.item('css_rules', open=True)

        self.__overview.insert('', 2, 'javascripts', text='JavaScripts')
        self.__overview.item('javascripts', open=True)

        self.__overview.insert('', 3, 'text', text='Text')
        self.__overview.item('text', open=True)

        self.__overview.insert('', 4, 'variables', text='Variables')
        self.__overview.item('variables', open=True)

        log_leave_func('OverviewControl', '__init__')
 def __update_title(self):
     log_enter_func('MainWindowCNTLR', '__update_title')
     
     self.__root.title(' - '.join([self.__base_title,
                                   self.__model.get_project_name()]))
     
     log_leave_func('MainWindowCNTLR', '__update_title')
    def __validate_input(self):
        '''
        Set the treview_state to TreeViewState.OK.
        Checks if the parent id of the __current_treeview_item is set and if so it searches
        for the parent in the __added_treeview_items array. If it finds the item the treeview_state remains unchanged.
        If the parent couldn't be found the treeview_state will be changed to TreeViewState.PARENT_NOT_EXISTS.
        If the parent id of the __current_treeview_item is not set the __treeview_state is set to TreeViewState.NO_PARENT.
        '''
        log_enter_func('TreeViewControl', '__validate_input')

        self.__treeview_state = TreeViewState.OK

        if not self.__current_treeview_item.parent_id == None:

            parent_item = self.__search_parent()

            if parent_item == None:
                self.__treeview_state = TreeViewState.PARENT_NOT_EXISTS

        else:
            self.__treeview_state = TreeViewState.NO_PARENT

        log_set_var('TreeViewControl', '__validate_input', '__treeview_state',
                    self.__treeview_state)

        log_leave_func('TreeViewControl', '__validate_input')
Exemple #5
0
    def __on_collection_select(self, event):  # @UnusedVariable
        '''
        '''

        log_enter_func('SelectText', '__on_collection_select',
                       {'event': event})

        self.__selected_txt_item_var.set('')
        selected_collection = self.__selected_txt_coll_var.get()

        log_set_var('SelectText', '__on_collection_select',
                    'selected_collection', selected_collection)

        self.__text_items_opm['menu'].delete(0, 'end')

        for _tuple in self.__text_elements:
            if _tuple[0] == selected_collection:

                log_set_var('SelectText', '__on_collection_select',
                            'adding _tuple', _tuple)

                self.__text_items_opm['menu'].add_command(
                    label=_tuple[1],
                    command=tk._setit(self.__selected_txt_item_var, _tuple[1]))

        log_leave_func('SelectText', '__on_collection_select')
Exemple #6
0
    def __init__(self,
                 text_elements,
                 observer: ABSTextDialogObserver,
                 master=None):
        '''
        Constructor
        '''

        log_enter_func('SelectText', '__init__', {
            'text_elements': text_elements,
            'observer': observer,
            'master': master
        })

        self.__text_elements = text_elements
        self.__observer = observer

        self.__selected_txt_coll_var = tk.StringVar()
        self.__selected_txt_item_var = tk.StringVar()

        self.__text_collections = []
        for _tuple in self.__text_elements:
            if not _tuple[0] in self.__text_collections:
                self.__text_collections.append(_tuple[0])

        log_set_var('SelectText', '__init__', '__text_collections',
                    self.__text_collections)

        self.__text_items = ['']
        self.__text_select_dialog(master)

        log_leave_func('SelectText', '__init__')
Exemple #7
0
    def __on_ok(self):

        log_enter_func('CreateCssRuleSet', '__on_ok')

        selector_type = self.__selector_type_var.get()
        log_set_var('CreateCssRuleSet', '__on_ok', 'selector_type',
                    selector_type)

        is_compound = self.__is_compound(selector_type)
        log_set_var('CreateCssRuleSet', '__on_ok', 'is_compound', is_compound)

        if not self.__check_user_input(is_compound):

            log_error('CreateCssRuleSet', '__on_ok', 'user input check failed')
            log_leave_func('CreateCssRuleSet', '__on_ok')

            return

        selector_element = self.__get_selector_element(selector_type)
        log_set_var('CreateCssRuleSet', '__on_ok', 'selector_element',
                    selector_element)

        selector_specifier = self.__get_selector_specifier(
            selector_type, is_compound)
        log_set_var('CreateCssRuleSet', '__on_ok', 'selector_specifier',
                    selector_specifier)

        self.__dialog.destroy()

        self.__observer.on_create_css_rule_set_closed(
            (self.__SELECTOR_TYPE_MAP[selector_type], selector_element,
             selector_specifier, is_compound,
             self.__SELECTOR_TYPE_SEP.get(selector_type)))

        log_leave_func('CreateCssRuleSet', '__on_ok')
    def __init__(self):
        '''
        '''
        log_enter_func('TreeViewConfiguration', '__init__')

        self.__column_count: int = 0
        self.__column_names: str = []
Exemple #9
0
    def __remove(self, tag_id):

        log_enter_func('OverviewControl', '__remove', {'tag_id': tag_id})

        self.__overview.delete(tag_id)

        log_leave_func('OverviewControl', '__remove')
    def __init__(self,
                 master: tk.Frame,
                 treeview_config: TreeViewConfiguration = None):
        '''
        
        :param tree_config: TreeViewConfiguration
        '''
        log_enter_func('TreeViewControl', '__init__', {
            'master': master,
            'tree_config': treeview_config
        })

        #Contains all TreeViewItems added to the TreeView
        self.__added_treeview_items = []
        #Is the item which is currently about to be added to the tree.
        self.__current_treeview_item = None
        #Contains the error message if the state is set to ERROR.
        #This is optional! It is not said that there is an message if an error occurs.
        self.__error_message = None
        #State of the TreeViewControl
        self.__treeview_state = TreeViewState.OK
        #Contains all registered observers.
        self.__observers = []
        #This array contains all TreeViewItem for which the parent element was not added
        #at the time as they were added.
        self.__parentless_items = []
        #UI Treeview element.
        self.__treeview = None
        #Contains the mapping of the treeview_id and the corresponding TreeViewItem.
        self.__treeview_id_dict = {}
        #build the treeview
        self.__build_tree(master, treeview_config)

        log_leave_func('TreeViewControl', '__init__')
 def on_new(self, event:Event) -> None:
     '''
     '''
     log_enter_func('MainWindowCNTLR', 'on_new', {'event':event})
     
     log_set_var('MainWindowCNTLR', 'on_new', 'event.event_source', event.event_source)
     
     if event.event_source == MainWindowMenuKeys.KEY_PROJECT:
         
         if self.__model.is_project_open() \
             and not self.__check_and_save_changes():
             # user has cancelled the process
             return
         
         self.__model.create_new_project()
         
     elif event.event_source == MainWindowMenuKeys.KEY_HTML_PAGE:
         self.__model.create_page()
         self.__load_data_in_view()
     elif event.event_source == MainWindowMenuKeys.KEY_CSS_RULE:
         self.__model.create_css_rule()
         self.__load_data_in_view()
     elif event.event_source == MainWindowMenuKeys.KEY_JAVASCRIPT:
         self.__model.create_javascript()
         self.__load_data_in_view()
     elif event.event_source == MainWindowMenuKeys.KEY_TEXT:
         self.__model.create_text()
         self.__load_data_in_view()
     elif event.event_source == MainWindowMenuKeys.KEY_VARIABLE:
         self.__model.create_variable()
         self.__load_data_in_view()
     
     log_leave_func('MainWindowCNTLR', 'on_new') 
 def __init__(self):
     '''
     Constructor
     '''
     log_enter_func('MainWindowCNTLR', '__init__')
     
     
     self.__overview = OverviewControl(self.__gui.get_page_overview_frame())
     self.__overview.add_obeserver(self)
     
     self.__configuration = ConfigurationControl(self.__gui.get_page_config_frame())
     self.__configuration.add_obeserver(self)
     
     treeview_conf = TreeViewConfiguration()
     treeview_conf.column_count = 2
     treeview_conf.add_column_name('Property', 0)
     treeview_conf.add_column_name('Value', 1)
             
     log_set_var('MainWindowCNTLR', '__init__', 'treeview_conf', treeview_conf)
     
     self.__properties = TreeViewControl(self.__gui.get_attributes_frame(), treeview_conf)
     self.__properties.add_observer(self)
     
     self.__model.add_observer(self)
     
     log_leave_func('MainWindowCNTLR', '__init__')
Exemple #13
0
    def __check_user_input(self, is_compound):

        log_enter_func('CreateCssRuleSet', '__check_user_input',
                       {'is_compound': is_compound})

        user_input_ok = True

        if self.__selector_var.get() == '':

            log_error('CreateCssRuleSet', '__check_user_input',
                      'Selector not set!', None)

            messagebox.showerror('Input Error', 'Selector not set!')

            user_input_ok = False

        if is_compound and self.__selector_sec_part_var.get() == '':

            log_error('CreateCssRuleSet', '__check_user_input',
                      'Selector second part not set!', None)

            user_input_ok = False

        log_leave_func('CreateCssRuleSet', '__check_user_input', user_input_ok)

        return user_input_ok
Exemple #14
0
    def __css_dialog(self, master):
        '''
        '''

        log_enter_func('CreateCssRuleSet', '__css_dialog', {'master': master})

        self.__dialog = tk.Toplevel(master)
        self.__dialog.title('Create New CSS Rule Set')
        self.__top_frame = tk.Frame(self.__dialog)
        self.__top_frame.pack(fill=tk.BOTH,
                              side=tk.TOP,
                              expand=True,
                              padx=10,
                              pady=10)

        log_msg('CreateCssRuleSet', '__css_dialog',
                'topLevel and main frame created')

        tk.Label(self.__top_frame, text='Selector Type:',
                 anchor=tk.W).grid(row=0, column=0, padx=10, sticky=tk.W)
        tk.OptionMenu(self.__top_frame,
                      self.__selector_type_var,
                      *CreateCssRuleSet.__selectors,
                      command=self.__on_selector_type_selected).grid(
                          row=0, column=1, columnspan=3, sticky=tk.EW, padx=10)

        log_msg('CreateCssRuleSet', '__css_dialog',
                'selector type selection created')

        selector_frame = tk.Frame(self.__top_frame)
        selector_frame.grid(row=1,
                            column=0,
                            columnspan=2,
                            padx=10,
                            sticky=tk.W)

        tk.Label(selector_frame, text='Selector:',
                 anchor=tk.W).grid(row=0, column=0, padx=10, sticky=tk.W)
        selector_entry = tk.Entry(selector_frame,
                                  textvariable=self.__selector_var)
        selector_entry.grid(row=0, column=1, columnspan=1, sticky=tk.W, padx=0)

        self.__selector_part_2_lbl = tk.Label(selector_frame,
                                              text='#',
                                              anchor=tk.W)
        self.__selector_part_2_entry = tk.Entry(
            selector_frame, textvariable=self.__selector_sec_part_var)

        log_msg('CreateCssRuleSet', '__css_dialog', 'selector input created')

        buttons_frame = tk.Frame(self.__dialog)
        buttons_frame.pack(fill=tk.X, side=tk.BOTTOM, padx=20)

        tk.Button(buttons_frame, text='Ok',
                  command=self.__on_ok).pack(side=tk.LEFT, padx=1)
        tk.Button(buttons_frame, text='Cancel',
                  command=self.__on_cancel).pack(side=tk.LEFT, padx=1)

        log_leave_func('CreateCssRuleSet', '__css_dialog')
Exemple #15
0
    def remove_observer(self, observer: OverviewControlObserver):

        log_enter_func('OverviewControl', 'remove_observer',
                       {'observer': observer})

        self.__observers.remove(observer)

        log_leave_func('OverviewControl', 'remove_observer')
Exemple #16
0
    def __on_cancel(self):

        log_enter_func('CreateCssRuleSet', '__on_cancel')

        self.__dialog.destroy()
        self.__observer.on_create_css_rule_set_closed()

        log_leave_func('CreateCssRuleSet', '__on_cancel')
Exemple #17
0
    def __remove(self, conf_id):

        log_enter_func('ConfigurationControl', '__remove',
                       {'conf_id': conf_id})

        self.__configuration.delete(conf_id)

        log_leave_func('ConfigurationControl', '__remove')
Exemple #18
0
    def remove_observer(self, observer: ConfigurationControlObserver):

        log_enter_func('ConfigurationControl', 'remove_observer',
                       {'observer': observer})

        self.__observers.remove(observer)

        log_leave_func('ConfigurationControl', 'remove_observer')
Exemple #19
0
    def add_obeserver(self, observer: ConfigurationControlObserver):

        log_enter_func('ConfigurationControl', 'add_obeserver',
                       {'observer': observer})

        self.__observers.append(observer)

        log_leave_func('ConfigurationControl', 'add_obeserver')
Exemple #20
0
 def __on_cancel(self):
     
     log_enter_func('CreateTagDialog', '__on_cancel')
     
     self.__dialog.destroy()
     self.__observer.on_create_tag_closed()
     
     log_leave_func('CreateTagDialog', '__on_cancel')
Exemple #21
0
    def remove_page(self, page_id: str):

        log_enter_func('OverviewControl', 'remove_page', {'page_id': page_id})

        self.__remove(page_id)
        self.__inserted.remove(page_id)

        log_leave_func('OverviewControl', 'remove_page')
Exemple #22
0
    def __on_cancel(self):

        log_enter_func('SelectText', '__on_cancel')

        self.__dialog.destroy()
        self.__observer.on_text_selected()

        log_leave_func('SelectText', '__on_cancel')
Exemple #23
0
    def add_obeserver(self, observer: OverviewControlObserver):

        log_enter_func('OverviewControl', 'add_obeserver',
                       {'observer': observer})

        self.__observers.append(observer)

        log_leave_func('OverviewControl', 'add_obeserver')
 def on_double_click(self, item:TreeViewItem)->None:
     
     log_enter_func('MainWindowCNTLR', 'on_double_click', {'item':item})
     
     if not item == None:
         self.__model.set_property(item.id)
 
     log_leave_func('MainWindowCNTLR', 'on_double_click')
 def __load_properties(self):
     
     log_enter_func('MainWindowCNTLR', '__load_properties')
     
     for treeview_item in self.__model.get_sub_data():
         self.__properties.insert(treeview_item)    
         
     log_leave_func('MainWindowCNTLR', '__load_properties')    
    def clear_observers(self) -> None:
        '''
        Removes all registered observers.
        '''
        log_enter_func('TreeViewControl', 'clear_observers')

        self.__observers.clear()

        log_leave_func('TreeViewControl', 'clear_observers')
Exemple #27
0
    def select(self, page_id: str):

        log_enter_func('OverviewControl', 'select', {'page_id': page_id})

        if not page_id == None:
            self.__overview.focus(page_id)
            self.__overview.selection_set(page_id)

        log_leave_func('OverviewControl', 'select')
Exemple #28
0
    def select(self, _id: str):

        log_enter_func('ConfigurationControl', 'select', {'_id': _id})

        if not _id == None:
            self.__configuration.focus(_id)
            self.__configuration.selection_set(_id)

        log_leave_func('ConfigurationControl', 'select')
Exemple #29
0
    def unregister_observer(self):
        '''
        '''

        log_enter_func('SelectText', 'unregister_observer')

        del self.__observer

        log_leave_func('SelectText', 'unregister_observer')
 def __load_data_in_view(self):
     log_enter_func('MainWindowCNTLR', '__load_data_in_view')
     
     self.__update_title()
     self.__load_page_config()
     self.__load_page_overview()
     self.__configuration.select(self.__model.selected_sub())
     
     log_leave_func('MainWindowCNTLR', '__load_data_in_view')