def set_arguments(self, args): if args is None: return if self.set_count(args.count): self.overrides['count'] = args.count if hasattr(args, 'args') and args.args: ref = core.list2cmdline(args.args) if self.set_ref(ref): self.overrides['ref'] = ref
def default_history_browser(): if utils.is_win32(): # On Windows, a sensible default is "python git-cola dag" # which is different than `gitk` below, but is preferred # because we don't have to guess paths. git_cola = sys.argv[0].replace("\\", '/') python = sys.executable.replace("\\", '/') argv = [python, git_cola, 'dag'] argv = core.prep_for_subprocess(argv) default = core.list2cmdline(argv) else: # The `gitk` script can be launched as-is on unix default = 'gitk' return default
def browse_callback(self): paths = QtGui.QFileDialog.getOpenFileNames(self, N_('Choose Path(s)')) if not paths: return filepaths = [] lenprefix = len(core.getcwd()) + 1 for path in paths: if not path.startswith(core.getcwd()): continue filepaths.append(path[lenprefix:]) query = core.list2cmdline(filepaths) self.query.setText(query) if query: self.search_callback()
def browse_callback(self): paths = QtGui.QFileDialog.getOpenFileNames(self, N_('Choose Path(s)')) if not paths: return filepaths = [] lenprefix = len(core.getcwd()) + 1 for path in map(lambda x: ustr(x), paths): if not path.startswith(core.getcwd()): continue filepaths.append(path[lenprefix:]) query = core.list2cmdline(filepaths) self.query.setText(query) if query: self.search_callback()
def choose_completion(self, completion): """ This is the event handler for the QCompleter.activated(QString) signal, it is called when the user selects an item in the completer popup. """ if not completion: self._do_text_changed('', '') return words = self._words() if words and not self._ends_with_whitespace(): words.pop() words.append(completion) text = core.list2cmdline(words) self.setText(text) self.emit(SIGNAL('changed()')) self._do_text_changed(text, '') self.popup().hide()
def mimedata_from_paths(paths): """Return mimedata with a list of absolute path URLs""" abspaths = [core.abspath(path) for path in paths] urls = [QtCore.QUrl.fromLocalFile(path) for path in abspaths] mimedata = QtCore.QMimeData() mimedata.setUrls(urls) # The text/x-moz-list format is always included by Qt, and doing # mimedata.removeFormat('text/x-moz-url') has no effect. # C.f. http://www.qtcentre.org/threads/44643-Dragging-text-uri-list-Qt-inserts-garbage # # gnome-terminal expects utf-16 encoded text, but other terminals, # e.g. terminator, prefer utf-8, so allow cola.dragencoding # to override the default. paths_text = core.list2cmdline(abspaths) encoding = gitcfg.current().get('cola.dragencoding', 'utf-16') moz_text = core.encode(paths_text, encoding=encoding) mimedata.setData('text/x-moz-url', moz_text) return mimedata
def cmd_grep(args): context = application_init(args) from cola.widgets import grep text = core.list2cmdline(args.args) view = grep.new_grep(text=text, parent=None) return application_start(context, view)
def cmd_find(args): context = application_init(args) from cola.widgets import finder paths = core.list2cmdline(args.paths) view = finder.finder(paths=paths) return application_start(context, view)
def cmd_diff(args): context = application_init(args) from cola.difftool import diff_expression expr = core.list2cmdline(args.args) view = diff_expression(None, expr, create_widget=True) return application_start(context, view)
def histories_selected(self, histories): argv = [self.model.currentbranch, '--'] argv.extend(histories) text = core.list2cmdline(argv) self.revtext.setText(text) self.display()
def run_command(cls, title, cmd): cls.log('$ ' + core.list2cmdline(cmd)) status, out, err = core.run_command(cmd) cls.log_status(status, out, err) return status, out, err
def execute(command, _cwd=None, _decode=True, _encoding=None, _raw=False, _stdin=None, _stderr=subprocess.PIPE, _stdout=subprocess.PIPE, _readonly=False): """ Execute a command and returns its output :param command: argument list to execute. :param _cwd: working directory, defaults to the current directory. :param _decode: whether to decode output, defaults to True. :param _encoding: default encoding, defaults to None (utf-8). :param _raw: do not strip trailing whitespace. :param _stdin: optional stdin filehandle. :returns (status, out, err): exit status, stdout, stderr """ # Allow the user to have the command executed in their working dir. if not _cwd: _cwd = core.getcwd() extra = {} if sys.platform == 'win32': # If git-cola is invoked on Windows using "start pythonw git-cola", # a console window will briefly flash on the screen each time # git-cola invokes git, which is very annoying. The code below # prevents this by ensuring that any window will be hidden. startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags = subprocess.STARTF_USESHOWWINDOW startupinfo.wShowWindow = subprocess.SW_HIDE extra['startupinfo'] = startupinfo if hasattr(os, 'setsid'): # SSH uses the SSH_ASKPASS variable only if the process is really # detached from the TTY (stdin redirection and setting the # SSH_ASKPASS environment variable is not enough). To detach a # process from the console it should fork and call os.setsid(). extra['preexec_fn'] = os.setsid # Start the process # Guard against thread-unsafe .git/index.lock files if not _readonly: INDEX_LOCK.acquire() status, out, err = core.run_command(command, cwd=_cwd, encoding=_encoding, stdin=_stdin, stdout=_stdout, stderr=_stderr, **extra) # Let the next thread in if not _readonly: INDEX_LOCK.release() if not _raw and out is not None: out = out.rstrip('\n') cola_trace = GIT_COLA_TRACE if cola_trace == 'trace': msg = 'trace: ' + core.list2cmdline(command) Interaction.log_status(status, msg, '') elif cola_trace == 'full': if out or err: core.stderr("%s -> %d: '%s' '%s'" % (' '.join(command), status, out, err)) else: core.stderr("%s -> %d" % (' '.join(command), status)) elif cola_trace: core.stderr(' '.join(command)) # Allow access to the command's status code return (status, out, err)