# dupeGuru 4.0.4 documentation

## core.app

class core.app.DupeGuru(view)

  Holds everything together.

  Instantiated once per running application, it holds a reference to every high-level object whose reference needs to be held: `Results`, `Directories`, `core.gui` instances, etc..

  It also hosts high level methods and acts as a coordinator for all those elements. This is why some of its methods seem a bit shallow, like for example `mark_all()` and `remove_duplicates()`. These methos are just proxies for a method in `results`, but they are also followed by a notification call which is very important if we want GUI elements to be correctly notified of a change in the data they’re presenting.

  directories

    Instance of `Directories`. It holds the current folder selection.

  results

    Instance of `core.results.Results`. Holds the results of the latest scan.

  selected_dupes

    List of currently selected dupes from our `results`. Whenever the user changes its selection at the UI level, `result_table` takes care of updating this attribute, so you can trust that it’s always up-to-date.

  result_table

    Instance of `meta-gui` table listing the results from `results`

  add_directory(d)

    Adds folder `d` to `directories`.

    Shows an error message dialog if something bad happens.

    Parameters:

      d (str) – path of folder to add

  add_selected_to_ignore_list()

    Adds `selected_dupes` to `ignore_list`.

  apply_filter(filter)

    Apply a filter `filter` to the results so that it shows only dupe groups that match it.

    Parameters:

      filter (str) – filter to apply

  copy_or_move_marked(copy)

    Start an async move (or copy) job on marked duplicates.

    Parameters:

      copy (bool) – If True, duplicates will be copied instead of moved

  delete_marked()

    Start an async job to send marked duplicates to the trash.

  export_to_csv()

    Export current results to CSV.

    The columns and their order in the resulting CSV file is determined in the same way as in `export_to_xhtml()`.

  export_to_xhtml()

    Export current results to XHTML.

    The configuration of the `result_table` (columns order and visibility) is used to determine how the data is presented in the export. In other words, the exported table in the resulting XHTML will look just like the results table.

  invoke_custom_command()

    Calls command in `CustomCommand` pref with `%d` and `%r` placeholders replaced.

    Using the current selection, `%d` is replaced with the currently selected dupe and `%r` is replaced with that dupe’s ref file. If there’s no selection, the command is not invoked. If the dupe is a ref, `%d` and `%r` will be the same.

  load()

    Load directory selection and ignore list from files in appdata.

    This method is called during startup so that directory selection and ignore list, which is persistent data, is the same as when the last session was closed (when `save()` was called).

  load_from(filename)

    Start an async job to load results from `filename`.

    Parameters:

      filename (str) – path of the XML file (created with `save_as()`) to load

  make_selected_reference()

    Promote `selected_dupes` to reference position within their respective groups.

    Each selected dupe will become the `ref` of its group. If there’s more than one dupe selected for the same group, only the first (in the order currently shown in `result_table`) dupe will be promoted.

  mark_all()

    Set all dupes in the results as marked.

  mark_dupe(dupe, marked)

    Change marked status of `dupe`.

    Parameters:

      - dupe (`File`) – dupe to mark/unmark

      - marked (bool) – True = mark, False = unmark

  mark_invert()

    Invert the marked state of all dupes in the results.

  mark_none()

    Set all dupes in the results as unmarked.

  open_selected()

    Open `selected_dupes` with their associated application.

  purge_ignore_list()

    Remove files that don’t exist from `ignore_list`.

  remove_directories(indexes)

    Remove root directories at `indexes` from `directories`.

    Parameters:

      indexes (list of int) – Indexes of the directories to remove.

  remove_duplicates(duplicates)

    Remove `duplicates` from `results`.

    Calls `remove_duplicates()` and send appropriate notifications.

    Parameters:

      duplicates (list of `File`) – duplicates to remove.

  remove_marked()

    Removed marked duplicates from the results (without touching the files themselves).

  remove_selected()

    Removed `selected_dupes` from the results (without touching the files themselves).

  rename_selected(newname)

    Renames the selected dupes’s file to `newname`.

    If there’s more than one selected dupes, the first one is used.

    Parameters:

      newname (str) – The filename to rename the dupe’s file to.

  reprioritize_groups(sort_key)

    Sort dupes in each group (in `results`) according to `sort_key`.

    Called by the re-prioritize dialog. Calls `prioritize()` and, once the sorting is done, show a message that confirms the action.

    Parameters:

      sort_key (f(dupe)) – The key being sent to `prioritize()`

  save_as(filename)

    Save results in `filename`.

    Parameters:

      filename (str) – path of the file to save results (as XML) to.

  start_scanning()

    Starts an async job to scan for duplicates.

    Scans folders selected in `directories` and put the results in `results`

  without_ref(dupes)

    Returns `dupes` with all reference elements removed.